Vous êtes sur la page 1sur 39

THEORIE

THEORIEDE
DEL’INFORMATION
L’INFORMATIONET
ETDU
DU
CODAGE
CODAGE

1
Objectifs

Maîtriser le concept de quantification du contenu en information d’un message. Le concept de codes


détecteurs et correcteurs d’erreurs

Programme

Chapitre I: Introduction à la théorie de l’information

Chapitre II: Transmission et codage en bande de base

Chapitre III: Théorie des codes

2
Chapitre I: Introduction à la théorie de l’information

1.1 Définition :

La théorie de l’information est une théorie probabiliste permettant de quantifier et de qualifier le contenu
moyen en information d’un ensemble de messages. Ce domaine trouve son origine scientifique avec
CLAUDE SHANON est le père fondateur avec son article « A Mathematical Theory of Communication »
publié en 1948.

1.2 Mesure de la quantité de l’information :

Considérons N boites numérotées de 1 à N.


- Un individu A a caché par hasard un objet dans une de ces boites.
- Un individu B doit trouver le numéro de la boite ou est caché l’objet. Pour cela, il a le droit de
poser des questions à l’individu A auxquelles celui-ci doit répondre sans mentir par « Oui » ou
par « Non » mais chaque question représente un coût à payer par l’individu B.
- Un individu C sait dans quelle boite est caché l’objet et il a la possibilité de rendre cette
information à l’individu B. Ce dernier n’acceptera ce marché que si le prix de C est inférieur au
coût moyen que B devrait dépenser pour trouver la boite en posant les questions à A.
- L’information détenue par l’individu C à donc un certain prix. Ce prix représente la quantité
d’information représentée par la connaissance de la boite. Nous la noterons I.
Exemple :
 Si N=1, il ya qu’une seule boite. Alors aucune question n’est nécessaire ;
I=0.
 Si N=2, on demande si la bonne boite est le n°1. La réponse « oui » ou « non » détermine alors ans
ambiguïté la boite cherchée ; I=1.
 Si N=4, on demande si la boite porte un numéro pair. La réponse permet d’éliminer deux boites. Il
suffit d’une dernière question pour trouver quelle est la bonne boite parmi les deux restantes ; I=2.
 Si N=2k, on écrit les numéros des boites en base 2. Les numéros ont au plus K chiffres binaires et
pour chacun des rangs de ces chiffres possèdent le chiffre 0 ou 1. En k questions, on a déterminé
tous les chiffres binaires de la bonne boite. Chaque question ayant pour but de diviser
successivement le nombre de boites considérées par 2 ; I=k.

3
1.3 Propriétés mathématiques de l’information :

Appelons X un message dont la probabilité de réalisation est P(X) et I(X) la quantité d’information
contenue dans le message X.
 L’information est comprise entre 0 et. I(X) R+.
 Un événement avec peu de probabilité représente beaucoup d’information.
 Quand P(X) diminue I(X) augmente
 L’événement certain n’apporte aucune information. → si P(X) =1, alors, I(X)=0
On peut donc écrire :
I(X) = -loga (P(x))
Loga (x) = lnx / lna
Pour a=2, l’unité de I est le bit
Pour a=10, l’unité de I est le dit
Pour a=e, l’unité de I est le nit
a=2; on a I= -log₂p = lnp / ln2
=Init / ln2
=-(lnp/ln10) (ln10 /ln2)
Alors, Ibit= (ln10 / ln2)Idit
Si nous venions à notre cas des boites, on dira que I=log₂N.
Supposons que parmis nos N boites, qu’on est n rouges. Supposons également que l’individu C sache que
la boite ou est caché l’objet est rouge. Quel est le prix à payer de cette information ?
Le prix à payer est : log₂(n). Et le prix de l’information dans la boite recherchée est donc :
I = log₂(N) - log₂(n) = log (N /n)

1.4. Entropie :
Si on considère K événements disjoints de probabilité respectives P₁ ; P₂ ;….. ; Pi. La quantité
d’information correspondante est :
H = ∑ Pi. Ii = -P₁log2 (1/P₁) - P₂log2 (1/P₂) -……- Pklog2 (1/Pk) = -∑ Pi log2(Pi)
La quantité H s’appelle entropie de la distribution des probabilistes. Il s’agit de la mesure de la quantité
d’information d’un ensemble d’événements ou d’un message.

1.5 Information mutuelle :


Rappels mathématiques sur les probabilités conditionnelles : Théorème de Bayes
 Il arrive dans certain problème pratique que l’on ait besoin des probabilités à postériori P (Ai /B).

4
Alors, à partir des considérations théoriques et de données historiques, on connaisse plutôt des
probabilités à priori P(Ai) et des probabilités conditionnelles P (B/Ai).
 Le théorème de Bayes indique comment obtenir les probabilités désirées sous certaines
hypothèses sur les éléments Ai.
 Soit B un événement de probabilité non nul A₁, A₂,… Ai dont les éléments forme une partition
de l’ensemble fondamentale E de tous les résultats possibles.
 Théorème de Bayes : P (Ai / B) = P (B/Ai) P(Ai) / ∑ P (B/Ak) P(Ak)
Exemple
Imaginons deux urnes remplies de boules. La première contient dix (10) boules noires et trente (30)
blanches ; la seconde en a vingt (20) de chaque.
On tire sans préférence particulière une des urnes au hasard et dans cette urne, on tire une boule au
hasard. La boule est blanche. Quelle est la probabilité qu'on ait tiré cette boule dans la première urne
sachant qu'elle est blanche ?
Solution
Intuitivement, on comprend bien qu'il est plus probable que cette boule provienne de la première urne,
que de la seconde. Donc, cette probabilité devrait être supérieure à 50 %. La réponse exacte vient du
théorème de Bayes.
Soit H1 l’hypothèse « On tire dans la première urne. » et H2 l’hypothèse « On tire dans la seconde urne. ».
Comme on tire sans préférence particulière, P(H1) = P(H2) ; de plus, comme on a certainement tiré dans
une des deux urnes, la somme des deux probabilités vaut 1 : chacune vaut 50 %.
Notons 'D’ l’information donnée « On tire une boule blanche. » Comme on tire une boule au hasard dans
une des urnes, la probabilité de D sachant/sous l’hypothèse H1 vaut :

De même si l’on considère H2,

La formule de Bayes dans le cas discret nous donne donc.

5
Avant que l’on regarde la couleur de la boule, la probabilité d’avoir choisi la première urne est une
probabilité a priori, P(H1) soit 50 %. Après avoir regardé la boule, on révise notre jugement et on
considère P(H1|D), soit 60 %, ce qui confirme notre intuition première.

Information mutuelle :

Nos désirons donner une mesure quantitative de ce que nous apporte la réalisation d’un événement Y. En
termes mathématiques, l’occurrence de l’événement Y transforme une probabilité à priori P(x) de
l’événement x en la probabilité à P (x /y). L’information Y réalisée diminue l’incertitude sur x de la
quantité.
I(x) – I(x/y) = log₂ (P(x/y) / P(x))
On appelle information mutuelle de x et y la quantité
:
I (x ; y) = log₂ P(x/y) / P(x) or P(x/y) = P (x, y) / P(y) → I(x ;y) = log₂ P(x,y)/P(x).P(y)

1.6. Information mutuelle de 2 distributions :


On considère des ensembles d’éléments :
X = {x₁ ; x₂ ;….. ; xi} et Y = {y₁ ; y₂ ;…. yj}. Par définition,
I (X ; Y) = ∑∑ P (xi, yj) I (xi ; yj) = ∑∑ P (xi, yj) log2[P (xi, yj) /P(xi)P(yj)]

1.7. Entropie conditionnelle :


H(X/Y) = ∑∑ P (xi, yj). (-log2 (P (xi / yj))

1.8. Entropie conjointe :


H (X, Y) = ∑∑ P (xi, yj). (-log2 (P (xi, yj))

Remarques :
i) I (X ; Y) = H(X) – H(X/Y) = H(Y) – H(Y/X)
ii) I (X ; Y) = H(X) + H(Y) – H (X, Y)

6
Chapitre II : Transmission et codage bande de base

II.1 Introduction
La transmission est le transport de quelque sorte d'information que ce soit, d'un endroit à un autre.
Historiquement, cela se faisait par courrier papier, une chaîne de feux ou de sémaphores, puis le Morse sur
des fils en cuivre.
Dans le vocabulaire informatique, cela signifie l'envoi de flux de bits d'un endroit à un autre en utilisant
des technologies, comme le fil de cuivre, la fibre optique, le laser, la radio, ou la lumière infrarouge

II.2 Transmission analogique et transmission numérique


L’information à transmettre peut-être analogique ou numérique.
En analogique, les informations sont représentées par des niveaux de valeurs continus, proportionnels à la
valeur de l'information. La transmission de ces informations se fait directement sur le support physique.
Pour obtenir une représentation numérique, on doit d'abord échantillonner le signal analogique. On
transmet alors ces échantillons sur le support physique en utilisant le codage binaire pour n'utiliser que les
valeurs prédéfinies de voltages. Ex. +5 volts et -5 volts pour les 1et les 0.
Les Informations analogiques sont complètes, pas de perte dues à l'échantillonnage.
En numérique, il ya :
o Facilité de régénérer le signal, de le retravailler.
o Détection et corrections des erreurs possibles.
o Possibilité de mixer plusieurs types de données (voix, images, données...)
o Des débits plus élevés peuvent être obtenus avec les infrastructures existantes.

II.3 Les modes de transmission


Le mode de transmission désigne le nombre d'unités élémentaires d'informations (bits) pouvant être
simultanément transmises par le canal de communication.
Dans une transmission numérique on peut envisager deux modes :
 les envoyer tous en même temps sur autant de lignes de transmission. C'est le mode parallèle.
 les envoyer l'un après l'autre sur une seule ligne de transmission. C'est le mode sériel.

II.3.1 La transmission série

7
Dans une liaison en série, les données sont envoyées bit par bit sur la voie de transmission. Toutefois,
étant donné que la plupart des processeurs traitent les informations de façon parallèle, il s'agit de
transformer des données arrivant de façon parallèle en données en série au niveau de l'émetteur, et
inversement au niveau du récepteur.

Ces opérations sont réalisées grâce à un contrôleur de communication (la plupart du temps une puce
UART, Universal Asynchronous Receiver Transmitter). Le contrôleur de communication fonctionne de la
façon suivante :
o La transformation parallèle-série se fait grâce à un registre de décalage. Le registre de décalage
permet, grâce à une horloge, de décaler le registre (l'ensemble des données présentes en parallèle)
d'une position à gauche, puis d'émettre le bit de poids fort (celui le plus à gauche) et ainsi de suite :

o La transformation série-parallèle se fait quasiment de la même façon grâce au registre de


décalage. Le registre de décalage permet de décaler le registre d'une position à gauche à chaque
réception d'un bit, puis d'émettre la totalité du registre en parallèle lorsque celui-ci est plein et ainsi
de suite :

II.3.2 La transmission parallèle


On désigne par transmission parallèle la transmission simultanée de N bits. Ces bits sont envoyés
simultanément sur N voies différentes (une voie étant par exemple un fil, un câble ou tout autre support
physique).
Un processeur, ou un ordinateur en général ne traite jamais un seul bit à la fois, il permet généralement
d'en traiter plusieurs (la plupart du temps 8, soit un octet), c'est la raison pour laquelle la liaison de base
sur un ordinateur est une liaison parallèle.
La liaison parallèle des ordinateurs de type PC nécessite généralement 10 fils.

8
Ces voies peuvent être :
o N lignes physiques: auquel cas chaque bit est envoyé sur une ligne physique (c'est la raison pour
laquelle les câbles parallèles sont composés de plusieurs fils en nappe)
o une ligne physique divisée en plusieurs sous-canaux par division de la bande passante. Ainsi
chaque bit est transmis sur une fréquence différente...
Etant donné que les fils conducteurs sont proches sur une nappe, il existe des perturbations (notamment à
haut débit) dégradant la qualité du signal.
Le mode parallèle à cet avantage qu’il permet de transmettre simultanément N bits pendant que le mode
sériel transmet 1 seul bit dans le même temps, il est donc N fois plus rapide que le mode sériel. Cependant
il présente plusieurs inconvénients :
 Le nombre de lignes nécessaires.
Ce mode de transmission est totalement exclu pour la transmission de signaux à grande distance,
car les lignes coûtent cher.
Si on envisage une transmission par hertzien de n lignes indépendantes, le problème est le même
du fait que la bande passante de n canaux est n fois plus élevée que celle d'un seul canal. La bande
passante hertzienne est aussi très chère.
 La vitesse de transmission du signal n'est pas la même suivant les lignes
d'un câble ou suivant les canaux. Des désynchronisations peuvent se produire à l'arrivée.
Désynchronisations assez aléatoires car dépendant des caractéristiques techniques des câbles
souvent inhomogènes, souvent déformés d'un usage à l'autre.
 La diaphonie : Interférences de signaux de 2 lignes parallèles voisines
Dès lors, ce mode de transmission est réservé à de très courtes distances.
les liaisons PC-imprimante ne dépassant pas un ou deux mètres
certains bus d'interconnexion informatique courts tels que le système SCSI ou GPIB
les liaisons entre composants d'une carte imprimée : microprocesseurs, mémoires etc.

II.4 Transmission synchrone et asynchrone


Etant donné les problèmes que pose la liaison de type parallèle, c'est la liaison série qui est la plus utilisée.
Toutefois, puisqu'un seul fil transporte l'information, il existe un problème de synchronisation entre
l'émetteur et le récepteur, c'est-à-dire que le récepteur ne peut pas a priori distinguer les caractères (ou
même de manière plus générale les séquences de bits) car les bits sont envoyés successivement. Il existe
donc deux types de transmission permettant de remédier à ce problème :
9
 La liaison asynchrone, dans laquelle chaque caractère est émis de façon irrégulière dans le temps
(par exemple un utilisateur envoyant en temps réel des caractères saisis au clavier). Ainsi,
imaginons qu'un seul bit soit transmis pendant une longue période de silence, le récepteur ne
pourrait savoir s'il s'agit de 00010000, ou 10000000 ou encore 00000100...
Afin de remédier à ce problème, chaque caractère est précédé d'une information indiquant le début
de la transmission du caractère (l'information de début d'émission est appelée bit START) et
terminé par l'envoi d'une information de fin de transmission (appelée bit STOP, il peut
éventuellement y avoir plusieurs bits STOP).
 La liaison synchrone, dans laquelle émetteur et récepteur sont cadencés à la même horloge. Le
récepteur reçoit de façon continue (même lorsque aucun bit n'est transmis) les informations au
rythme où l'émetteur les envoie. C'est pourquoi il est nécessaire qu'émetteur et récepteur soient
cadencés à la même vitesse. De plus, des informations supplémentaires sont insérées afin de
garantir l'absence d'erreurs lors de la transmission.
Lors d'une transmission synchrone, les bits sont envoyés de façon successive sans séparation entre chaque
caractère, il est donc nécessaire d'insérer des éléments de synchronisation, on parle alors de
synchronisation au niveau caractère.
Le principal inconvénient de la transmission synchrone est la reconnaissance des informations au niveau
du récepteur, car il peut exister des différences entre les horloges de l'émetteur et du récepteur. C'est
pourquoi chaque envoi de données doit se faire sur une période assez longue pour que le récepteur la
distingue. Ainsi, la vitesse de transmission ne peut pas être très élevée dans une liaison synchrone.

Décalage des horloges :


Considérons un signal simple de type NRZ. L'avantage d'un tel système est sa simplicité, l'inconvénient
est le risque de perte de synchronisation, car comme nous l'avons vu rien n'indique s'il s'agit d'un seul bit
de valeur 1 ou de plusieurs bits de valeur 1. La seule façon pour interpréter correctement ce signal est de
disposer d'une horloge locale réglée sur la fréquence d'arrivée des bits. La séquence binaire reçue sera en
fait le résultat de l'échantillonnage du signal physique reçu par une horloge locale, c'est à dire le produit de
l'horloge par le signal reçu.

Prenons d'abord l'exemple d'une horloge de réception de fréquence fr, et d'une horloge d'émission fe avec
fr=8/7 fe. Lorsque l'émetteur cadence 7 intervalles de temps, le récepteur en compte 8. Cela se traduira
dans l'exemple ci dessous par un doublage du bit 3

10
En revanche si fe=8/7 fr, l'émetteur enverra 8 bit lorsque le récepteur en décodera 7, ce qui provoquera
l'oubli d'un bit comme le montre la figure ci dessous.

o De manière générale, si fr>fe (on pose fr=1/Tr et fe=1/Te) on répète 1 bit sur N chaque fois
que fe=N/(N+1) fr, soit N/(N+1)=fe/fr , d'où N=fe/(fr-fe)=fe/Δf. Il y a donc une erreur tous les
T=N.Te soit T=1/Δf.
o Si fe>fr, on rate un bit parmi N émis chaque fois que fr=N/(N+1)fe, c'est-à-dire chaque fois que
N=fr/(fe-fr)=fr/Δf. il y a donc une erreur tous les T=N.Tr =1/Δf, et la réception est sans erreur
que sur une durée T=1/Δf.
o Si on appelle p la précision sur les horloges p=Δf/f on a Δf=pf, le nombre de bits qu'il est
possible d'envoyer sans erreur est alors N=T/Te=1/(Te. Δf ) = fe/Δf =f/Δf =1/p.

- Pour s'affranchir des erreurs de bits répétées ou ratées, l'émetteur et le récepteur doivent avoir
rigoureusement la même horloge.
- Une méthode consiste à envoyer au récepteur l'horloge de l'émetteur par un fil indépendant de la
ligne de transmission,
- ou bien à fournir à tous les éléments de la ligne de transmission les mêmes impulsions
d'horloges provenant d'une tierce machine.
- On peut aussi multiplexer temporellement le signal d'horloge et le signal contenant les
informations. (Codage Manchester ou HDB3).

 Les transmissions asynchrones se réalisent pour des systèmes de transmission possédant chacun
une horloge différente. Dans ce cas l'inévitable écart entre les fréquences d'horloges d'émission et
de réception produit des erreurs.
 En transmission asynchrone, on renonce donc à transmettre des paquets de bits supérieurs à N=1/p.
La transmission n'est donc pas continue mais par paquets de N<1/p bits séparés par des "silences"
pendant lesquels la ligne est laissée à l'état haut.

11
 Lorsqu'un paquet est envoyé la ligne redescend à zéro. Ce front descendant (signal START) fait
office de signal de synchronisation pour démarrer l'horloge de réception et la mettre en phase avec
l'horloge de l'émission. A la fin du paquet la ligne est remise à l'état haut pendant une durée égale
au moins à un bit (signal stop).

II.5 Les transmissions simplex, half-duplex et full-duplex


Selon le sens des échanges, on distingue :
 La liaison simplex caractérise une liaison dans laquelle les données circulent dans un seul sens,
c'est-à-dire de l'émetteur vers le récepteur. Ce genre de liaison est utile lorsque les données n'ont
pas besoin de circuler dans les deux sens (par exemple de votre ordinateur vers l'imprimante ou de
la souris vers l'ordinateur...).

 La liaison half-duplex (parfois appelée liaison à l'alternat ou semi-duplex) caractérise une liaison
dans laquelle les données circulent dans un sens ou l'autre, mais pas les deux simultanément. Ainsi,
avec ce genre de liaison chaque extrémité de la liaison émet à son tour. Ce type de liaison permet
d'avoir une liaison bidirectionnelle utilisant la capacité totale de la ligne. (Exemple les talkie-
walkie)

 La liaison full-duplex (appelée aussi duplex intégral) caractérise une liaison dans laquelle les
données circulent de façon bidirectionnelle et simultanément. Ainsi, chaque extrémité de la ligne
peut émettre et recevoir en même temps, ce qui signifie que la bande passante est divisée par deux
pour chaque sens d'émission des données si un même support de transmission est utilisé pour les
deux transmissions.

12
II.6 Problématique de la transmission
Lors de la transmission, il faut faire face aux problèmes suivants :
o le spectre du signal à transmettre doit être compris dans la bande passante du support de
transmission ;
o la transmission d'un signal à spectre étroit sur un support à large bande passante provoque une
sous utilisation des supports de transmission.
Pour pallier ces problèmes, on utilise des techniques
de modulation : pour adapter le signal au support,
de multiplexage : pour rentabiliser l'utilisation du support.
Cela nécessite l'utilisation d'équipements spéciaux : les ETCDs.
Une transmission de données met en œuvre des calculateurs d'extrémité et des éléments d'adaptation du
signal.

 Un Equipement Terminal de Traitement de Données (ETTD) ou Data Terminal Equipment (DTE)


contrôle les communications.
 Un Equipement Terminal de Circuit de Données (ETCD) ou Data Circuit Equipment (DCE) réalise
l'adaptation du signal entre l'ETTD et le support de transmission.
La jonction ETTD/ETCD définit un ensemble de règles (protocole) destinées à assurer la connectivite
et le dialogue entre ETTD et ETCD, la synchronisation des horloges, le transfert des données et le
contrôle de celui-ci.

II.7 Transmission Bande de base et transmission large bande


13
II.7.1 Transmission en bande de base
La transmission en bande de base consiste à modifier légèrement (on dit transcoder) le signal émis par
l'ETTD. Ce mode de transmission est peu adapté aux longues distances.

L'ETCD est un codeur/décodeur. Il a essentiellement pour objet de coder le signal pour supprimer les
composantes continues et de maintenir la synchronisation de l'horloge de réception.
Codage bande de base
Un codage binaire est représenté par une simple suite de "0" et de "1". Cela parait simple en apparence,
mais il existe plusieurs façons de représenter une suite binaire.
De façon générale on distingue :
o Les signaux unipolaires :
C'est la représentation la plus simple. Les niveaux hauts ("1") sont codés par une tension haute Vo, alors
que les niveaux bas sont représentés par une tension nulle. Dans le cas d'une longue suite de 1 la valeur
moyenne du signal n'est plus nulle ce qui peut produire des erreurs. C’est le codage « tout ou rien »

o Les signaux bipolaires :


Pour maintenir une valeur moyenne nulle, il y a deux possibilités : Dans le cas de signaux bipolaires NRZ,
on met les "1" à +Vo et les "0" à –Vo.

Pour les signaux bipolaires RZ, le premier bit à "1" est à la tension +Vo (polarité positive), tandis que le
deuxième bit à "1" suivant est représenté par la tension –Vo (polarité négative)

Signaux NRZ: (non remise à zéro)


Si T est la durée d'un bit, le signal reste dans le même état pendant toute la durée T. Par suite, si plusieurs
bits consécutifs sont dans le même état (par exemple n bits à 1) le signal transmis sera constant et égal à 1
pendant n période T d'horloge.
14
L'avantage d'un tel système est la simplicité, l'inconvénient est le risque de perte de synchronisation, car
rien n'indique s'il s'agit d'un seul bit de valeur 1 ou de plusieurs bits de valeur 1. La seule façon pour
interpréter correctement ce signal est de disposer d'une horloge locale réglée sur la fréquence d'arrivée des
bits

Signaux RZ: (Remise à Zéro)


Dans ce type de représentation, le signal pour transmettre un "1" logique ne reste pas à Vo durant la
totalité de la durée T (durée d'un bit), mais seulement durant T/2 ensuite il est remis à "0". Cela facilite la
synchronisation puisque même dans une longue séquence de 1 on retrouve le rythme de l'horloge.

Codage Manchester :
Une variante consiste à transmettre les 1 par des fronts montants et les "0" par des fronts descendants.

Signaux HDBn :
Les codes BHD (bipolaires haute densité ou high density bipolar codes) constituent une variante du code
bipolaire de type RZ destinée à limiter le nombre de zéros successif.
Dans le cas de code bipolaire, une longue suite de zéros se traduit par une tension quasi nulle sans
aucune transition, ce qui peut provoquer une perte de synchronisation du récepteur. Le code HDBn
autorise au plus n intervalles de temps consécutifs sans impulsion.
Le code HDB3 est très utilisé dans les réseaux téléphoniques numériques notamment dans la PDH.
Dans le code HDB3, l'émetteur remplace toutes les séquences de 4 zéros successifs par une autre
séquence de la forme B00V, dans laquelle le quatrième zéro "V" est forcé à avec la même polarité que le
bit à "1" immédiatement précédent. Il y a donc violation de l'alternance des polarités. (bit de viol).

15
B respecte l'alternance des polarités, c'est à dire qu'il aura le signe opposé à la dernière impulsion sauf
dans le cas où il y a un nombre impair d'impulsion depuis la dernière violation de polarité. Dans ce cas B
sera mis à zéro ce qui maintient une valeur moyenne nulle.

Exemples de codages en bande de base

II.7.2 Transmission large bande (Broadband)


La transmission en large bande translate le spectre du signal à émettre dans une bande de fréquence
mieux admise par le système.

L'ETCD est un modulateur/démodulateur. Il transforme le signal numérique en un signal sinusoïdal


modulé (par fréquence/amplitude/phase) plus résistant que le signal en bande de base. Il permet donc
d'atteindre des distances plus importantes. De plus, une transmission en large bande permet le
multiplexage spatial.

16
Multiplexage spatial et multiplexage temporel
Chapitre III : Théorie des codes

III.1 Introduction

La théorie des codes traite des codes, de leurs propriétés et de leurs aptitudes à servir sur différents
canaux de communication.
On distingue deux modèles de communication : avec et sans bruit.
o Sans bruit, le codage de source suffit à la communication.
o Avec bruit, la communication est possible avec les codes correcteurs.
Un code correcteur est une technique de codage basée sur la redondance. Elle est destinée à corriger les
erreurs de transmission d'une information (plus souvent appelée message) sur une voie de communication
peu fiable.
La théorie des codes correcteurs ne se limite pas qu'aux communications classiques (radio, câble coaxial,
fibre optique, etc.) mais également aux supports pour le stockage comme les disques compacts, la
mémoire RAM et d'autres applications où l'intégrité des données est importante.
Les codes correcteurs d'erreurs ont leur source dans un problème très concret lié à la transmission de
données. Dans la grande majorité des cas, une transmission de données se fait en utilisant une voie de
communication, le canal de communication, qui n'est pas entièrement fiable. Autrement dit, les données,
lorsqu'elles circulent sur cette voie, sont susceptibles d'être altérées.
Par exemple lors d'une communication radio, la présence de parasites sur la ligne va perturber le son de la
voix. Il y a alors essentiellement deux approches possibles :
 augmenter la puissance de l'émission
 ajouter de la redondance à l'information
Si l'on reprend l'exemple de la communication radio, augmenter la puissance de l'émission signifie crier ou
avoir un meilleur émetteur. Cette technique a bien évidemment ses limites, et aura du mal à être utilisée

17
dans des sondes spatiales, sans même prendre en considération des contraintes sur les ressources en
énergie.
L'autre solution va consister à ajouter des données
Les problématiques apportées par l'industrie sont diverses. Dans le cas de la transmission de données,
par exemple sur internet, le rôle du code correcteur se limite parfois à la détection des erreurs. C'est le cas
pour le protocole TCP. La correction est alors réalisée par une nouvelle demande de transmission du
message.
Pour d'autres situations, l'objectif est la correction d'erreurs, sans nouvelle demande de transmission. Là
encore, plusieurs configurations se présentent. La communication sur ordinateur par le port série utilise un
code dont l'objectif est la correction de petites erreurs relativement fréquentes mais isolées. Dans le cas du
disque compact, les erreurs sont aussi causées par des rayures ou des impuretés du support, elles sont
moins fréquentes mais beaucoup plus volumineuses
Deux grandes familles de codes :
 les codes par bloc : le codage/décodage d’un bloc dépend uniquement des informations de ce bloc.
 les codes convolutionnels (ou récurrents) : le codage/décodage d’un bloc dépend des informations
d’autres blocs (généralement de blocs précédemment transmis).
On préfère généralement le codage par bloc dans les applications téléinformatiques classiques:
- le codage/décodage est plus simple et il y a moins de délai
Par la suite, on ne va présenter que les codes par bloc :
- codes simples
- codes linéaires, de Hamming
- codes polynômiaux
- codes cycliques

III.2 Définitions
III.2.1 Alphabet et message
L'information à transmettre peut être vue comme une suite x de symboles pris dans un ensemble fini (il
s'agit le plus souvent de bits, donc de 0 et de 1).
 Un alphabet est un ensemble fini non vide, ses éléments sont appelés lettres ou symboles.
 Un message ou un mot est une suite à valeur dans un alphabet, il correspond à une suite de lettres.
 La longueur d'un message désigne le nombre de lettres qu'il contient

III.2.2 Codes en bloc

 Soit V un alphabet. Un code C sur V est un sous-ensemble fini de V + :


Où V + = {mots de longueur non nulle sur l’alphabet V}
 On appelle arité du code C le cardinal de V
Exemple :

18
a) C = {0, 1, 10} est un code d’arité 2 sur l’alphabet binaire V = {0, 1}.
b) C = {mmm, mmp, mmf, mpm, mpp, mpf, mfm, . . .} = {m, p, f} 3 est un code d’arité 3 sur
l’alphabet V = {m, p, f}.
NB : En pratique, c’est souventl’alphabet binaire qui est utilisé

 Un code en bloc est un code correcteur traitant des messages de longueur fixe. C est un code
contenant M mots de code, c'est-à-dire, de dimension M. La longueur d'un mot de code est dénotée
par n. Un tel code est dit code (n, M).
Exemple : C = {00000 ; 01110 ; 10011 ; 11101} est un (5,4) code

I.2.3 Distance de Hamming et poids

 La distance de Hamming d(x, y) entre deux mots x et y est le nombre de positions de


coordonnées qui diffèrent entre x et y

Exemple: V = {0,1}, x=(10110) y=(11011) ; d(x, y) =3 .

 Le poidsde x, w(x), est le nombre de coordonnées non nulles dans x


Exemple1 : x=(10110) ; w(x)=3
Exemple2 : Soit C= {c0= 00000, c1= 01110, c2= 10011, c3= 11101}. Le poids des

mots est respectivement 0, 3, 3 et 4


 La distance de Hamming du code : Soit C un (n, M) - code, la distance de Hamming du code est
δ = min {d(x,y), x,y appartenant à C, x ≠y}.
C’est la distance minimale entre deux mots distincts du code
Un code est alors défini par les trois paramètres [n, M, δ], où n est la taille du code, M
sa dimension et δ sa distance minimale.
Exemple2 : Calculer la distance de Hamming du code C= {c0= 00000, c1= 01110,

c2= 10011, c3= 11101}.


d (c0, c1) = 3 ; d (c0, c2)=3 ; d (c0, c3)=4 ; d (c1, c2) = 4 ;
d (c1, c3) = 3 ; d (c2, c3) = 3
donc la distance la plus petite entre deux mots du code est δ=3
Remarque : si le nombre de mots est grand, δ est difficile à calculer

III.2.4 Codes linéaires


Soit p un nombre premier, d une puissance de p, n un entier strictement positif et k un entier plus petit
que n.
Un code linéaire C de dimension k et de longueur n est un sous-espace vectoriel de Fdn de dimension k.
Si d est égal à deux, le code est dit binaire. Sinon, on parle de code linéaire de base d.

19
Ici, Fd désigne l'unique corps à d éléments. On remarque que l'espace vectoriel des suites à valeurs dans
Fd est identifié à Fdn.
Comme pour les autres codes correcteurs, la notion de paramètres s'applique. Cependant, pour tenir
compte de la structure d'espace vectoriel, elle est un peu modifiée: Les paramètres d'un code
linéaire sont notés [n, k, δ]
La définition de paramètre pour les codes linéaires n'est donc pas compatible avec celle, plus générique
utilisées pour les codes correcteurs. Pour cette raison, traditionnellement les paramètres d'un code linéaire
sont notés [n, k, δ] et ceux d'un code correcteur général {n, M, δ}.
III.2.5 Fonction d’encodage
On appelle fonction d’encodage de S vers C toute fonction
f:S→C
qui est bijective.
Exemple.
1- La fonction d’encodage du fax associe à chaque couleur Noir (N) ou Blanc (B)
un entier égal à 0 ou 1 :
f : {N, B} → {0, 1}
N→0
B→1
2- La fonction d’encodage en ASCII associe à des caractères des mots binaires de 8 bits.
f (A) = 01000001 ; f (B) = 01000010 . . .

III.2.6 Déchiffrabilité
La fonction d’encodage permet d’encoder un message source en procédant par blocs :
m = a1a2 . . . an → f(a1)f(a2) . . . f(an) = c1c2 . . . cn
La question qui se pose alors est celle du décodage : supposons qu’on utilise la fonction d’encodage f
qui associe à chaque lettre sa place dans l’alphabet. On a alors
f : {A,B, . . . ,Z} → {1, 2, . . . , 26}
A→1
B→2
...
...
Z → 26
On reçoit le message encodé 1219, comment l’interpréter ?
Comme les blocs n’ont pas une taille fixe, on
peut considérer que 1219 est 1-2-1-9 (ABAI), 1-2-19 (ABS), 12-19 (LS). . . Bref, il n’y a clairement pas
unicité du message source qui s’encode en 1219, et le nombre de possibilités explose pour un texte plus
long
 On dit qu’un code C sur un alphabet V est uniquement déchiffrable si :
20
x = x1x2 . . . xn V +, il existe au plus c = c1c2 . . . cm C+ tel que c = x.

Conséquence : Un code C est uniquement déchiffrable si et seulement si

c = c1 . . . cn, d = d1 . . . dm Є C+, (c = d) → (n = m et ci = di i)

Exemple : Sur l’alphabet binaire V = {0, 1}, le code C1 = {0, 01, 001} n’est pas uniquement
déchiffrable car 001 = 0.01. En revanche, les codes C2 = {01, 10} et C3 = {0, 10, 110} sont uniquement
déchiffrables.
On préfèrera bien évidemment utiliser des codes uniquement déchiffrables afin de ne pas avoir
d’ambiguïté sur le décodage, mais comment s’assurer qu’un code sera uniquement déchiffrable ? Nous
allons voir une catégorie de codes qui possède naturellement cette propriété.
Une manière d’empêcher l’ambiguïté est de s’assurer qu’aucun mot du code ne peut être interprété comme
le début d’un autre mot du code. C’est le sens de la définition suivante.

III.2.7 Propriétés du préfixe

 On dit qu’un code C a la propriété du préfixe si pour tout couple de mots distincts
(c1, c2), c2 n’est pas un préfixe de c1.
Exemple : Sur l’alphabet binaire V = {0, 1}, le code C = {101000, 01, 1010} n’a pas la
Propriété du préfixe car 1010 est préfixe de 101000.
 Proposition: Tout code possédant la propriété du préfixe est uniquement déchiffrable.

III.2.8 Longueur moyenne d’un code


 On appelle source d’information un couple S = (S,P) constitué d’un alphabet S et d’une
distribution de probabilités P sur S.
Si : si Є S, P(si) est la probabilité d’occurrence de si.
S est dite sans mémoire si les événements sont indépendants.
Soit m un mot (de la source ou du code), on désigne par l(m) la longueur de ce mot.
Nous pouvons désormais définir la longueur d’un code en faisant une moyenne pondérée par les
probabilités des longueurs des mots du code :
 Soit S = (S = {s1, . . . , sn},P) une source d’information, C un code et f une fonction d’encodage de
S vers C.
On appelle longueur moyenne du code C la quantité

Exemple : On considère la source d’information supposée sans mémoire définie par


S = {a, b, c, d} et P = ( 1/ 2 , 1/4, 1/8 , 1/8). Calculer la longueur moyenne
des codes C1, C2 et C3 suivants définis sur V = {0, 1}.

21
(1) C1 = {f(a) = 00, f(b) = 01, f(c) = 10, f(d) = 11}
(2) C2 = {f(a) = 0, f(b) = 10, f(c) = 110, f(d) = 1110}
(3) C3 = {f(a) = 0, f(b) = 10, f(c) = 110, f(d) = 111}
Que peut-on conclure ?

III.2.9 Théorème de Shannon


Soit S = (S,P) une source d’information. On appelle entropie de S la quantité

où S = {s1, . . . , sn}, P = (p1, . . . , pn)


Cette quantité, mesure l’incertitude quand au comportement de la source S. Remarquons les propriétés
suivantes, qui permettent de mieux appréhender cette grandeur :
– H(S) est grande s’il y a beaucoup d’incertitude (cas d’équiprobabilité : H(S) = log2(n))
– H(S) est croissante avec n (i.e. plus il y a de symboles dans la source, plus l’entropie est importante)
– H(S) est faible si un symbole a une probabilité proche de 1
Théorème (Premier théorème de Shannon, 1948).
Soit S une source d’information sans mémoire d’entropie H. Tout code uniquement déchiffrable de S sur
un alphabet V de taille q, de longueur moyenne l, vérifie :

De plus, il existe un code uniquement déchiffrable de S sur un alphabet de taille q, de longueur moyenne l,
qui vérifie

Remarque:
 Sur l’alphabet binaire V = {0, 1}, on a q = 2, donc log2(q) = 1,
l’énoncé (i) devient donc H ≤ l et l’énoncé (ii) devient l < H + 1
 L’interprétation de ce théorème est que l’entropie d’une source est un bon objectif à essayer
d’atteindre pour la longueur moyenne d’un code : on ne pourra pas trouver mieux et on doit
pouvoir s’en approcher à 1 près.

III.3 Codes correcteurs et détecteurs d’erreurs

III.3.1 Principe général


Nous supposerons que le message à transmette est un mot m de l’alphabet binaire V = {0, 1}. Ce mot est
découpé en blocs de taille k fixée. Chaque bloc s est alors émis sur le canal de transmission et soumis à
des perturbations. Le message reçu s’ peut alors différer de s.

22
Le principe général de la détection et / ou correction d’erreurs est de rajouter de l’information qui nous
permettra de détecter voire corriger une ou plusieurs erreurs. On a donc le schéma suivant, avec r bits
ajoutés :

avec s’ = s si le code correcteur a corrigé toutes les erreurs.


 Cφ = { φ (s) | s Є V k} est appelé un code(n,k) et les φ (s) sont appelés les mots du code.

 Si on reçoit un mot qui n’est pas dans Cφ, c’est qu’il y a une erreur. Si on reçoit un mot du code,

et si φ est injective, alors on peut retrouver le mot envoyé sans ambiguïté.


 Le code est systématique si les k premiers bits du bloc codé sont égaux aux bits du bloc initial.

Alors les r (r=n-k) derniers bits forment un champ de contrôle d’erreur.

 Un code peut être systématique sur k positions: ie: il existe k positions i1; i2… ; ik telles que, par
restriction des mots du code à ces k positions, on obtient tous les mots du bloc initial
Exemple : Le code C = {0000; 0110; 1001; 1010} est systématique sur les positions 1 et 3 :

III.3.2 Rendement d’un code


On appelle rendement d’un code ou taux de code la quantité :

k : nombre de bits du bloc codé

n=nombre de bits du bloc codé après ajout des bits de redondance

Exemple 1 : Taux de code


L’information à transmettre est un des symboles {N, E, O, S}. Soit le tableau de correspondance suivant:

On rajoute ensuite de la redondance :


23
Et on construit un (5,4) code
L’information est codée sur k=2bits
La redondance est de r = 3 bits pour obtenir des mots de longueur n = k+r =5 → R=2/5

Un bon code sera un code avec un rendement proche de 1 (on ne rajoute pas trop d’information) et
capable de détecter voire corriger un grand nombre d’erreurs.

III.3.3 Premiers exemples de codes correcteurs/détecteurs d’erreurs


Contrôle de parité
On ajoute un bit de contrôle de sorte que le nombre de bits à 1 soit pair. On peut définir ce code de la
façon suivante :

Avec :

Si un nombre impair de bits est altéré, alors l’erreur est détectée.


Exemple : s = 0101001, alors φ(s) = 01010011 est le mot du code qui est envoyé. S’il y a une erreur
et que le message reçu est par exemple 11010011, on remarque qu’il y a un nombre impair de bits à 1, ce
qui signifie qu’il y a eu une erreur pendant la transmission.
Remarque :
o Ce code ne permet pas corriger l’erreur puisqu’il ne donne aucune indication sur son emplacement.
De plus, s’il y a deux erreurs, alors le mot sera accepté car l’erreur n’est pas détectée.
o Ce code est capable de détecter toutes les erreurs en nombre impair. Il ne détecte pas les erreurs
La capacité de détection (de correction) d’un code est définie par les configurations erronées
qu’il est capable de détecter (corriger). Une erreur simple (resp. double, ou d’ordre p) affecte une seule
(resp. 2, ou p) position(s) binaire(s) d’un mot

Code de parité longitudinale et transversale


Chaque caractère est codé sur une ligne d’un tableau, on effectue ensuite chaque bloc de k caractères, un
contrôle de parité sur chaque ligne et chaque colonne.
S’il y a une erreur, alors le bit de parité (parité paire) de la ligne et celui de la colonne correspondante
seront faux, donc l’erreur sera à la fois détectée et localisée, donc corrigée.
Exemple :
24
On reçoit le code suivant, auquel une double parité a été appliquée

Une erreur a été détectée dans la première ligne, mais également dans la quatrième colonne. Le bit (foncé
sur la figure) a donc été alteré, il faut le corriger en 0.
On obtient alors, en oubliant les bits de contrôle :

Remarque :
 S’il y a deux erreurs sur la même ligne (ou colonne), alors on ne peut plus corriger !
 Dans les transmissions de données, les erreurs apparaissent souvent par blocs.
 Le bloc de données est disposé sous une forme matricielle (k=a.b). On applique la parité
(uniquement paire) sur chaque ligne et chaque colonne. On obtient une matrice (a+1, b+1).

III.3.4 Nombres d’erreurs détectables et corrigibles :


Définitions : Un code (n, k) est dit t-détecteur (respectivement t-correcteur) s’il permet de détecter
(respectivement corriger) toute erreur portant sur t bits ou moins lors de la transmission d’un code de n
chiffres.
Exemple : le contrôle de parité sur 7 bits est un code (8, 7). Il est 1-détecteur et 0-correcteur, avec
un rendement R=7/8 = 87,5%.

 La distance de Hamming permet de caractériser le nombre d’erreurs que peut corriger un


code C de longueur n.
 En effet, soit m Є C un mot de n bits émis et soit m’ mot reçu, supposé différent
de m On peut alors faire les deux observations suivantes :

 Pour pouvoir détecter une erreur, il est nécessaire que , car sinon, le mot reçu est un

mot du code donc considéré comme correct.


 Une erreur sur t bits sera détectée si la distance minimale entre deux mots du code est
inférieure à t et corrigée si cette distance minimale est supérieure ou égale à 2t + 1.
 On peut également donner le critère suivant, qui dit qu’un code est t-correcteur s’il y a au
plus un seul mot du code à distance inférieure ou égale à t de tout mot :

Lors de la réception de m’, on peut corriger m’en m si on a :

25
ce qui signifie que la boule centrée en m’ de rayon dH(m’,m) ne contient qu’un mot du code : m.

Fig. La boule de centre m’ et de rayon dH (m’,m)


On peut alors donner une caractérisation pour un code t-correcteur.
c) Théorème
Soit C un code de longueur n. On définit δ(C), la distance minimale du code C par

Les propriétés suivantes sont équivalentes et impliquent que C est t-correcteur :

Remarque:
o Si C est un code t-correcteur, alors il est au moins 2t-détecteur.
o Un code de paramètres (n, M, 2e+1) peut corriger e erreurs peut aussi détecter 2 e erreurs
o Ex : L = {00000 ; 10111 ; 11010 ; 01101} est 2-détecteur et 1-correcteur

III.4 Matrice génératrice ; Matrice de contrôle et Syndrome

III.4.1 Matrice génératrice


 Soit C un [n; k]-code. On appelle matrice génératrice de C, toute matrice G de dimension (k, n)
dont les lignes forment une base de C. On a alors :
C = {x*G, x Є (Fq)k }
 Les codes linéaires sont des codes dont chaque mot du code (noté c) est obtenu après
transformation linéaire des bits du mot initial (noté m). Ces codes sont ainsi caractérisés par leur
matrice génératrice G (k, n) telle que : m.G = c
Exemple :

Pour un même code il existe de nombreuses matrices génératrices.


26
I.4.2 Matrice de contrôle
 Soit C un [n; k]-code. On appele code dual de C, le code C = {x Є (Fq)n , x.c = 0, c Є C}.
C est un [n; n-k]-code linéaire
 La matrice H (n-k, n), génératrice de C est appelée matrice de contrôle ou matrice de test du
code linéaire C. elle permet de savoir si un mot reçu est un mot du code
III.4.3 Syndrome
 Soit C un [n; k]-code linéaire de matrice de contrôle H. Soit x un élément de (Fq) n. On appelle
syndrome de x, le mot x Ht
Cette définition permet d'introduire l'application linéaire s suivante :

 en calculant son syndrome. Si le syndrome du mot est nul, ce mot appartient au code.
Soit x Є C, alors. s (x) = 0 : donc C= ker (s)
 Soit un mot reçu c : c Ht = 0(n-k) c Є C (k, n)
t
 L’équation G H = 0 définit la relation entre les deux matrices.
t
En effet : c H = i. G. Ht = i. 0 = 0

III.4.4 Forme standard des matrices génératrice et de contrôle

 Tout [n; k]-code linéaire a une matrice génératrice de la forme G (k, n) = (Ik | A (k, n-k)), dite standard,
où Ik désigne la matrice unité de dimension k.
 Sa matrice de contrôle s’écrit : H (n-k, n) = (At (n-k, k) | In-k), où At est la transposée de A
Exemple : La matrice génératrice suivante est sous forme standard (pivot de Gauss)

(étape1 : L1 ; L2 ; L3 L2+L3 ; étape2 : L1 ; L2 L2+L3 ; L3)

Sa matrice de contrôle est :

A partir de H, on obtient les mots du code dual C :

27
III.6 Décodage

III.6.1 Position du problème


 Etant donnée que x Є C est le “message transmis”,
 que x est perturbée dans un canal bruité par l’erreur e Є (F2) n
 que y = x + e, le “message reçu”, est le seul mot auquel le décodeur a accès,
le problème du décodage est de retrouver x à partir de y.
Un algorithme de décodage de C devra donc prendre comme argument un élément de
(F2) n, et s’il se termine, rendre un élément du code C. Il devra également être déterministe,
c’est-a-dire qu’un mot de l’espace (F2) n , sera toujours décodé de la même manière.

Définition
Soit un code linéaire C (n, k, d) sur (F2) n, un algorithme de décodage d’erreur de C est une application :

Telle que x Є C, γ(x) = x. Le fait que γ (y) = signifiant que y n’a pas été décodé
 Le syndrome de y est le vecteur de (F2) n-k
 H (Matrice de contrôle) induit une relation d’équivalence sur (F2) n

III.6.2 Décodage par tableau standard


On définit la classe de x Є (F2) n, notée Cx ou x + C, par : Cx = {x + c | c Є C}
Soit x le mot reçu. Le décodage par distance minimale requiert que l'on décode x par le mot de code c
pour lequel e = x - c a le poids le plus faible.
Étant donné que c varie dans C, e est un élément de Cx. Le vecteur d'erreur e a donc le même
syndrome que x.
Un tableau standard pour un code linéaire [n, k, dmin] est une table listant tous les vecteurs x pouvant
être reçuu (après transmission d’un mot de code). Le tableau est construit pour pouvoir lire pour chaque
vecteur y le plus proche mot de code c.
Mode de Construction
 1. La première ligne comporte les mots de C
28
 2. La ligne j est constituée des ej + C, où ej est un mot sélectionné de plus petit poids ne
se trouvant pas dans les j - 1 lignes précédentes
 3. Le processus est itéré jusqu'à ce que tous les mots de (Fq)n soient représentés

Exemple
Soit C un [4; 2]-code linéaire binaire défini par la matrice génératrice

On a donc :

Ceci nous conduit au tableau standard suivant :

Inconvénient : beaucoup d’espace mémoire occupé, car tous les mots de (Fq)n sont
représentés
III.6.3 décodage par syndrome
Les mots d'une même ligne du tableau standard ont même syndrome
 construction d'une table de représentants et de syndromes :

 Le calcul du syndrome d'un mot reçu x désigne son représentant ei. Le décodage s'effectue en
calculant x - ei
 Chaque ligne est ce que l’on appelle un coset (classe) et correspond à l’ensemble des mots de code
ayant subi la même erreur : Ri = {c + ei |c Є C}

29
 Un coset (classe) est également l’ensemble des mots ayant le même syndrome.
 Le leader du coset (chef de classe) est le vecteur ei.
 Exemple
On considère le code linéaire C défini par la matrice génératrice G :

On suppose que x = 1110 a été reçu. Le calcul de son syndrome donne

Le représentant de la classe est donc 1010 et l'on obtient c = 1110 - 1010 = 0100
III.6.4 décodages de codes à répétition

Un code à répétition est un code constitué de deux mots : (0 . . . 0) et (1 . . . 1) de longueur


n qui codent respectivement les symboles “0” et “1”.
Un algorithme de décodage possible pour ce code est le décodage dit majoritaire : une séquence de n
symboles binaires sera décodée par “0” si elle comporte une majorité de “0” dans son écriture, et par “1”
sinon.
III.6.5 Décodage à vraisemblance maximale

Soit un canal de transmission (X, Y, П) : l’alphabet d’entrée est X = {x1, . . . , xi} et de


sortie Y= {y1, . . . , yj}, la loi d’émission est p1, . . . , pi, où pi = P(xi) pour tout i . La
matrice stochastique П (Пij=P (yj|xi))
Définition
Soit C un code de longueur n sur X. Un algorithme de décodage de C à vraisemblance maximale est une
procédure de décodage Yn → C Є Xn qui à tout élément de y Є Yn associe l’élement de x Є C réalisant le
maximum de P (y|x).

Proposition
Dans un canal binaire symétrique de probabilité de transition p < 1/2, P (y | x) est une fonction
décroissante de dH (y, x).
preuve : Soient x = (x1, . . . , xn) et y = (y1, . . . , yn), on a :

30
P (y | x) = P (yi | xi) = p (1-p) = (1-p) ( )

III.7 Quelques classes de codes

III.7.1 Codes polynomiaux


a) Présentation
 Notation : tout vecteur peut être présenté sous une forme polynômiale :
U = <un, un-1, un-2,...,u1, u0> U(x) = u0+u1.x+u2.x2+...+un.xn
Attention : les opérations sont binaires (construits sur le corps Z/2Z) : 1.x + 1.x = 0.x !
 Un code polynômial est un code linéaire systématique dont chacun des mots du code est un
multiple du polynôme générateur (noté g(x)) les lignes de la matrice génératrice sont
engendrées par le polynôme générateur.
 Le degré du polynôme définit la longueur du champ de contrôle d’erreur.
b) Exemples de codes polynômiaux :
(i) L’avis V41 du CCITT conseille l’utilisation de codes polynômiaux (de longueurs n =
260, 500, 980 ou 3860 bits) avec le polynôme générateur G(x) = x16 + x12 + x5 + 1.
(ii) Le polynôme CRC-16 est utilisé par le protocole HDLC : G(x) = x16 + x15 + x2+ 1.
(iii) Le polynôme suivant est utilisé par Ethernet :
G(x) = x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+1.

c) Capacité de détection des erreurs

 Un code polynômial (k, n) dont le polynôme générateur a plus d’un coefficient non-nul (donc il ne
divise pas xi, i<n) permet de détecter toutes les erreurs simples.
 Si le polynôme générateur d’un code polynômial (k, n) a un facteur irréductible de trois termes (il
ne divise ni xi ni 1 + xj-i, i<j<n), le code permet de détecter les erreurs doubles.
 Pour qu’un code polynômial détecte toutes les erreurs d’ordre impair, il suffit que son
polynôme générateur ait (x+1) comme facteur.

d) Capacité de détection des paquets d’erreurs


 Un code polynômial (k, n) permet de détecter toutes les erreurs d’ordre l ≤ n-k (c’est-à-dire inférieur
au degré du polynôme générateur).
 Et la probabilité de ne pas détecter les erreurs d’ordre l>n-k est très faible et égale à : 2-(n-k)
e) Principe du codage

31
 Le mot de code m(x) d’un code polynômial (k, n) de polynôme générateur g(x) associé au mot
initial i(x) est défini par : m(x) = i(x). xn-k + r(x), où r(x) est le reste de la division de i(x).xn-k
par le polynôme générateur g(x).
 Remarques :
(i) Les r = n-k bits de r(x) (de degré ≤ n-k-1) forment les bits du champ de contrôle.
(ii) Les bits de poids fort (de degré > n-k-1) forment le mot initial (code systématique)
(iii) L’opération de codage effectuée à l’émission est ramenée à une division polynômiale,
qui peut être réalisée simplement (électroniquement).
b) Principe du décodage
 A la réception, chaque mot reçu m’(x) est divisé par le polynôme générateur g(x).
 Un reste non-nul indique qu’il y a eu erreur lors de la transmission.
 Syndrome de m’(x) : m’(x)/g(x) ≠ 0 → Erreur !
 Attention : la réciproque est fausse ! Si le reste est nul cela ne veut pas dire qu’il n’y a pas eu
d’erreurs → subsistance d’erreurs dites résiduelles.

III.7.2 Codes cycliques

 Un code cyclique (k, n) est un code linéaire (k, n) tel que toute permutation circulaire d’un mot du
code est encore un mot du code.

Exemple :
Un code cyclique (1, 2) possède les mots de code suivants : {01, 10} ou {00, 11}, mais
pas {01, 11}.
Un code cyclique (1, 3) possède les mots de code suivants : {000, 111}.
 On appelle période du polynôme H(x) le plus petit entier u tel que H(x) divise xu+1
 Un polynôme est irréductible s’il ne possède aucun diviseur de degré supérieur à zéro
 Si la période d’un polynôme irréductible est égale à n-k alors le polynôme est dit primitif.

III.7.3 Codes de Hamming

Les codes de Hamming sont caractérisés par trois paramètres :


 Une longueur définie par le polynôme irréductible et primitif

 La distance de Hamming , t étant le nombre d’erreurs corrigibles. Il est égal à


l’unité pour tous les codes de Hamming (n, k, d)

 La taille des données utiles

Exemple: n = 12, k = 8

32
La donnée initiale est 0110 1110
On a 3 bits contrôle : f1, f2, f4 et f8. (ils correspondent aux positions 2i)

Les bits qui ne sont pas des bits de contrôle s'obtiennent très facilement : il suffit de reporter la donnée
initiale. Ainsi sur notre exemple :

f12 f11 f10 f9 f8 f7 f6 f5 f4 f3 f2 f1


0 1 1 0 1 1 1 0

Il nous reste donc à trouver la valeur des bits de contrôle. Pour les trouver nous allons former des
ensembles de bits. Pour trouver les ensembles de bits il faut au préalable écrire les entiers de 1 à 12 en
base 2 sur 4 bits.

0001 ===> 1
0010 ===> 2
0011 ===> 3
0100 ===> 4
0101 ===> 5
0110 ===> 6
0111 ===> 7
1000 ===> 8
1001 ===> 9
1010 ===> 10
1011 ===> 11
1100 ===> 12

Que nous plaçons dans un tableau, pour plus de clareté avec les explications qui suivront :

i--4 3 2 1
j | | | |
1 -- 0 0 0 1
2 -- 0 0 1 0
3 -- 0 0 1 1
4 -- 0 1 0 0
5 -- 0 1 0 1
6 -- 0 1 1 0
7 -- 0 1 1 1
8 -- 1 0 0 0
9 -- 1 0 0 1
10 -- 1 0 1 0
11 -- 1 0 1 1
12 -- 1 1 0 0

i = rang du bit, j = numéro de ligne

Nous allons maintenant construire 4 ensembles de bits notés E1, E2 ... E4. Pour construire Ei, on regarde la
colonne i à partir de la droite. S'il y a un 1 dans colonne i sur la ligne j alors le bit fj appartiendra à
l'ensemble Ei.
Dans notre exemple, pour construire E 1, nous allons regarder la colonne la plus à droite on trouve un 1 sur
les lignes 1, 3, 5, 7, 9 et 11. On trouve donc :
E1 = { f1 , f3, f5, f7 , f9, f11 }
De la même manière, on trouve :
E2 = { f2 , f3, f6, f7 , f10, f11 }
E3 = { f4 , f5, f6, f7 , f12 }
E4 = { f8 , f9, f10, f11 , f12}
Nous allons maintenant reporter dans chaque ensemble les valeurs que nous avions trouvées :
f12=0
f11=1
f10=1
f9=0
33
f7=1
f6=1
f5=1
f3=0

On obtient :
E1 = { f1 , 0, 1, 1, 0, 1}
E2 = { f2 ,0 , 1, 1, 1, 1 }
E3 = { f4 ,1 , 1, 1 , 0 }
E4 = { f8 ,0 , 1, 1, 0}

On s'aperçoit que dans chaque ensemble il y a un et un seul bit inconnu. Nous allons déterminer ce bit de
manière à ce que dans chaque ensemble de bits le nombre de bits à 1 soit pair. On trouve donc :
f1=1 = f3 + f5 + f7 + f9 + f11
f2=0 = f3+ f6 + f7 + f10 + f11
f4=1 = f4 + f5 + f6 + f7 + f12
f8=0 = f8 + f9 + f10 + f11 + f12

f12 f11 f10 f9 f8 f7 f6 f5 f4 f3 f2 f1


0 1 1 0 0 1 1 1 1 0 0 1

Vérification et correction du code de Hamming

Lorsqu'on récupère une donnée obtenue grâce au codage de Hamming, deux questions naturelles vont se
poser :

 la donnée a-t-elle été altérée ?


 si oui, quelle est la correction proposée par le code de Hamming ?

La méthode pour répondre à ces deux questions est la suivante :

 construire les t ensembles de bits Ei.


 calculer t bits selon la règle suivante ei=0 si le nombre de bits à 1 dans Ei est pair sinon ei=1. Si
aucune erreur ne s'est produite tous les bits ei doivent être nuls.
 calculer E=(et ...e1)2.
 Si E est nul alors on en déduit qu'il n'y a pas eu d'erreur.
 si E n'est pas nul, une erreur s'est produite et le code de Hamming propose la correction suivante :
inverser la valeur du bit fE.
 on récupère ensuite aisément la valeur de la donnée initiale en supprimant les bits de contrôle.

Exemple : on récupère la donnée 0111 0111 1001, le bit en rouge signalant l'erreur.

On a donc :

f12 f11 f10 f9 f8 f7 f6 f5 f4 f3 f2 f1


0 1 1 1 0 1 1 1 1 0 0 1

On construit les ensembles de bits :


E1 = { f1 , f3, f5, f7 , f9, f11 } ={ 1 , 0, 1, 1, 1, 1} ==> le nombre de 1 (5) est impair ==> e1=1
E2 = { f2 , f3, f6, f7 , f10, f11 } = { 0 ,0 , 1, 1, 1, 1 } ==> le nombre de 1 (4) est pair ==> e2=0
E3 = { f4 , f5, f6, f7 , f12 } = { 1 ,1 , 1, 1 , 0 } ==> le nombre de 1 (4) est pair ==> e3=0
E4 = { f8 , f9, f10, f11 , f12} ={ 0 ,1 , 1, 1, 0} ==> le nombre de 1 (5) est impair ==> e4=1

E s'écrit donc en base 2 (e4e3e2e1) soit (1001). E vaut donc 9. Il y a donc eu une erreur: la correction
propose d'inverser la valeur de bit f9. f9 valait 1 : nous allons donc changer sa valeur en 0.
34
La donnée corrigée est donc :

f12 f11 f10 f9 f8 f7 f6 f5 f4 f3 f2 f1


0 1 1 0 0 1 1 1 1 0 0 1

En enlevant les bits f8, f4, f2 et f1, on obtient donc la donnée initiale après correction soit

0110 1110

III.8 Techniques de Correction par retransmission

III.8.1 Techniques de détection des erreurs


L’écho permet de s’assurer que le récepteur a reçu correctement les informations émises.

Exemple : technique utilisée sur les liaisons (asynchrones) entre les ordinateurs et les périphériques par
caractères !

Peu utilisé car très mauvais rendement et délai important


III.8.2 Techniques d’autocorrection par repétition
Les informations à transmettre sont répétés plusieurs fois. Au moins un des exemplaires (redondants) sera
correctement reçu. Très mauvais rendement.

III.8.3 Technique de correction par retransmission


Principe de fonctionnement
 L’émetteur conserve une copie des données qu’il envoie.
 Le récepteur détecte les erreurs grâce à la présence d’un champ de contrôle d’erreur (code
polynômial) dans les paquets de données.
 Le récepteur informe l’émetteur de la bonne (resp. mauvaise) réception en lui retournant un paquet
spécifique : acquittement positif (resp. négatif) souvent appelé ACK (resp. NACK)
 Dans le cas d’un acquittement négatif, l’émetteur doit réémettre le paquet erroné, sinon il peut
émettre le prochain paquet.
Protocole “Send and wait”
o Un temporisateur bornant la durée d’attente des acquittements est nécessaire pour assurer la
correction du mécanisme lors des pertes de paquets de données.
o L’identification (numérotation) des paquets (de données et d’acquittement) est nécessaire pour
assurer la correction du mécanisme lors des pertes d’acquittement
Exemple de fonctionnement
35
Communication bidirectionnelle :
Son rendement très faible :
o si le temps de transmission Tt est faible vis-à-vis du temps de propagation Tp.
o car la liaison est inutilisée lorsque l’émetteur attend l’acquittement.

III.9 Autre technique de correction d’erreurs: l’entrelassement


On peut illustrer le principe qui sous-tend les codes récurrents par une technique simple : l’entrelacement.
 L’idée est de répartir les bits consécutifs des blocs formant le message à transmettre dans des
paquets différents.
 Ainsi grâce à cet entrelacement, un groupe d’erreurs (affectant un paquet) affecte uniquement
quelques bits dans plusieurs blocs.
 La technique de protection contre les erreurs appliquée aux blocs est à même de corriger
indépendamment ces quelques bits erronés dans chacun de ces blocs.

En résumé :
Mécanismes de base de protection contre les erreurs :
 détection,
 autocorrection,

36
 retransmission
Amélioration de la fiabilité de la communication, mais (bien qu’avec une faible probabilité) :
 certaines configurations d’erreur ne sont pas détectées !
 certaines configurations d’erreur ne peuvent pas être corrigées !
 certaines configurations d’erreur sont mal corrigées !
Ces mécanismes sont présents au sein de nombreuses couches (protocoles), parmi lesquelles on peut citer :
 Liaison de données (ex. Ethernet, Token Ring, FDDI, HDLC)
 Réseau (ex. IP)
 Transport (ex. TP4, TCP, UDP)
 et d’autres.

Travaux dirigés
I) On considère des mots de 3 bits et un codage linéaire de matrice G. Déterminer les mots codés.

Solution
Il y a 3 bits utiles et 1 bit de contrôle, soit 4 bits pour un mot du code. La relation Y~=X~G permet de
déterminer l'algorithme de calcul du bit de contrôle

:
Donc on aura le codage suivant :

II) Un code utilise le polynôme générateur x2 + x + 1. Quel est l'encodage du message11011?

H(z)=z2+z+1 : le degré de ce polynôme est 2, donc il y a 2 bits de contrôle. Par ailleurs le mot utile
proposé comporte 5 bits, donc le code porte sur des mots utiles de m=5 bits. On en déduit le nombre de
bits des mots codés : n=7.

37
Ainsi le mot 11011 est codé 1101100.

III)

Un flux binaire 10011101 est transmis avec la méthode CRC. Le générateur polynomial est
x3 + 1.
a) Quelle est la chaîne binaire réellement transmise ?
b) Si le troisième bit à partir de la gauche est inversé durant la transmission, est-il détecté par le
destinataire ?
c) Pourquoi les protocoles de liaison de données placent-ils toujours le CRC en fin de trame et jamais
au début ?
Solution
Le générateur vaut 1001. Le polynôme obtenu après ajout de trois 0 à la trame est
10011101000. Le reste de la division du polynôme par le générateur est 100. La chaîne de bits
effectivement transmise par l’émetteur est :
a) 10011101100.
b) Si le flux binaire reçu présente une erreur sur le 3e bit, est 10111101100. En divisant ce polynôme
par 1001, on obtient 100 comme reste (donc différent de 0).
Le récepteur détecte donc l’erreur et demande retransmission
c) De cette manière, le CRC peut être calculé pendant la transmission, ce qui améliore les
performances (sinon il faudrait le calculer avant de commencer à envoyer). De même, au niveau du
récepteur, le CRC est calculé au fur et à mesure de la réception des bits.

38
39

Vous aimerez peut-être aussi