FR 2845220 A1 20040402 FR 0212069 A 20020930 La présente invention concerne les systèmes de communication dans lesquels, afin d'améliorer la fidélité de la transmission, les données à transmettre sont soumises à un codage de canal. Elle concerne plus particulièrement un procédé de décodage, ainsi que les dispositifs et appareils destinés à mettre en oeuvre ce procédé. On rappelle que le codage dit " de canal " consiste, quand on forme les " mots de code " envoyés au récepteur, à introduire une certaine redondance dans les données à transmettre. Plus précisément, on transmet, au moyen de chaque mot de code, un nombre prédéterminé k de symboles 10 d'information choisis au sein d'un " alphabet " prédéterminé de taille finie q; on ajoute à ces k symboles d'information un nombre (n-k) de symboles dits de " parité ", prélevés dans le même alphabet, de manière à former des mots de code c = (c1,c2,...,Cn) de longueur n; l'ensemble des règles de calcul des symboles de parité en fonction des symboles d'information définit un " code ", 15 ou " procédé de codage ", de " dimension " k et de " longueur " n, ainsi caractérisé par un certain ensemble de mots de code constituant une sorte de dictionnaire. On peut, de façon commode, définir un code au moyen d'une matrice H, de dimension (n-k) x n, dite " matrice de parité ": un mot c de longueur n donné est un mot de code si, et seulement s'il vérifie la relation 20 H CT= O (o l'exposant T indique la transposition). Au niveau du récepteur, le procédé de décodage associé exploite alors judicieusement cette redondance pour détecter d'éventuelles erreurs de transmission et si possible les corriger. Il y a erreur de transmission si la différence e entre un mot reçu r, et le mot de code c correspondant envoyé par 25 l'émetteur, est non-nulle. Plus précisément, le décodage se fait en deux étapes principales. La première étape consiste à associer au mot reçu un " mot de code associé ". Pour ce faire, le décodeur calcule d'abord le " syndrome d'erreur " s = H. rT = H. eT. Si le syndrome est nul, on supposera qu'il n'y a pas eu 30 d'erreur de transmission, et le " mot de code associé " sera alors simplement pris égal au mot reçu. Si ce n'est pas le cas, on en déduit que certains symboles dans le mot reçu sont erronés, et l'on met alors en oeuvre un algorithme de correction destiné à estimer la valeur de l'erreur e; l'algorithme va ainsi fournir une valeur estimée ê de manière à ce que (r- ê) soit un mot de code, qui constituera alors le " mot de code associé ". La seconde étape consiste simplement à inverser le procédé de 5 codage, c'est-à-dire à retirer les symboles de redondance du " mot de code associé " pour retrouver les symboles d'information initiaux. L'invention concerne plus particulièrement la première de ces deux étapes, et les conditions de mise en oeuvre de l'algorithme de correction. Un algorithme de correction a pour tâche d'associer au mot reçu le 10 mot de code situé à la distance de Hamming la plus courte de ce mot reçu, la " distance de Hamming " étant, par définition, le nombre d'emplacements o deux mots de même longueur possèdent un symbole différent. Chaque code offre donc une capacité de correction d'erreurs qui est limitée par la distance de Hamming la plus petite entre deux mots quelconques de ce code, que l'on 15 appelle la " distance minimale " du code d; plus précisément, quand l'algorithme de correction choisi est chargé de trouver la position des erreurs éventuelles dans un mot reçu quelconque, et de fournir un symbole de remplacement pour chacune de ces positions, on est sr de pouvoir corriger au mieux INT[(d-1)/2] erreurs pour un code de distance minimale d (" INT " 20 désigne la partie entière). Si le mot reçu contient un nombre d'erreurs strictement supérieur à INT[(d-1)/2], l'algorithme sera dans certains cas capable de proposer une correction, mais il sera alors évidemment très douteux que cette correction soit la bonne, c'est-à-dire que le mot de code associé soit bien le mot de code envoyé par l'émetteur. La capacité d'un algorithme de correction à pouvoir proposer une correction d'un mot reçu est fidèlement représentée par la formule 2t A Parmi les procédés de codage connus, on peut citer les " codes de ReedSolomon ", qui sont réputés pour leur efficacité. Ces codes, toutefois, présentent la particularité que la longueur n des mots de code est 15 nécessairement inférieure ou égale à la taille q de l'alphabet des symboles. De ce fait, si l'on souhaite disposer d'un code de Reed-Solomon ayant des mots de code de grande longueur, on doit envisager de larges valeurs de q, ce qui conduit à des mises en oeuvre coteuses au niveau des calculs et de la mémorisation. De plus, de larges valeurs de q sont parfois inadaptées à 20 l'application technique envisagée. Or dans les supports d'information modernes, par exemple dans les enregistrements de CD (" compacts discs ") et de DVD (" digital video discs "), on cherche à accroître la densité d'information. Quand un tel support est affecté par un défaut physique tel qu'une éraflure, un nombre important de symboles 25 d'information peuvent être rendus illisibles. On peut toutefois remédier à ce problème en utilisant des mots de code de très grande longueur. C'est pourquoi l'on a cherché à construire des codes offrant de manière naturelle une plus grande longueur de mots que les codes de Reed-Solomon. On a notamment proposé récemment des codes dits " codes de 30 géométrie algébrique " ou " codes de Goppa géométriques " (voir par exemple " Algebraic Geometric Codes ", par J.H. van Lint, dans " Coding Theory and Design Theory ", lère partie, IMA Volumes Math. Appt., volume 21, Springer- Verlag, Berlin, 1990). Ces codes sont construits à partir de courbes algébriques définies sur un alphabet à q éléments structuré en corps de Galois. Un paramètre important d'une telle courbe est son " genre " g. Dans le cas particulier o la courbe est une simple droite (le genre g est alors nul), le code 5 de géométrie algébrique se réduit à un code de Reed-Solomon. Dans certains cas, les codes de géométrie algébrique permettent d'atteindre une longueur égale à (q+2g q/), qui peut être très élevée; par exemple, avec une taille d'alphabet égale à 256 et un genre égal à 120, on obtient des mots de code de longueur 4096. Les codes de géométrie algébrique sont, comme on l'a dit, avantageux quant à la longueur des mots de code, mais ils présentent l'inconvénient de requérir (en tous cas dans l'état actuel des connaissances) des algorithmes de décodage assez complexes, et donc assez coteux en termes d'équipements (logiciel et/ou matériel) et de temps de traitement. Cette 15 complexité est en fait plus ou moins grande selon l'algorithme considéré, une plus grande complexité étant en principe le prix à payer pour accroître la capacité de correction d'erreurs du décodeur (voir par exemple l'article de Tom H0holdt et Ruud Pellikaan intitulé " On the Decoding of Algebraic-Geometric Codes ", IEEE Trans. lnform. Theory, vol. 41 n0 6, pages 1589 à 1614, 20 novembre 1995). Il est à noter que pour ces algorithmes, on ne dispose que d'une borne inférieure de leur pouvoir de résolution A, sauf dans le cas " trivial " de l'algorithme maximal de correction des codes de Reed-Solomon (appelé " algorithme de Berlekamp-Massey "), pour lequel le pouvoir de résolution est 25 précisément connu et vaut A = n - k. Une généralisation de cet algorithme aux codes de géométrie algébrique de genre non-nul, appelée algorithme " de base " a été proposée par A.N. Skorobogatov et S.G. Vlâdut dans l'article intitulé " On the Decoding of Algebraic-Geometric codes ", IEEE Trans. Inform. Theory, vol. 36 n0 5, pages 1051 à 1060, novembre 1990); cet algorithme offre 30 un pouvoir de résolution au moins égal à A = n - k - 2g. Or la distance minimale d pour un code de géométrie algébrique est au moins égale à (n-k +1-g). Il est donc clair que l'algorithme de base est " sub-maximal ", et cela d'autant plus que le genre g de la courbe algébrique est grand. Dans le but d'améliorer le pouvoir de résolution, Skorobogatov et Vlâdut ont proposé, dans le même article cité ci-dessus, une version " modifiée " de l'algorithme " de base ". Cet algorithme " modifié " présente 5 un pouvoir de résolution au moins égal à A=n-k-g-s, o s est un paramètre dépendant de la courbe algébrique choisie, et pouvant d'ailleurs être quelquefois nul (c'est par exemple le cas pour les courbes algébriques dites " hyperelliptiques "). L'algorithme de base procède essentiellement en trois étapes 1) on construit une " matrice des syndromes " S, de dimension (n-k) x (n-k), dont chaque coefficient Sd, o j est inférieur ou égal à une valeur " frontière " w(), est égal à une combinaison linéaire judicieusement choisie des éléments sv (v =1,2,...,n-k) du syndrome s, les coefficients Sqj au-delà de la frontière restant indéterminés, 2) on identifie la position des erreurs dans le mot reçu, en résolvant un certain nombre d'équations linéaires dont les coefficients sont pris dans la matrice des syndromes S, et 3) on corrige les symboles erronés du mot reçu dont on connaît dès lors la position. La modification introduite par l'algorithme de base modifié consiste en un nouveau mode opératoire pour la deuxième étape de l'algorithme. Plus précisément, on considère, pour tout entier Ft compris entre 1 et (n-k), le système d'équations linéaires Z4iSij =0, pourj= 1,2,...,w(pt), (1) i=l o les valeurs des inconnues li sont à trouver dans le même alphabet de symboles que les éléments des mots de code. On recherche alors un entier Xo, qui est la plus petite valeur de Mt pour laquelle un tel système possède une solution non-triviale, c'est-à-dire une solution o les coefficients li ne sont pas tous nuls. Skorobogatov et Vlâdut enseignent donc de considérer successivement, et de manière indépendante, des sous-matrices de S de dimension jt x w(lt), d'abord pour l égal à 1, puis pour pi égal à 2, et ainsi de suite, jusqu'à en trouver une dont les lignes sont linéairement dépendantes. Or une question importante sur le plan pratique et que l'on doit se poser à propos de n'importe quel algorithme de calcul, est celle de sa complexité, c'est-à-dire du nombre d'opérations arithmétiques qu'il requiert. On peut montrer que la résolution de l'algorithme de base modifié, tel que décrit succinctement ci-dessus, requiert de l'ordre de n4 opérations arithmétiques 10 (dans l'alphabet des symboles), o n est, on le rappelle, la longueur des mots de code. Or la complexité de l'algorithme de base n'est que de l'ordre de n3. Ainsi donc, l'augmentation du pouvoir de résolution selon cette approche s'est faite au prix d'une augmentation de la complexité. La présente invention a notamment pour but de trouver un 15 algorithme de décodage qui ait un pouvoir de résolution au moins égal à celui de l'algorithme de base modifié pour le même code, mais dont la complexité soit aussi faible que possible, et croissant au plus comme n3. L'article de l.M. Duursma intitulé " Algebraic Decoding using Special Divisors " (IEEE Transactions on Information Theory, vol. 39, n0 2, pages 694 à 20 698, 1993) propose un perfectionnement (appelé " algorithme modifié étendu " par l'auteur) de l'algorithme de base modifié, destiné à en réduire la complexité. Duursma montre qu'il peut exister en général plusieurs valeurs de pt pour lesquelles le système (1) possède une solution non-triviale, et pour lesquelles l'algorithme de décodage complet a le même pouvoir de résolution que 25 l'algorithme de base modifié. Nous appellerons " dimension résolvante " X toute valeur de lt ayant cette propriété, de sorte que la valeur Do mentionnée cidessus est redéfinie comme étant la plus petite de ces dimensions résolvantes. De plus, il ressort de l'article cité qu'il existe au moins une dimension résolvante dont la valeur est supérieure ou égale à un certain entier, que nous désignerons 30 par le " minimum de Duursma " It[D (pour la méthode de calcul de ptD, on pourra se référer à cet article). Nous désignerons par " dimension étendue " XD la plus petite de ces dimensions résolvantes supérieures ou égales à LD (ID pouvant d'ailleurs le cas échéant être égale à la plus petite dimension résolvante Xo). Par conséquent, selon l'algorithme modifié étendu, on cherche à résoudre le système (1) en considérant, comme dans l'algorithme de base 5 modifié, des valeurs successives de çi, mais en commençant cette recherche à k = J1D. La complexité de l'algorithme modifié étendu croît comme gn3; or, de manière générale, les genres g des courbes algébriques utilisées pour le codage peuvent être de grands nombres: en effet, pour pouvoir construire des codes dont la longueur est de plus en plus grande, on est souvent amené à 10 utiliser des courbes algébriques dont les genres sont de plus en plus grands. Des algorithmes de décodage des codes de géométrie algébrique dont la complexité croît comme n3 ont été proposés en utilisant une approche différente de celle de l'algorithme modifié. L'article de G.-L. Feng et T.R.N. Rao intitulé " Decoding Algebraic15 Geometric Codes up to the Designed Minimum Distance " (IEEE Transactions on Information Theory, vol. 39, n0 1, janvier 1993) divulgue un tel algorithme. Dans celui-ci, on résout le système d'équations linéaires de l'algorithme de base (voir étape 2) ci-dessus), après avoir déterminé selon une certaine règle les éléments a priori inconnus de la matrice des syndromes (voir étape 1) ci20 dessus). Mais le calcul de ces éléments complémentaires de la matrice S est compliqué, et par conséquent, même si la complexité de cet algorithme croît comme n3, le nombre d'opérations effectif (égal à C-n3, o C est une constante de valeur élevée) est très grand. L'article de R. Kôtter intitulé " Fast Generalized Minimum-Distance 25 Decoding of Algebraic-Geometry and Reed-Solomon Codes " (IEEE Transactions on Information Theory, vol. 42, no 3, mai 1996) divulgue lui aussi un tel algorithme. Dans celui-ci, on recherche la solution de tous les systèmes d'équations linéaires conformes à l'algorithme de base, alors qu'un seul suffirait. Il en résulte ici aussi une complexité égale à C' n3, o C' est une 30 constante de valeur élevée. Or les auteurs de la présente invention ont découvert que, contrairement à ce que l'on pouvait penser de prime abord, il est en fait possible -- du moins en ce qui concerne les codes de géométrie algébrique dits " à un point " -- de définir un algorithme de décodage ayant une complexité proportionnelle à n3, avec une constante de proportionnalité de l'ordre de 1, en conservant la philosophie générale, et le pouvoir de résolution, de l'algorithme 5 de base modifié de Skorobogatov et Vlâdut (pour une définition des codes de géométrie algébrique " à un point ", on pourra consulter par exemple l'article de Tom H0holdt et Ruud Pellikaan cité cidessus). L'invention le démontre en proposant un algorithme o les calculs sont organisés de manière judicieuse dans ce but. Plus précisément, l'invention enseigne comment il est possible, 10 quand on cherche à résoudre le système d'équations (1) pour une valeur lio donnée de pt, de prendre en compte certaines informations résultant des tentatives infructueuses de résolution du système (1) pour les valeurs de pt inférieures à Hto (sauf pour Hto = 1); en exploitant ces informations, l'invention permet de réduire considérablement la complexité des calculs requis lors de la 15 tentative de résolution pour la valeur l'o. L'invention concerne donc, selon un premier aspect, un procédé de décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n- k) x (n-k), dont les 20 éléments Sj de chaque ligne i sont calculés, pour j compris entre 1 et w(J), o la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit procédé étant remarquable en ce qu'il comporte des étapes numérotées u de construction de matrices, au cours desquelles l'on construit des matrices Su en commençant par S1 = S, en ce que chaque matrice Su pour u > 1 est obtenue à 25 partir de la matrice Su1 en effectuant: - le cas échéant des permutations sur les colonnes de la matrice S"1, puis - des manipulations linéaires sur la ligne d'indice u de la matrice ainsi obtenue, et en ce que la construction de matrices s'arrête lorsque: 30 - soit Su j = 0 pour toutj compris entre 1 et w(u), soit il existe un entier u* s (u-1) tel que S'uu*j = 0 pour toutj compris entre 1 et w(u). Par " manipulation linéaire " sur les lignes, on entend les remplacements d'une ligne par une combinaison linéaire de celle-ci avec une ou plusieurs autres lignes. Le principe général du procédé selon l'invention s'inspire de 5 l'algorithme dit du " pivot de Gauss ", en prenant bien soin de n'opérer que sur les éléments connus de la matrice S, c'est-à-dire ceux situés en deçà de la " frontière " représentée par la fonction w. Comme décrit en détail ci-dessous, cette approche fournit les coefficients li associés à une dimension résolvante X avec une complexité du calcul qui n'est que de l'ordre de n3. Naturellement, le procédé selon la présente invention permet également de déterminer des valeurs de dimensions résolvantes. L'invention concerne donc aussi, selon le même premier aspect, un procédé de décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit 15 la matrice des syndromes S, de dimension (n-k) x (n-k), dont les éléments Sqj de chaque ligne i sont calculés, pour j compris entre 1 et w(J), o la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit procédé étant remarquable en ce qu'il comporte des étapes numérotées u de construction de matrices, au cours desquelles l'on construit des matrices Su' en 20 commençant par S1 = S, en ce que chaque matrice Su pour u > 1 est obtenue à partir de la matrice Su-1 en effectuant: - le cas échéant des permutations sur les colonnes de la matrice S"-1, puis - des manipulations linéaires sur la ligne d'indice u de la matrice ainsi obtenue, et en ce que la dernière étape est: - soit l'étape de numéro u = Y, si l'on détermine un entier X tel que S- "j = O pour toutj compris entre 1 et w(X), - soit l'étape de numéro u = (2 -1), si l'on détermine un entier X et un entier u*, avec u* Comme on le voit, la prise en compte de la " frontière " w joue un rôle central dans l'invention. Une propriété notable des codes de géométrie algébrique est que la fonction w est toujours décroissante (au sens large) quand la matrice de parité H est construite de façon canonique (si ce n'est pas le cas, il suffira de réarranger en conséquence l'ordre des lignes de la matrice S avant de mettre en oeuvre le procédé de décodage selon l'invention). Soit donc umax l'indice de la première ligne pour laquelle w(umax) est inférieur à umax. Le système (1) 5 pour 1t - Umax comporte alors plus d'inconnues que d'équations: il possède donc évidemment une solution non-triviale. On en déduit qu'il existe nécessairement une dimension résolvante de valeur inférieure ou égale à umax Il est par conséquent inutile dans les calculs de conserver, dans les matrices Su, les lignes d'indice supérieur à Umax. On réduira donc de préférence la 10 complexité des calculs et le stockage en tronquant à umax le nombre de lignes de chaque matrice SU. Selon l'algorithme de base modifié, ou selon l'algorithme modifié étendu, on forme, après avoir calculé un jeu de coefficients li, le " polynôme de localisation d'erreurs ", dont les racines servent à trouver la position des 15 erreurs dans le mot reçu. La présente invention est, avantageusement, compatible avec cette méthode connue pour localiser les erreurs de transmission. Selon des caractéristiques particulières, le nombre de colonnes de chaque matrice Su est tronqué à w(u). L'algorithme selon l'invention fournit alors 20 la plus petite dimension résolvante X0 et les coefficients li associés. Un avantage de ce mode de réalisation est que le polynôme de localisation d'erreurs qui en résulte possède un nombre minimal de coefficients. Selon d'autres caractéristiques particulières, le nombre de colonnes de chaque matrice Su est tronqué à W(PtD) pour u compris entre 1 et le minimum 25 de Duursma JID, et à w(u) pour (le cas échéant) u supérieur à F1D. L'algorithme selon l'invention fournit alors la dimension étendue XD et les coefficients li associés. Un avantage de ce mode de réalisation est d'entraîner une réduction du stockage, puisque les matrices su peuvent ne comporter que W( LD) colonnes pour u compris entre 1 et pD, et w(u) colonnes pour u supérieur à LID. Selon un autre de ses aspects, l'invention concerne divers dispositifs. il Elle concerne ainsi, premièrement, un dispositif de correction d'erreurs pour le décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, destiné à identifier la position des erreurs dans un mot reçu, et comprenant des moyens pour définir la matrice des syndromes S, 5 de dimension (n-k) x (n-k), dont les éléments S# de chaque ligne i sont calculés, pour j compris entre 1 et w(i), o la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit dispositif de correction d'erreurs (107) étant remarquable en ce qu'il comprend en outre des moyens pour construire des matrices Su numérotées u, avec S1 = S, chaque 10 matrice Su pour u > 1 étant obtenue à partir de la matrice S" en effectuant: - le cas échéant des permutations sur les colonnes de la matrice SU1, puis - des manipulations linéaires sur la ligne d'indice u de la matrice ainsi obtenue, et en ce qu'il comporte des moyens pour arrêter la construction de matrices 15 lorsque: - soit Su u, = 0 pour toutj compris entre 1 et w(u), - soit il existe un entier u* (u-1) tel que S*u *j = 0 pour toutj compris entre 1 et w(u). De préférence, ce dispositif de correction d'erreurs comprendra en 20 outre des moyens pour tronquer à Umax le nombre de lignes de chaque matrice SU, o umax est le plus petit entier i pour lequel w(i) est inférieur à i. Selon des caractéristiques particulières, le dispositif de correction d'erreurs comprend en outre des moyens pour tronquer à w(u) le nombre de colonnes de chaque matrice SU. Selon d'autres caractéristiques particulières, le dispositif de correction d'erreurs comprend en outre des moyens pour tronquer à W(ltD) pour u compris entre 1 et le minimum de Duursma JD, et à w(u) pour (le cas échéant) u supérieur à ltD, le nombre de colonnes de chaque matrice SU. Les avantages de ces dispositifs de correction d'erreurs sont 30 essentiellement les mêmes que ceux des procédés corrélatifs décrits succinctement ci-dessus. L'invention concerne aussi, deuxièmement, un décodeur comprenant: - au moins un dispositif de correction d'erreurs tel que décrit succinctement ci-dessus, et - au moins une unité de suppression de la redondance. L'invention vise également: - un appareil de réception de signaux numériques codés comprenant un décodeur tel que décrit succinctement cidessus, ainsi que des moyens pour démoduler lesdits signaux numériques codés, - un système informatique comprenant un décodeur tel que décrit succinctement ci-dessus, et comprenant en outre au moins un disque dur, et au moins un moyen de lecture de ce disque dur, - un moyen de stockage de données inamovible comportant des instructions de code de programme informatique pour l'exécution des étapes de 15 l'un quelconque des procédés succinctement exposés ci-dessus, - un moyen de stockage de données partiellement ou totalement amovible, comportant des instructions de code de programme informatique pour l'exécution des étapes de l'un quelconque des procédés succinctement exposés ci-dessus, et - un programme d'ordinateur, contenant des instructions telles que, lorsque ledit programme commande un dispositif de traitement de données programmable, lesdites instructions font que ledit dispositif de traitement de données met en oeuvre l'un des procédés succinctement exposés ci-dessus. Les avantages offerts par ce décodeur, cet appareil de réception, ce 25 système informatique, ces moyens de stockage de données et ce programme d'ordinateur sont essentiellement les mêmes que ceux offerts par les procédés selon l'invention. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée ci-dessous de modes de réalisation particuliers, 30 donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels: - la figure 1 est un schéma synoptique d'un système de transmission d'informations utilisant un codage de canal selon l'invention, - la figure 2 est une liste de monômes qui forment une base pour un espace vectoriel de fonctions à deux variables associé à un code de géométrie algébrique présenté ici comme exemple, - la figure 3 montre les 13 premières lignes de la matrice des syndromes S dans ce même code, la figure 4 est un organigramme représentant les étapes initiales d'un procédé de correction d'erreurs selon l'invention, - les figures 5a et 5b sont des organigrammes représentant les étapes principales suivantes de ce procédé de correction d'erreurs selon l'invention, et - la figure 6 représente un appareil de réception de signaux numériques incorporant un décodeur selon l'invention. La figure 1 est un schéma synoptique d'un système de transmission 15 d'informations utilisant un codage et décodage de canal selon l'invention. Ce système a pour fonction de transmettre des informations de nature quelconque à partir d'une source 100 vers un destinataire ou utilisateur 109. En premier lieu, la source 100 met ces informations sous la forme de symboles appartenant à un certain alphabet (par exemple des octets de bits), et 20 transmet ces symboles à une unité de stockage 101, qui accumule les symboles de façon à former des ensembles contenant chacun k symboles. Ensuite, chacun de ces ensembles est transmis par l'unité de stockage 101à un codeur 102 qui y ajoute (n-k) symboles de redondance, de manière à construire un mot du code de longueur n. Les mots de code ainsi formés sont ensuite transmis à un modulateur 103, qui associe à chaque symbole du mot de code un symbole de modulation (par exemple, une amplitude complexe). Ensuite, ces symboles de modulation sont transmis à un émetteur ou à un enregistreur 104, qui insère les symboles dans un canal de transmission. Ce canal peut être constitué par 30 exemple d'une émission filaire ou non-filaire telle qu'un signal radio, ou par un stockage sur un support adapté tel qu'un DVD ou une bande magnétique. Cette transmission parvient à un récepteur ou à un lecteur 105, après avoir été affecté par un " bruit de transmission " dont l'effet est de modifier ou d'effacer, aléatoirement, certains des symboles de modulation. Le récepteur ou lecteur 105 transmet alors ces symboles au démodulateur 106, qui les transforme en symboles de l'alphabet mentionné 5 précédemment, dont chaque ensemble constitue un " mot reçu ". Le mot reçu est ensuite traité par une unité de correction d'erreurs 107, qui met en oeuvre un procédé de décodage selon l'invention, de manière à fournir un " mot de code associé ". Puis ce mot de code associé est transmis à une unité de suppression de redondance 108, qui en extrait k symboles d'information en 10 mettant en oeuvre un algorithme de décodage inverse de celui mis en oeuvre par le codeur 102. Enfin, ces symboles d'information sont fournis à leur destinataire 109. On peut considérer que les unités 107 et 108 forment conjointement un " décodeur " 10. On va à présent illustrer le procédé de correction d'erreurs selon l'invention à l'aide d'un exemple numérique. On notera que cet exemple ne constitue pas nécessairement un choix de paramètres préférentiel pour le codage ou le décodage. Il n'est fourni ici que pour permettre à l'homme du métier de comprendre plus facilement le fonctionnement du procédé selon l'invention. Considérons donc un code de géométrie algébrique de paramètres (512,480) défini comme suit. L'alphabet des symboles est constitué par les 256 éléments du corps de Galois F256. Chaque élément non-nul de ce corps est égal à une puissance, comprise entre 0 et 254, d'un de ses éléments, noté y, qui vérifie l'équation 25 y8+y4+y 3+y2+1 =0, ce qui implique que: y255 = 1. On considère alors la " courbe algébrique " de genre g = 8 constituée par l'ensemble des solutions de l'équation à deux inconnues y2 + y + X17 = (2) sur F256 (cette équation étant de degré 2 en y, elle est dite " hyperelliptique "). Ces solutions, qui sont au nombre de 512, constituent les " points de la courbe ", par exemple: P = (,5), p2 = ( 7) P3 = ( P4 = (= 73), P5 = (72 751) P508 = (ó253,193) p509 = (254,Y14), P510 = (ó54 24) p51 = (0,, P512 = (0, 0). Chaque point Pi sert à identifier le i-ème élément de tout mot de code; c'est pourquoi n = 512. Ensuite, on choisit un ensemble de monômes hi (i =1,...,32) en x et y, dont la liste est donnée en figure 2. Ces monômes constituent une base pour un espace vectoriel LF de polynômes en x et y à coefficients dans F256. Le choix des fonctions hi n'est pas arbitraire, mais obéit à certains critères qui définissent les 10 codes de géométrie algébrique dits " à un point ". Enfin, la matrice de parité H du code est définie de la manière suivante: l'élément en ligne i et colonne j de cette matrice est égal à la valeur de la fonction hi au point Pj de la courbe algébrique. Ainsi, n - k = 32, et donc k = 480. Par exemple, compte tenu de Y255 = 1, la douzième ligne de la matrice H est: 15 h12(Pl) = 785 h12(P2) = Y170 h12(P3) = Y,120 h12(P4) = Y154 h12(P510) = ó23, h12(P511) = 0, h12(P512) = 0, puisque h12 = xy. Le code ayant été choisi, on va montrer à présent comment on construit 20 la matrice des syndromes S. Considérons les 32 x 32 produits d'une fonction hi par une fonction hj, définis modulo l'équation de la courbe algébrique (équation (2)). Certains de ces produits sont égaux à un élément de l'espace vectoriel LF. Par exemple: h6h7 = x5 x6 = x 11=hs,hohlo = y y= y2 =x17 + y=h27+hi0. Dans de tels cas, on écrit n-k hihj = 1-.,vhv, v=1 et l'élément Sa de la matrice S est défini par n-k Si. = IVSV.,.(3) v=1 L'ordre des fonctions hi a été choisi de manière à ce que, pour toute valeur de i, le produit de hi par hj appartienne à LF pour toutes les valeurs de j comprises entre 1 et une certaine limite w(Q), o la fonction w(,) est décroissante. Dans l'exemple numérique considéré (voir la figure 2), w(I) devient inférieur à i à partir de i = Umax = 13, avec W(Umax) = 12. En revanche, certains produits hihj n'appartiennent pas à LF. C'est le cas par exemple de: h6h29 = x5 x18 = x23, et de: h17ho10 = x12 y Dans de tels cas, il n'est en fait pas nécessaire de définir la valeur de l'élément Sv 10 correspondant. En effet, l'algorithme selon l'invention, que l'on trouvera décrit cidessous, ne fait appel qu'aux éléments Su pour lesquels j est inférieur ou égal à w(/). Cette fonction w représente donc une " frontière " entre les éléments calculés selon l'équation (3), qui remplissent le coin supérieur gauche de la matrice S, et les éléments indéterminés de cette matrice (voir la figure 3, qui représente les 13 15 premières lignes de la matrice S). Comme on l'a indiqué plus haut, I'algorithme selon l'invention fait appel à des manipulations linéaires sur les lignes. On rappelle que les manipulations linéaires sur les lignes d'une matrice Z pour obtenir une matrice Z' peuvent être représentées par la pré-multiplication de la matrice Z par une matrice inversible 20 L, soit: 2,' = L. E Soit Ft le nombre de lignes de Z, et soit L la matrice à p colonnes qui rend les éléments de la ligne a de Z' nuls de la colonne j = 1 à la colonne j = w(i). Autrement dit, L vérifie 0 = Z'aj=(L. E)j = úLaiZj, pourj= 1,2,...,w(p.). i=1 Si l'on définit alors li-= Lj (i= 1,2,...,p.), (4) on voit que l'on a obtenu -liZij = 0 i=1 comme souhaité (système d'équations (1)). Ainsi, les nombres li cherchés forment la c-ème ligne de L. Or L peut évidemment s'écrire L = L, o I est la matrice unité, de sorte qu'en pratique on obtient L en appliquant à la 5 matrice unité les mêmes manipulations linéaires de lignes que celles qui sont appliquées à la matrice E pour obtenir L'. Les manipulations linéaires mises en oeuvre au cours des algorithmes présentés ci-dessous en exemple opèrent, pour les valeurs croissantes de la variable d'itération u, sur la ligne S[u] d'indice u de la matrice 10 SU, en commençant à u = 2. Les mêmes manipulations linéaires sont appliquées successivement à la matrice unité I, dont les lignes résultant de ces manipulations sont notées L[u]. La ligne S[u] sur laquelle on opère est remplacée par la somme de cette même ligne et d'une ligne précédente d'indice i égal à X dont les éléments sont nuls sur les w(X) premières colonnes. On va décrire à présent, en s'appuyant sur les figures 4, 5a et 5b, un premier mode de réalisation de l'invention, dans lequel on calcule Xo, qui est, rappelons-le, la plus petite valeur de jt pour laquelle le système (1) possède une solution non-triviale. Dans ce mode de réalisation, chaque matrice Su possède un nombre de colonnes égal à w(u). La figure 4 est un organigramme représentant les étapes initiales d'un procédé de correction d'erreurs selon l'invention, qui est mis en oeuvre chaque fois que l'unité de correction d'erreurs 107 saisit un nouveau mot reçu (sous forme d'un tableau de symboles appartenant audit alphabet) à l'étape 196 de ce procédé. On calcule d'abord, à l'étape 197, les syndromes d'erreur du mot reçu, c'est-à-dire les (n-k) composantes s, du vecteur s = H r, puis on insère, à l'étape 198, ces syndromes dans la matrice S construite selon l'équation (3) et tronquée à umax lignes (telle que sur la figure 3). La matrice L est initialisée à la matrice unité de dimension umax. Les entiers u et v représentent respectivement les indices de ligne et de colonne courants. Le rôle de l'entier u* sera explicité ci-dessous. On cherche alors à placer le premier pivot de Gauss en position S11. Si la valeur initialement présente est déjà non-nulle, comme vérifié à l'étape 199, on commute (étape 200) vers le sous-algorithme A. Sinon, on commute (étape 300) vers le sous-algorithme B. Le reste de l'algorithme est constitué d'une série d'étapes, o chaque étape consiste soit à appliquer le sous-algorithme A, soit à appliquer le sous-algorithme B. Le sous-algorithme A, qui est illustré sur la figure 5a, sert essentiellement à descendre d'une ligne dans " S " (étape 201). L'étape 202 représente un test d'arrêt de l'algorithme qui sera expliqué plus bas. Si l'algorithme doit être poursuivi, on manipule la nouvelle ligne (étape 204) de manière à annuler ses éléments situés sur les (u-1) premières colonnes. On a alors obtenu la matrice Su pour la valeur u considérée. A l'étape 205, on compare le nombre courant de lignes u avec le nombre courant de colonnes v. S'il s'avère que u est supérieur à v, on commute vers le sous-algorithme B (étape 300). Si u est inférieur ou égal à v, on parcourt, à l'étape 206, la ligne u dans les colonnes j > u, à la recherche du premier élément non-nul. Si on en trouve un avant la colonne d'indice (v+1), on commence le calcul de la matrice Su1 en échangeant, à l'étape 207, la colonne j sur laquelle se trouve cet élément non-nul avec la colonne u (sauf si j = u), afin que cet élément serve de pivot de Gauss en position (u,u), et l'on retourne au point de départ 200 du sous-algorithme A, pour terminer le calcul de Su+î en manipulant 30 la ligne (u+1). Si en revanche tous les éléments de la ligne u sont nuls jusqu'à la colonne v comprise, on commute (étape 300) vers le sous-algorithme B. Le sous-algorithme B, qui est représenté sur la figure 5b, sert essentiellement à progresser d'une colonne dans " S " (étape 303). S'il s'avère, au départ de ce sous-algorithme (étape 301), que tous les éléments de la ligne u jusqu'à la colonne w(u) comprise sont nuls, c'est 5 qu'on a alors en fait atteint la fin de l'algorithme (étape 302): le nombre I0 cherché est donc égal à la valeur courante de u. On notera que, puisqu'au départ Ix = O pour i manipulations linéaires des lignes de L d'indice i o = 1. Si en revanche, v est encore inférieur à w(u), on continue à parcourir la ligne u vers les colonnes suivantes (en faisant croître v, étape 303), à la recherche du premier élément non-nul (étape 304). Si on en trouve un avant, donc, que v ne devienne égal à w(u), on 15 attribue d'abord, à l'étape 305, la valeur courante de u à la variable u*. Ainsi, la ligne d'indice u* de Su présente un élément non-nul sur sa colonne v, mais tous les éléments de cette ligne situés sur les colonnes 1 à (v-1) sont nuls. La matrice L vérifie donc à ce stade: U* ZLu*i SU = 0, pourj = 1,2,...,(v-1), (5) i= i o Lu*u*, notamment, est égal à 1. Ensuite, à l'étape 306, on commence le calcul de la matrice Su"1 en échangeant la colonne v avec la colonne u (sauf si v = u), afin que l'élément non-nul trouvé à l'étape 304 serve de pivot de Gauss en position (uu), et l'on revient au sous-algorithme A, pour terminer le calcul de Su+l en manipulant la 25 ligne (u+1). Revenons à présent sur le critère d'arrêt 202. Si v > w(u), on en déduit que le nombre 20 cherché est égal à la valeur courante de u, et donc: v-1 2 w(Io). En effet, si l'on remonte à l'étape 305 qui a précédé cette étape 202, on constate que les éléments de la ligne u* de Su* étaient nuls au moins de la colonne 1 à la colonne w(Xo). Compte tenu de l'équation (5), on voit que si l'on prend: 1i= Lu-* pour i= 1,2,...,u*,et li= O pour i = (u*+1),...,Xo0, on a obtenu effectivement une solution non- triviale du système d'équations (1), o X0 correspond à la valeur minimale de u pour laquelle une telle solution existe. On notera que, dans le cas du critère d'arrêt 202, on aboutit à lu* = LU* = 1. On notera également que dans ce cas il n'a pas été nécessaire de calculer la ligne S[Xo]. Selon un deuxième mode de réalisation de la présente invention, on détermine la " dimension étendue " BD visée par l'algorithme modifié étendu. Les étapes de cette variante de l'invention sont essentiellement les mêmes que les étapes du mode de réalisation décrit ci-dessus, si ce n'est que l'on s'abstiendra (le cas échéant) d'incrémenter v au-delà de W(ID); ainsi, le critère 15 d'arrêt 202 devient: v > min (W(U),W(tD)), et le critère d'arrêt 301 devient: v = min (w(u),w(tD)) (o " min " désigne le minimum). Comme mentionné en introduction, cette variante de l'algorithme selon l'invention permet une économie en termes de stockage. Par exemple, pour le code considéré cidessus, on trouve -t.D = 7; comme w(7) = 20, on aura W(XD) 20, de sorte que 20 l'on n'a besoin que des 20 premières colonnes de la matrice S. Quel que soit le mode de réalisation de l'invention, on pourra appliquer ses résultats à la correction des erreurs de transmission dans le mot considéré comme si l'on avait mis en ceuvre l'algorithme de base modifié ou l'algorithme modifié étendu. Par exemple, selon un procédé de correction 25 d'erreurs connu, on formera le " polynôme de localisation d'erreurs " A(x, y) - li hi(x, y), j= I dont les racines servent à trouver la position des erreurs dans le mot reçu (pour plus de détails, on pourra consulter par exemple l'article de Tom H0holdt et Ruud Pellikaan cité ci-dessus). On notera que, pour X fixé, l'ensemble des 30 coefficients li associés n'est pas unique; par exemple, on peut manifestement multiplier ici tous les nombres li par une même constante sans que cela n'affecte la localisation des erreurs de transmission. Le schéma synoptique de la figure 6 représente un appareil de réception de signaux numériques 70 incorporant le décodeur 10. Cet appareil 5 70 comprend un clavier 711, un écran 709, un destinataire d'informations externe 109, un lecteur de données 105 et un démodulateur 106, conjointement reliés à des ports d'entrée/sortie 703 du décodeur 10 qui est réalisé ici sous la forme d'une unité logique. Le décodeur 10 comporte, reliés entre eux par un bus d'adresses et 10 dedonnées702: - une unité centrale de traitement 700, - une mémoire vive (RAM) 704, - une mémoire morte (ROM) 705, et - lesdits ports d'entrée/sortie 703. Chacun des éléments illustrés en figure 7 est bien connu de l'homme du métier des micro-ordinateurs et des systèmes de stockage de masse et, plus généralement, des systèmes de traitement de l'information. Ces éléments connus ne sont donc pas décrits ici. On observe, cependant, que: - le destinataire d'informations 109 pourrait être, par exemple, un 20 périphérique d'interface, un afficheur, un modulateur, une mémoire externe ou un autre système de traitement de l'information (non représenté), et pourrait être adapté à recevoir des séquences de signaux représentatifs de parole, de messages de service ou de données multimédia notamment de type IP ou ATM, sous forme de séquences de données binaires, - le lecteur 105 est adapté à lire des données enregistrées sur un support tel qu'un disque magnétique ou magnéto-optique. La mémoire vive 704 conserve des données, des variables et des résultats intermédiaires de traitement, dans des registres de mémoire portant, dans la description, les mêmes noms que les données dont ils conservent les 30 valeurs. La mémoire vive 704 comporte notamment les registres suivants: - des registres " motsreçus ", dans lesquels sont conservés les mots reçus, - un registre " symbolesestimés ", dans lequel sont conservés les symboles issus d'un mot reçu en cours de correction, - un registre " motsassociés ", dans lequel sont conservés les symboles des " mots de code associés ", et - un registre " symbolesinformation ", dans lequel sont conservés les symboles résultant de la suppression de la redondance. La mémoire morte 705 est adaptée à conserver, dans des registres qui, par commodité, possèdent les mêmes noms que les données qu'ils conservent: le programme de fonctionnement de l'unité centrale de traitement 700, dans un registre " programme ", - la longueur de chaque mot de code dans un registre " n ", - le nombre de symboles d'information dans chaque mot de code, dans un registre " k ", - la liste des valeurs de w(u) pour 1 5 U 5 Umax, telle que celle illustrée sur la figure 2, dans un registre " w ", la liste des coefficients de la matrice des syndromes, telle que celle illustrée sur la figure 3, dans un registre " S ", et - la matrice de parité du code, dans un registre " H ". On a décrit ci-dessus à titre d'exemple une application de l'invention au stockage de masse des données, mais il est clair que les procédés selon l'invention peuvent tout aussi bien être mis en oeuvre au sein d'un réseau de télécommunications, auquel cas l'unité 105 pourrait par exemple être un récepteur adapté à mettre en oeuvre un protocole de transmission de données 25 par paquets sur un canal hertzien. REVENDICATIONS 1. Procédé de décodage d'un code de géométrie algébrique à un 5 point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n - k) x (n - k), dont les éléments Sa de chaque ligne i sont calculés, pour j compris entre 1 et w(i), o la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit procédé étant caractérisé en ce qu'il comporte des étapes numérotées u de construction de matrices, au cours desquelles l'on construit des matrices Su en commençant par S1 = S, en ce que chaque matrice Su pour u > 1 est obtenue à partir de la matrice SU-1 en effectuant: - le cas échéant des permutations sur les colonnes de la matrice Su-1, puis 15 - des manipulations linéaires sur la ligne d'indice u de la matrice ainsi obtenue, et en ce que la construction de matrices s'arrête lorsque: - soit Su uj = 0 pour tout j compris entre 1 et w(u), - soit il existe un entier u* ' (u-1) tel que Su j* = 0 pour toutj compris entre 20 1 et w(u). 2. Procédé de décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, dans lequel, afin d'identifier la position des erreurs dans un mot reçu, on définit la matrice des syndromes S, de dimension (n-k) x (n-k), dont les éléments Se de chaque ligne i sont calculés, pour j 25 compris entre 1 et w(î), o la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit procédé étant caractérisé en ce qu'il comporte des étapes numérotées u de construction de matrices, au cours desquelles l'on construit des matrices Su en commençant par Sa = S, en ce que chaque matrice Su pour u > 1 est obtenue à 30 partir de la matrice SU1 en effectuant: - le cas échéant des permutations sur les colonnes de la matrice Su-1, puis - des manipulations linéaires sur la ligne d'indice u de la matrice ainsi obtenue, et en ce que la dernière étape est: - soit l'étape de numéro u = X, si l'on détermine un entier X tel que S? xj = 0 pour toutj compris entre 1 et w(k), - soit l'étape de numéro u = (X -1), si l'on détermine un entier ? et un entier u*, avec u* 3. Procédé de décodage selon la revendication I ou la revendication 2, caractérisé en ce que le nombre de lignes de chaque matrice Su est tronqué 10 à Umax, O Umax est le plus petit entier i pour lequel w(/) est inférieur à i. 4. Procédé de décodage selon l'une quelconque des revendications 1 à 3, caractérisé en ce que le nombre de colonnes de chaque matrice Su est tronqué à w(u). 5. Procédé de décodage selon l'une quelconque des revendications 15 I à 3, caractérisé en ce que le nombre de colonnes de chaque matrice Su est tronqué à W(LD) pour u compris entre 1 et le minimum de Duursma pD, et à w(u) pour (le cas échéant) u supérieur à FD. 6. Dispositif de correction d'erreurs (107) pour le décodage d'un code de géométrie algébrique à un point de dimension k et de longueur n, destiné à 20 identifier la position des erreurs dans un mot reçu, et comprenant des moyens pour définir la matrice des syndromes S, de dimension (n-k) x (n-k), dont les éléments Sj de chaque ligne i sont calculés, pour j compris entre 1 et w(i), o la frontière w est une fonction décroissante, à partir du syndrome s de ce mot reçu, ledit dispositif de correction d'erreurs (107) étant caractérisé en ce qu'il comprend en outre des moyens pour construire des matrices Su numérotées u, avec S1 = S, chaque matrice Su pour u > I étant obtenue à partir de la matrice Su' en effectuant: - le cas échéant des permutations sur les colonnes de la matrice SU-, puis 30 des manipulations linéaires sur la ligne d'indice u de la matrice ainsi obtenue, et en ce qu'il comporte des moyens pour arrêter la construction de matrices lorsque: - soit Su uj = 0 pour tout] compris entre 1 et w(u), - soit il existe un entier u* lequel w() est inférieur à i. 8. Dispositif de correction d'erreurs selon la revendication 6 ou la revendication 7, caractérisé en ce qu'il comprend en outre des moyens pour tronquer à w(u) le nombre de colonnes de chaque matrice SU. 9. Dispositif de correction d'erreurs selon la revendication 6 ou la revendication 7, caractérisé en ce qu'il comprend en outre des moyens pour 15 tronquer à W(GOD) pour u compris entre 1 et le minimum de Duursma ltD, et à w(u) pour (le cas échéant) u supérieur à FtD, le nombre de colonnes de chaque matrice S'. 10. Décodeur (10), caractérisé en ce qu'il comprend: - au moins un dispositif de correction d'erreurs selon l'une quelconque 20 des revendications 6 à 9, et - au moins une unité de suppression de la redondance (108). 11. Appareil de réception de signaux numériques codés (70), caractérisé en ce qu'il comprend un décodeur selon la revendication 10, et en ce qu'il comporte des moyens (106) pour démoduler lesdits signaux 25 numériques codés. 12. Système informatique (70), caractérisé en ce qu'il comprend un décodeur selon la revendication 10, et en ce qu'il comprend en outre: - au moins un disque dur, et - au moins un moyen de lecture (105) de ce disque dur. 13. Moyen de stockage de données inamovible, caractérisé en ce qu'il comporte des instructions de code de programme informatique pour l'exécution des étapes d'un procédé selon l'une quelconque des revendications 1 à 5. 14. Moyen de stockage de données partiellement ou totalement amovible, caractérisé en ce qu'il comporte des instructions de code de 5 programme informatique pour l'exécution des étapes d'un procédé selon l'une quelconque des revendications 1 à 5. 15. Programme d'ordinateur, caractérisé en ce qu'il contient des instructions telles que, lorsque ledit programme commande un dispositif de traitement de données programmable, lesdites instructions font que ledit 10 dispositif de traitement de données met en oeuvre un procédé selon l'une quelconque des revendications 1 à 5.