Académique Documents
Professionnel Documents
Culture Documents
THEORIEDE
DEL’INFORMATION
L’INFORMATIONET
ETDU
DU
CODAGE
CODAGE
1
Objectifs
Programme
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.
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.
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 :
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)
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
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 :
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.
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).
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.
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 »
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)
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.
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
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
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.
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.
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.
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 ?
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.
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 :
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,
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 :
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.
Avec :
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).
Pour pouvoir détecter une erreur, il est nécessaire que , car sinon, le mot reçu est un
25
ce qui signifie que la boule centrée en m’ de rayon dH(m’,m) ne contient qu’un mot du code : m.
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
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
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)
27
III.6 Décodage
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
Exemple
Soit C un [4; 2]-code linéaire binaire défini par la matrice génératrice
On a donc :
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 :
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
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) ( )
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.
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.
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.
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 :
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
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
Lorsqu'on récupère une donnée obtenue grâce au codage de Hamming, deux questions naturelles vont se
poser :
Exemple : on récupère la donnée 0111 0111 1001, le bit en rouge signalant l'erreur.
On a donc :
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 :
En enlevant les bits f8, f4, f2 et f1, on obtient donc la donnée initiale après correction soit
0110 1110
Exemple : technique utilisée sur les liaisons (asynchrones) entre les ordinateurs et les périphériques par
caractères !
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 :
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