Article de reference

Théorie du codage

Une visualisation bidimensionnelle de la distance de Hamming , une mesure critique dans la théorie du codage La théorie du codage est l'étude des propriétés des codes et de leur...

Une visualisation bidimensionnelle de la distance de Hamming , une mesure critique dans la théorie du codage

La théorie du codage est l'étude des propriétés des codes et de leur adéquation à des applications spécifiques. Les codes sont utilisés pour la compression des données , la cryptographie , la détection et la correction des erreurs , la transmission et le stockage des données . Les codes sont étudiés par diverses disciplines scientifiques, telles que la théorie de l'information , l'électrotechnique , les mathématiques , la linguistique et l'informatique , dans le but de concevoir des méthodes de transmission de données efficaces et fiables . Cela implique généralement la suppression de la redondance et la correction ou la détection des erreurs dans les données transmises.

Il existe quatre types de codage :

  1. Compression des données (ou codage source )
  2. Contrôle d'erreur (ou codage de canal )
  3. Codage cryptographique
  4. Codage de ligne

La compression des données vise à supprimer les redondances indésirables des données d'une source afin de les transmettre plus efficacement. Par exemple, la compression de données DEFLATE réduit la taille des fichiers, par exemple pour réduire le trafic Internet. La compression des données et la correction des erreurs peuvent être étudiées en combinaison .

La correction d'erreurs ajoute une redondance utile aux données d'une source pour rendre la transmission plus résistante aux perturbations présentes sur le canal de transmission. L'utilisateur ordinaire peut ne pas être au courant de nombreuses applications utilisant la correction d'erreurs. Un disque compact musical (CD) typique utilise le code Reed-Solomon pour corriger les rayures et la poussière. Dans cette application, le canal de transmission est le CD lui-même. Les téléphones portables utilisent également des techniques de codage pour corriger la décoloration et le bruit de la transmission radio haute fréquence. Les modems de données, les transmissions téléphoniques et le réseau spatial profond de la NASA utilisent tous des techniques de codage de canal pour faire passer les bits, par exemple le code turbo et les codes LDPC .

Histoire de la théorie du codage

L'événement décisif qui a établi la discipline de la théorie de l'information et l'a immédiatement portée à l'attention du monde entier a été la publication de l'article classique de Claude E. Shannon « Une théorie mathématique de la communication » dans le Bell System Technical Journal en juillet et octobre 1948.

Dans cet article révolutionnaire et novateur, dont Shannon avait achevé en grande partie le travail aux Bell Labs à la fin de 1944, Shannon a présenté pour la première fois le modèle qualitatif et quantitatif de la communication en tant que processus statistique sous-jacent à la théorie de l'information, en commençant par l'affirmation que

« Le problème fondamental de la communication est de reproduire en un point, exactement ou approximativement, un message sélectionné en un autre point. »

Avec elle sont venues les idées de

En 1948, Claude Shannon publie « A Mathematical Theory of Communication », un article en deux parties dans les numéros de juillet et d'octobre du Bell System Technical Journal . Cet ouvrage se concentre sur le problème de la meilleure façon de coder les informations qu'un émetteur souhaite transmettre. Dans ce travail fondamental, il utilise des outils de la théorie des probabilités, développés par Norbert Wiener , qui en étaient à leurs débuts dans l'application à la théorie de la communication à cette époque. Shannon a développé l'entropie de l'information comme mesure de l'incertitude d'un message tout en inventant essentiellement le domaine de la théorie de l'information .

Le code binaire Golay a été développé en 1949. Il s'agit d'un code correcteur d'erreurs capable de corriger jusqu'à trois erreurs dans chaque mot de 24 bits et d'en détecter une quatrième.

Richard Hamming a remporté le prix Turing en 1968 pour ses travaux aux Bell Labs sur les méthodes numériques, les systèmes de codage automatique et les codes de détection et de correction d'erreurs. Il a inventé les concepts connus sous le nom de codes de Hamming , fenêtres de Hamming , nombres de Hamming et distance de Hamming .

En 1972, Nasir Ahmed a proposé la transformée en cosinus discrète (DCT), qu'il a développée avec T. Natarajan et KR Rao en 1973. de compression avec perte le plus utilisé , la base des formats multimédias tels que JPEG , MPEG et MP3 .

Codage source

L’objectif du codage source est de prendre les données sources et de les rendre plus petites.

Définition

Les données peuvent être considérées comme une variable aléatoire , où elles apparaissent avec une probabilité .

Les données sont codées par des chaînes (mots) sur un alphabet .

Un code est une fonction

(ou si la chaîne vide ne fait pas partie de l'alphabet).

est le mot de code associé à .

La longueur du mot de code est écrite comme

La longueur attendue d'un code est

La concaténation de mots de code .

Le mot de code de la chaîne vide est la chaîne vide elle-même :

Propriétés

  1. est non singulier si injectif .
  2. est uniquement décodable s'il est injectif.
  3. est instantané si n'est pas un préfixe propre de (et vice versa).

Principe

L'entropie d'une source est la mesure de l'information. Fondamentalement, les codes sources tentent de réduire la redondance présente dans la source et de représenter la source avec moins de bits qui transportent plus d'informations.

La compression de données qui tente explicitement de minimiser la longueur moyenne des messages selon un modèle de probabilité supposé particulier est appelée codage d'entropie .

Diverses techniques utilisées par les schémas de codage de source tentent d'atteindre la limite d'entropie de la source. C ( x ) ≥ H ( x ), où H ( x ) est l'entropie de la source (débit binaire) et C ( x ) est le débit binaire après compression. En particulier, aucun schéma de codage de source ne peut être meilleur que l'entropie de la source.

Exemple

La transmission par télécopie utilise un code de longueur d'exécution simple . Le codage source supprime toutes les données superflues par rapport aux besoins de l'émetteur, diminuant ainsi la bande passante nécessaire à la transmission.

Codage des canaux

La théorie du codage de canal a pour objectif de trouver des codes qui se transmettent rapidement, contiennent de nombreux mots de code valides et peuvent corriger ou au moins détecter de nombreuses erreurs. Bien que ces deux aspects ne soient pas mutuellement exclusifs, les performances dans ces domaines sont un compromis. Ainsi, différents codes sont optimaux pour différentes applications. Les propriétés requises de ce code dépendent principalement de la probabilité que des erreurs se produisent pendant la transmission. Dans un CD typique, la dégradation se présente principalement sous la forme de poussière ou de rayures.

Les CD utilisent un codage Reed-Solomon à entrelacement croisé pour répartir les données sur le disque.

Bien que ce ne soit pas un très bon code, un code de répétition simple peut servir d'exemple compréhensible. Supposons que nous prenions un bloc de bits de données (représentant le son) et que nous l'envoyions trois fois. Au niveau du récepteur, nous examinerons les trois répétitions bit par bit et prendrons un vote majoritaire. L'astuce est que nous n'envoyons pas simplement les bits dans l'ordre. Nous les entrelacons. Le bloc de bits de données est d'abord divisé en 4 blocs plus petits. Ensuite, nous parcourons le bloc et envoyons un bit du premier, puis du deuxième, etc. Cette opération est effectuée trois fois pour répartir les données sur la surface du disque. Dans le contexte du code de répétition simple, cela peut ne pas sembler efficace. Cependant, il existe des codes plus puissants connus qui sont très efficaces pour corriger l'erreur "en rafale" d'une rayure ou d'une tache de poussière lorsque cette technique d'entrelacement est utilisée.

D'autres codes sont plus appropriés à différentes applications. Les communications dans l'espace lointain sont limitées par le bruit thermique du récepteur, qui est plus de nature continue que de nature sporadique. De même, les modems à bande étroite sont limités par le bruit, présent dans le réseau téléphonique et également mieux modélisé comme une perturbation continue. Les téléphones portables sont sujets à une atténuation rapide . Les hautes fréquences utilisées peuvent provoquer une atténuation rapide du signal même si le récepteur est déplacé de quelques centimètres. Là encore, il existe une classe de codes de canal conçus pour lutter contre l'atténuation.

Codes linéaires

Le terme théorie du codage algébrique désigne le sous-domaine de la théorie du codage où les propriétés des codes sont exprimées en termes algébriques puis étudiées plus en détail.

La théorie du codage algébrique est fondamentalement divisée en deux grands types de codes :

  • Codes de blocs linéaires
  • Codes convolutifs

Il analyse les trois propriétés suivantes d’un code – principalement :

  • Longueur du mot de code
  • Nombre total de mots de code valides
  • La distance minimale entre deux mots de code valides, utilisant principalement la distance de Hamming , parfois également d'autres distances comme la distance de Lee

Codes de blocs linéaires

Les codes de blocs linéaires ont la propriété de linéarité , c'est-à-dire que la somme de deux mots de code quelconques est également un mot de code, et ils sont appliqués aux bits source en blocs, d'où le nom de codes de blocs linéaires. Il existe des codes de blocs qui ne sont pas linéaires, mais il est difficile de prouver qu'un code est bon sans cette propriété.

Les codes de blocs linéaires sont résumés par leurs alphabets de symboles (par exemple, binaires ou ternaires) et leurs paramètres ( n , m , d min ) où

  1. n est la longueur du mot de code, en symboles,
  2. m est le nombre de symboles sources qui seront utilisés pour le codage à la fois,
  3. d min est la distance de Hamming minimale pour le code.

Il existe de nombreux types de codes de blocs linéaires, tels que

  1. Codes cycliques (par exemple, codes de Hamming )
  2. Codes de répétition
  3. Codes de parité
  4. Codes polynomiaux (par exemple, codes BCH )
  5. Codes Reed-Solomon
  6. Codes géométriques algébriques
  7. Codes Reed-Müller
  8. Codes parfaits
  9. Code récupérable localement

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 (24,12) 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 ». Les seuls codes parfaits non triviaux et utiles sont les codes de Hamming à distance 3 avec des paramètres satisfaisant (2 r – 1, 2 r – 1 – r , 3), et les codes binaires [23,12,7] et ternaires de Golay [11,6,5].

Une autre propriété du code est le nombre de voisins qu'un seul mot de code peut avoir. Prenons encore l'exemple des centimes. Nous les plaçons d'abord 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. Lorsque nous augmentons les dimensions, le nombre de voisins proches augmente très rapidement. 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.

Les propriétés des codes de blocs linéaires sont utilisées dans de nombreuses applications. Par exemple, la propriété d'unicité syndrome-coset des codes de blocs linéaires est utilisée dans le façonnage en treillis, codes de façonnage les plus connus .

Codes convolutifs

L'idée derrière un code convolutionnel est de faire en sorte que chaque symbole de mot de code soit la somme pondérée des différents symboles de message d'entrée. Cela ressemble à la convolution utilisée dans les systèmes LTI pour trouver la sortie d'un système, lorsque vous connaissez l'entrée et la réponse impulsionnelle.

Nous trouvons donc généralement la sortie du codeur convolutionnel du système, qui est la convolution du bit d'entrée, par rapport aux états du codeur convolutionnel, les registres.

Fondamentalement, les codes convolutionnels n'offrent pas plus de protection contre le bruit qu'un code en bloc équivalent. Dans de nombreux cas, ils offrent généralement une plus grande simplicité de mise en œuvre qu'un code en bloc de puissance égale. Le codeur est généralement un circuit simple doté d'une mémoire d'état et d'une logique de rétroaction, normalement des portes XOR . Le décodeur peut être implémenté dans un logiciel ou un micrologiciel.

L' algorithme de Viterbi est l'algorithme optimal utilisé pour décoder les codes convolutionnels. Il existe des simplifications pour réduire la charge de calcul. Elles reposent sur la recherche des chemins les plus probables uniquement. Bien qu'ils ne soient pas optimaux, ils donnent généralement de bons résultats dans des environnements à faible bruit.

Les codes convolutifs sont utilisés dans les modems à bande vocale (V.32, V.17, V.34) et dans les téléphones mobiles GSM, ainsi que dans les appareils de communication par satellite et militaires.

Codage cryptographique

La cryptographie ou le codage cryptographique est la pratique et l'étude des techniques de communication sécurisée en présence de tiers (appelés adversaires ). Plus généralement, il s'agit de construire et d'analyser des protocoles qui bloquent les adversaires ; divers aspects de la sécurité de l'information tels que la confidentialité des données , l'intégrité des données , l'authentification et la non-répudiation sont au cœur de la cryptographie moderne. La cryptographie moderne se situe à l'intersection des disciplines des mathématiques , de l'informatique et de l'ingénierie électrique . Les applications de la cryptographie comprennent les cartes ATM , les mots de passe informatiques et le commerce électronique .

Avant l'ère moderne, la cryptographie était en réalité synonyme de chiffrement , c'est-à-dire de conversion d'informations d'un état lisible en un non-sens apparent . L'expéditeur d'un message chiffré partageait la technique de décodage nécessaire pour récupérer les informations d'origine uniquement avec les destinataires prévus, empêchant ainsi les personnes indésirables de faire de même. Depuis la Première Guerre mondiale et l'avènement de l' ordinateur , les méthodes utilisées pour effectuer la cryptologie sont devenues de plus en plus complexes et son application s'est généralisée.

La cryptographie moderne repose largement sur la théorie mathématique et la pratique informatique. Les algorithmes cryptographiques sont conçus autour d'hypothèses de dureté de calcul , ce qui rend ces algorithmes difficiles à casser en pratique par un adversaire. Il est théoriquement possible de casser un tel système, mais il est impossible de le faire par aucun moyen pratique connu. Ces schémas sont donc qualifiés de sécurisés sur le plan informatique. Les avancées théoriques, par exemple les améliorations des algorithmes de factorisation d'entiers et les technologies informatiques plus rapides nécessitent que ces solutions soient continuellement adaptées. Il existe des schémas sécurisés sur le plan théorique de l'information qui ne peuvent pas être cassés même avec une puissance de calcul illimitée (le bloc-notes à usage unique en est un exemple ), mais ces schémas sont plus difficiles à mettre en œuvre que les meilleurs mécanismes sécurisés sur le plan théorique mais sécurisés sur le plan informatique.

Codage de ligne

Un code de ligne (également appelé modulation numérique en bande de base ou méthode de transmission numérique en bande de base ) est un code choisi pour être utilisé dans un système de communication à des fins de transmission en bande de base . Le codage de ligne est souvent utilisé pour le transport de données numériques.

Le codage de ligne consiste à représenter le signal numérique à transporter par un signal discret en amplitude et en temps, réglé de manière optimale pour les propriétés spécifiques du canal physique (et de l'équipement de réception). Le modèle de forme d'onde de tension ou de courant utilisé pour représenter les 1 et les 0 d'une donnée numérique sur une liaison de transmission est appelé codage de ligne . Les types courants de codage de ligne sont le codage unipolaire , polaire , bipolaire et Manchester .

Autres applications de la théorie du codage

Une autre préoccupation de la théorie du codage est la conception de codes qui facilitent la synchronisation . Un code peut être conçu de manière à ce qu'un décalage de phase puisse être facilement détecté et corrigé et que plusieurs signaux puissent être envoyés sur le même canal.

Une autre application des codes, utilisée dans certains systèmes de téléphonie mobile, est l'accès multiple par répartition de code (CDMA). Chaque téléphone se voit attribuer une séquence de codes qui est approximativement décorrélée des codes des autres téléphones. Lors de la transmission, le mot de code est utilisé pour moduler les bits de données représentant le message vocal. Au niveau du récepteur, un processus de démodulation est effectué pour récupérer les données. Les propriétés de cette classe de codes permettent à de nombreux utilisateurs (avec des codes différents) d'utiliser le même canal radio en même temps. Pour le récepteur, les signaux des autres utilisateurs n'apparaîtront au démodulateur que comme un bruit de faible niveau.

Une autre classe générale de codes est celle des codes de demande de répétition automatique (ARQ). Dans ces codes, l'expéditeur ajoute une redondance à chaque message pour vérifier les erreurs, généralement en ajoutant des bits de contrôle. Si les bits de contrôle ne sont pas cohérents avec le reste du message à son arrivée, le récepteur demandera à l'expéditeur de retransmettre le message. Tous les protocoles de réseau étendu, à l'exception des plus simples, utilisent ARQ. Les protocoles courants incluent SDLC (IBM), TCP (Internet), X.25 (International) et bien d'autres. Il existe un vaste champ de recherche sur ce sujet en raison du problème de mise en correspondance d'un paquet rejeté avec un nouveau paquet. S'agit-il d'un nouveau paquet ou d'une retransmission ? En général, des schémas de numérotation sont utilisés, comme dans TCP. "RFC793". RFCS . Internet Engineering Task Force (IETF). Septembre 1981.

Tests de groupe

Les tests de groupe utilisent les codes d'une manière différente. Prenons un grand groupe d'articles dans lequel très peu d'entre eux sont différents d'une manière particulière (par exemple, des produits défectueux ou des sujets infectés). L'idée des tests de groupe est de déterminer quels articles sont « différents » en utilisant le moins de tests possible. L'origine du problème remonte à la Seconde Guerre mondiale , lorsque les forces aériennes de l'armée américaine ont dû tester leurs soldats pour la syphilis .

Codage analogique

L'information est codée de manière analogue dans les réseaux neuronaux du cerveau , dans le traitement analogique du signal et dans l'électronique analogique . Les aspects du codage analogique comprennent la correction d'erreur analogique, la compression analogique des données et le cryptage analogique.

Codage neuronal

Le codage neuronal est un domaine lié aux neurosciences qui s'intéresse à la manière dont les informations sensorielles et autres sont représentées dans le cerveau par des réseaux de neurones . L'objectif principal de l'étude du codage neuronal est de caractériser la relation entre le stimulus et les réponses neuronales individuelles ou d'ensemble et la relation entre l'activité électrique des neurones de l'ensemble. On pense que les neurones peuvent coder à la fois des informations numériques et analogiques , et que les neurones suivent les principes de la théorie de l'information et compressent les informations, et détectent et corrigent les erreurs dans les signaux qui sont envoyés dans tout le cerveau et le système nerveux au sens large.

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