Article de reference

Code de bloc

En théorie du codage , les codes en blocs constituent une grande famille de codes correcteurs d'erreurs qui codent les données en blocs. Il existe un grand nombre d'exemples de ...

En théorie du codage , les codes en blocs constituent une grande famille de codes correcteurs d'erreurs qui codent les données en blocs. Il existe un grand nombre d'exemples de codes en blocs, dont beaucoup ont une large gamme d'applications pratiques. La définition abstraite des codes en blocs est utile sur le plan conceptuel car elle permet aux théoriciens du codage, aux mathématiciens et aux informaticiens d'étudier les limites de tous les codes en blocs de manière unifiée. Ces limites prennent souvent la forme de limites qui relient différents paramètres du code en blocs les uns aux autres, tels que son débit et sa capacité à détecter et à corriger les erreurs.

Les codes de Reed-Solomon , les codes de Hamming , les codes de Hadamard , les codes d'expansion , les codes de Golay , les codes de Reed-Muller et les codes polaires sont des exemples de codes en blocs . Ces exemples appartiennent également à la classe des codes linéaires et sont donc appelés codes en blocs linéaires . Plus particulièrement, ces codes sont connus sous le nom de codes en blocs algébriques ou de codes en blocs cycliques, car ils peuvent être générés à l'aide de polynômes booléens.

Les codes de blocs algébriques sont généralement décodés en dur à l'aide de décodeurs algébriques.

Le terme code en bloc peut également désigner tout code correcteur d'erreurs qui agit sur un bloc de bits de données d'entrée pour produire des bits de données de sortie . Par conséquent, le codeur en bloc est un dispositif sans mémoire . Selon cette définition, des codes tels que les codes turbo , les codes convolutionnels terminés et d'autres codes décodables de manière itérative (codes de type turbo) seraient également considérés comme des codes en bloc. Un codeur convolutionnel non terminé serait un exemple de code non en bloc (sans trame), qui possède une mémoire et est plutôt classé comme un code arborescent .

Cet article traite des « codes de blocs algébriques ».

Le code du bloc et ses paramètres

Les codes correcteurs d'erreurs sont utilisés pour transmettre de manière fiable des données numériques sur des canaux de communication peu fiables et sujets au bruit de canal . Lorsqu'un expéditeur souhaite transmettre un flux de données potentiellement très long à l'aide d'un code de bloc, il divise le flux en morceaux de taille fixe. Chaque morceau de ce type est appelé message et la procédure donnée par le code de bloc code chaque message individuellement dans un mot de code, également appelé bloc dans le contexte des codes de bloc. L'expéditeur transmet ensuite tous les blocs au récepteur, qui peut à son tour utiliser un mécanisme de décodage pour (espérons-le) récupérer les messages d'origine à partir des blocs reçus éventuellement corrompus. Les performances et le succès de la transmission globale dépendent des paramètres du canal et du code de bloc.

Formellement, un code de bloc est un mappage injectif

.

Ici, est un ensemble fini et non vide et et sont des entiers. La signification et l'importance de ces trois paramètres et d'autres paramètres liés au code sont décrites ci-dessous.

L'alphabet Σ

Le flux de données à encoder est modélisé comme une chaîne sur un alphabet . La taille de l'alphabet est souvent écrite sous la forme . Si , alors le code en bloc est appelé code en bloc binaire . Dans de nombreuses applications, il est utile de considérer comme une puissance première , et de l'identifier au corps fini .

La longueur du messagek

Les messages sont des éléments de , c'est-à-dire des chaînes de longueur . Le nombre est donc appelé longueur de message ou dimension d'un code de bloc.

La longueur du blocn

La longueur de bloc d'un code de bloc est le nombre de symboles dans un bloc. Par conséquent, les éléments de sont des chaînes de longueur et correspondent à des blocs qui peuvent être reçus par le récepteur. Par conséquent, ils sont également appelés mots reçus. Si pour un message , alors est appelé le mot de code de .

Le tauxR

Le débit d'un code de bloc est défini comme le rapport entre la longueur de son message et la longueur de son bloc :

.

Un débit élevé signifie que la quantité réelle de messages par bloc transmis est élevée. Dans ce sens, le débit mesure la vitesse de transmission et la quantité mesure la surcharge qui se produit en raison du codage avec le code de bloc. C'est un simple fait théorique de l'information que le débit ne peut pas dépasser, car les données ne peuvent en général pas être compressées sans perte. Formellement, cela découle du fait que le code est une carte injective.

La distanced

La distance ou distance minimale d d'un code en bloc est le nombre minimal de positions dans lesquelles deux mots de code distincts diffèrent, et la distance relative est la fraction . Formellement, pour les mots reçus , notons la distance de Hamming entre et , c'est-à-dire le nombre de positions dans lesquelles et diffèrent. La distance minimale du code est alors définie comme

.

Comme tout code doit être injectif , deux mots de code quelconques seront en désaccord sur au moins une position, donc la distance de tout code est d'au moins . De plus, la distance est égale au poids minimum pour les codes de blocs linéaires car :

.

Une distance plus grande permet une meilleure détection et correction des erreurs. Par exemple, si nous considérons uniquement les erreurs qui peuvent modifier les symboles du mot de code envoyé mais ne jamais les effacer ou les ajouter, alors le nombre d'erreurs est le nombre de positions dans lesquelles le mot de code envoyé et le mot reçu diffèrent. Un code avec une distance d permet au récepteur de détecter jusqu'à erreurs de transmission puisque le changement de position d'un mot de code ne peut jamais produire accidentellement un autre mot de code. De plus, si pas plus de erreurs de transmission ne se produisent, le récepteur peut décoder de manière unique le mot reçu en un mot de code. En effet, chaque mot reçu a au plus un mot de code à une distance de . Si plus de erreurs de transmission se produisent, le récepteur ne peut pas décoder de manière unique le mot reçu en général car il peut y avoir plusieurs mots de code possibles. Une façon pour le récepteur de faire face à cette situation est d'utiliser le décodage de liste , dans lequel le décodeur génère une liste de tous les mots de code dans un certain rayon.

Notation populaire

La notation décrit un code de bloc sur un alphabet de taille , avec une longueur de bloc , une longueur de message et une distance . Si le code de bloc est un code de bloc linéaire, les crochets dans la notation sont utilisés pour représenter ce fait. Pour les codes binaires avec , l'index est parfois supprimé. Pour les codes séparables à distance maximale , la distance est toujours , mais parfois la distance précise n'est pas connue, n'est pas triviale à prouver ou à énoncer, ou n'est pas nécessaire. Dans de tels cas, le composant peut être manquant.

Parfois, notamment pour les codes non bloquants, la notation est utilisée pour les codes qui contiennent des mots de code de longueur . Pour les codes bloquants avec des messages d'une longueur supérieure à un alphabet de taille , ce nombre serait .

Exemples

Comme mentionné ci-dessus, il existe un grand nombre de codes correcteurs d'erreurs qui sont en fait des codes en bloc. Le premier code correcteur d'erreurs était le code Hamming(7,4) , développé par Richard W. Hamming en 1950. Ce code transforme un message composé de 4 bits en un mot de code de 7 bits en ajoutant 3 bits de parité. Ce code est donc un code en bloc. Il s'avère qu'il s'agit également d'un code linéaire et qu'il a une distance de 3. Dans la notation abrégée ci-dessus, cela signifie que le code Hamming(7,4) est un code.

Les codes de Reed-Solomon sont une famille de codes avec et étant une puissance première . Les codes de rang sont une famille de codes avec . Les codes d'Hadamard sont une famille de codes avec et .

Propriétés de détection et de correction des erreurs

Un mot de code peut être considéré comme un point dans l' espace de dimension α et le code est le sous-ensemble de . Un code a une distance signifie que , il n'y a pas d'autre mot de code dans la boule de Hamming centrée à avec un rayon , qui est défini comme la collection de mots de dimension α dont la distance de Hamming à n'est pas supérieure à . De même, avec une distance (minimum) a les propriétés suivantes :

  • peut détecter des erreurs : Étant donné qu'un mot de code est le seul mot de code dans la boule de Hamming centré sur lui-même avec un rayon , aucun modèle d'erreur de ou moins d'erreurs ne pourrait changer un mot de code en un autre. Lorsque le récepteur détecte que le vecteur reçu n'est pas un mot de code de , les erreurs sont détectées (mais aucune garantie de correction n'est garantie).
  • peut corriger les erreurs. Étant donné qu'un mot de code est le seul mot de code dans la boule de Hamming centré sur lui-même avec un rayon , les deux boules de Hamming centrées sur deux mots de code différents respectivement avec les deux rayons ne se chevauchent pas. Par conséquent, si nous considérons la correction d'erreur comme la recherche du mot de code le plus proche du mot reçu , tant que le nombre d'erreurs n'est pas supérieur à , il n'y a qu'un seul mot de code dans la boule de Hamming centré sur avec un rayon , donc toutes les erreurs peuvent être corrigées.
  • Afin de décoder en présence de plus de 10 erreurs, on peut utiliser le décodage de liste ou le décodage de vraisemblance maximale .
  • peut corriger les effacements . Par effacement, on entend que la position du symbole effacé est connue. La correction peut être réalisée par décodage par passage : lors du passage, la position effacée est remplie par le symbole et la correction d'erreur est effectuée. Il doit y avoir un passage pour lequel le nombre d'erreurs ne dépasse pas et donc les effacements peuvent être corrigés.

Limites inférieures et supérieures des codes de blocs

Limite de Hamming
Il existe des limites théoriques (comme la limite de Hamming), mais une autre question est de savoir quels codes peuvent réellement être construits. C'est comme emballer des sphères dans une boîte à plusieurs dimensions. Ce diagramme montre les codes constructibles, qui sont linéaires et binaires. L' axe des x montre le nombre de symboles protégés k , l' axe des y le nombre de symboles de contrôle nécessaires n–k . Les limites pour différentes distances de Hamming de 1 (non protégées) à 34 sont représentées. Les codes parfaits sont marqués de points :
  • orange clair sur l'axe des x : codes triviaux non protégés
  • orange sur l'axe des Y : codes de répétition triviaux
  • orange foncé sur l'ensemble de données d = 3 : codes de Hamming parfaits classiques
  • rouge foncé et plus grand : le seul code binaire Golay parfait

Famille de codes

est appelée famille de codes , où est un code à croissance monotone .

Le taux de la famille de codes C est défini comme

La distance relative de la famille de codes C est définie comme

Pour explorer la relation entre et , un ensemble de limites inférieures et supérieures de codes de blocs sont connues.

Hamming lié

Singleton lié

La limite du singleton est que la somme du taux et de la distance relative d'un code de bloc ne peut pas être beaucoup plus grande que 1 :

.

En d'autres termes, chaque code de bloc satisfait l'inégalité . Les codes de Reed-Solomon sont des exemples non triviaux de codes qui satisfont la limite du singleton avec égalité.

Plotkin lié

Pour , . En d’autres termes, .

Pour le cas général, les limites de Plotkin suivantes sont valables pour tout objet de distance d :

  1. Si
  2. Si\left(1-{1 \over q} ight)n,|C|\leq {qd \over {qd-\left(q-1 ight)n d > ( 1 1 q ) n , | C | q d q d ( q 1 ) n {\displaystyle d>\left(1-{1 \over q} ight)n,|C|\leq {qd \over {qd-\left(q-1 ight)n}}} \gauche(1-{1 \sur q}\droite)n,|C|\leq {qd \sur {qd-\gauche(q-1\droite)n}}}" data-src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2c7f86db97e98cad2b6e5401d8cebaa8721477d1">

Pour tout code q -aire de distance ,

Lien Gilbert-Varshamov

, où , est la fonction d'entropie q -aire.

Johnson lié

Définir . Soit le nombre maximal de mots de code dans une boule de Hamming de rayon e pour tout code de distance d .

Alors nous avons la borne de Johnson : , si

Liaison Elias–Bassalygo

Empaquetages et réseaux de sphères

Les codes en blocs sont liés au problème de l'empilement de sphères , qui a reçu une certaine attention au fil des ans. En deux dimensions, il est facile de le visualiser. Prenez un tas de pièces de monnaie à plat sur la table et poussez-les ensemble. Le résultat est un motif hexagonal comme un nid d'abeille. Mais les codes en blocs reposent sur davantage de dimensions qui ne peuvent pas être facilement visualisées. Le puissant code Golay utilisé dans les communications dans l'espace lointain utilise 24 dimensions. S'il est utilisé comme code binaire (ce qui est généralement le cas), les dimensions font référence à la longueur du mot de code tel que défini ci-dessus.

La théorie du codage utilise le modèle de sphère à N dimensions. Par exemple, combien de pièces de monnaie peuvent être empilées dans un cercle sur une table ou en 3 dimensions, combien de billes peuvent être empilées dans un globe. D'autres considérations entrent en jeu dans le choix d'un code. Par exemple, l'empilement d'hexagones dans la contrainte d'une boîte rectangulaire laissera de l'espace vide aux coins. Au fur et à mesure que les dimensions augmentent, le pourcentage d'espace vide diminue. Mais à certaines dimensions, l'empilement utilise tout l'espace et ces codes sont les codes dits parfaits. Il existe très peu de ces codes.

Une autre propriété est le nombre de voisins qu'un seul mot de code peut avoir. Prenons encore l'exemple des centimes. Nous empilons d'abord les centimes dans une grille rectangulaire. Chaque centime aura 4 voisins proches (et 4 aux coins qui sont plus éloignés). Dans un hexagone, chaque centime aura 6 voisins proches. Respectivement, en trois et quatre dimensions, l'empilement maximal est donné par les 12 faces et les 24 cellules avec respectivement 12 et 24 voisins. Lorsque nous augmentons les dimensions, le nombre de voisins proches augmente très rapidement. En général, la valeur est donnée par les nombres de baisers .

Le résultat est que le nombre de façons dont le bruit peut amener le récepteur à choisir un voisin (et donc une erreur) augmente également. Il s'agit d'une limitation fondamentale des codes en blocs, et en fait de tous les codes. Il peut être plus difficile de provoquer une erreur sur un seul voisin, mais le nombre de voisins peut être suffisamment important pour que la probabilité d'erreur totale en souffre réellement.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index