Communication Num´ erique
Codes correcteurs d’erreurs
Yoann Morel
http://xymaths.free.fr/Signal/Communication-Numerique-cours-TP.php
Communication Num´erique
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Introduction
D´efinition
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Introduction
D´efinition
Introduction
D´efinition
Un code correcteur d’erreurs est une technique de codage bas´ee sur la redondance de l’information, destin´ee `a d´etecter, voire corriger, les erreurs qui peuvent-ˆetre g´en´er´ees par un canal de communication peu fiable.
L’origine de la th´eorie des codes peut-ˆetre situ´ee en 1947 par Richard W. Hamming, utilisant un ordinateur d´evelopp´e aux laboratoires Bell,
“Two weekends in a row I came in and found that all my stuff had been dumped and nothing was done. I was really aroused and annoyed because I wanted those answers and two weeks had been lost. And so I said,
“Damn it, if the machine can detect an error, why can’t it locate the position of the error and correct it ?””
Communication Num´erique Introduction
D´efinition
Introduction
D´efinition
Un code correcteur d’erreurs est une technique de codage bas´ee sur la redondance de l’information, destin´ee `a d´etecter, voire corriger, les erreurs qui peuvent-ˆetre g´en´er´ees par un canal de communication peu fiable.
La d´etection d’une erreur dans un message peut sembler naturelle ; sa localisation pr´ecise et sa correction sont quant `a elles moins ´evidentes.
L’origine de la th´eorie des codes peut-ˆetre situ´ee en 1947 par Richard W. Hamming, utilisant un ordinateur d´evelopp´e aux laboratoires Bell,
“Two weekends in a row I came in and found that all my stuff had been dumped and nothing was done. I was really aroused and annoyed because I wanted those answers and two weeks had been lost. And so I said,
“Damn it, if the machine can detect an error, why can’t it locate the position of the error and correct it ?””
Introduction
D´efinition
Un code correcteur d’erreurs est une technique de codage bas´ee sur la redondance de l’information, destin´ee `a d´etecter, voire corriger, les erreurs qui peuvent-ˆetre g´en´er´ees par un canal de communication peu fiable.
La d´etection d’une erreur dans un message peut sembler naturelle ; sa localisation pr´ecise et sa correction sont quant `a elles moins ´evidentes.
L’origine de la th´eorie des codes peut-ˆetre situ´ee en 1947 par Richard W. Hamming, utilisant un ordinateur d´evelopp´e aux laboratoires Bell,
“Two weekends in a row I came in and found that all my stuff had been dumped and nothing was done. I was really aroused and annoyed because I wanted those answers and two weeks had been lost. And so I said,
“Damn it, if the machine can detect an error, why can’t it locate the position of the error and correct it ?””
Communication Num´erique Introduction
Position du probl`eme
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Introduction
Le rˆole du correcteur d’erreurs peut-ˆetre limit´e `a lasimple d´etection (et localisation . . .) d’erreurs.
La correction s’effectue alors par une nouvelle requˆete de transmission du message, ou seulement des parties erron´ees.
• Cas du protocole TCP
• sommes de contrˆole (checksum)
• Cela peut se r´ev´eler insuffisant, ou inadapt´e suivant le contexte (GSM par exemple)
Communication Num´erique Introduction
Position du probl`eme
Introduction
Deux situations principales peuvent se pr´esenter :
• Pr´esence de petites erreurs relativement fr´equentes et isol´ees.
, →
Ex : T´el´ecommunication, communication perturb´ee par un bruit additif al´eatoire• Pr´esence d’erreurs peu fr´equentes, mais plus volumineuses
, →
Ex : CD : norme Philips permet de corriger jusqu’`a 4096 bits erron´es cons´ecutifs (rayure de environ 1 mm de large)• Effacement de caract`ere(s) : un bit n’est pas alt´er´e, mais simplement supprim´e.
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Introduction
Exemples
1
erexemple : Code ` a r´ ep´ etitions
Il s’agit de la mani`ere la plus “na¨ıve” d’aborder le probl`eme : si la transmission d’un mot peut-ˆetre entach´ee d’erreur(s), il n’y a qu’`a le transmettre directement plusieurs fois !
Supposons que l’on ait 4 messages `a envoyer : 00, 01, 10 et 11 (ou que l’on ait pr´ealablement d´ecoup´e le message initial en blocsde 2 bits).
Pour augmenter nos chances de recevoir un message correct, on peut encoder nos 4 mots suivant :
mot original mot cod´e
00 00 00 00
01 01 01 01
10 10 10 10
11 11 11 11
1
erexemple : Code ` a r´ ep´ etitions
S’il survient une erreur dans la transmission, elle n’affectera pas les trois couples formant le mot du code.
Le d´ecodage peut donc se faire par vote majoritaire sur les 3 couples de bits.
Pour ce code `a r´ep´etition, le taux d’information est seulement 33 % (33 % des bits transmis correspondent `a de l’information), tandis que 66 % ont pour seul but la protection de cette information.
Communication Num´erique Introduction
Exemples
2
`emeexemple : Code ` a r´ ep´ etition am´ elior´ e
Un autre exemple de codage est le suivant :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
Supposons que le mot re¸cu soity= 01001.
Ce mot ne correspond `a aucun mot du code : il comporte donc une, ou plusieurs, erreurs.
L’id´ee de la correction est de rechercher parmi tous les mots du code celui qui est le “plus proche” :
Ecart mot re¸cu/mot du code Poids de l’erreur
y−00 000 = 01001 2
y−01 101 = 00100 1
y−10 110 = 11111 5
y−11 011 = 10010 2
On choisit
donc
l’estimation yˆ = 01
101, et
donc xˆ=01
Communication Num´erique Introduction
Exemples
2
`emeexemple : Code ` a r´ ep´ etition am´ elior´ e
Un autre exemple de codage est le suivant :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
Supposons que le mot re¸cu soit y= 01001.
il comporte donc une, ou plusieurs, erreurs.
L’id´ee de la correction est de rechercher parmi tous les mots du code celui qui est le “plus proche” :
Ecart mot re¸cu/mot du code Poids de l’erreur
y−00 000 = 01001 2
y−01 101 = 00100 1
y−10 110 = 11111 5
y−11 011 = 10010 2
On choisit
donc
l’estimation yˆ = 01
101, et
donc xˆ=01
Communication Num´erique Introduction
Exemples
2
`emeexemple : Code ` a r´ ep´ etition am´ elior´ e
Un autre exemple de codage est le suivant :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
Supposons que le mot re¸cu soit y= 01001.
Ce mot ne correspond `a aucun mot du code : il comporte donc une, ou plusieurs, erreurs.
L’id´ee de la correction est de rechercher parmi tous les mots du code celui qui est le “plus proche” :
Ecart mot re¸cu/mot du code Poids de l’erreur
y−00 000 = 01001 2
y−01 101 = 00100 1
y−10 110 = 11111 5
y−11 011 = 10010 2
On choisit
donc
l’estimation yˆ = 01
101, et
donc xˆ=01
Communication Num´erique Introduction
Exemples
2
`emeexemple : Code ` a r´ ep´ etition am´ elior´ e
Un autre exemple de codage est le suivant :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
Supposons que le mot re¸cu soit y= 01001.
Ce mot ne correspond `a aucun mot du code : il comporte donc une, ou plusieurs, erreurs.
L’id´ee de la correction est de rechercher parmi tous les mots du code celui qui est le “plus proche” :
Ecart mot re¸cu/mot du code Poids de l’erreur
y−00 000 = 01001 2
y−01 101 = 00100 1
y−10 110 = 11111 5
y−11 011 = 10010 2
On choisit
l’estimation yˆ = 01
101, et
donc xˆ=01
Communication Num´erique Introduction
Exemples
2
`emeexemple : Code ` a r´ ep´ etition am´ elior´ e
Un autre exemple de codage est le suivant :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
Supposons que le mot re¸cu soit y= 01001.
Ce mot ne correspond `a aucun mot du code : il comporte donc une, ou plusieurs, erreurs.
L’id´ee de la correction est de rechercher parmi tous les mots du code celui qui est le “plus proche” :
Ecart mot re¸cu/mot du code Poids de l’erreur
y−00 000 = 01001 2
y−01 101 = 00100 1
y−10 110 = 11111 5
y−11 011 = 10010 2
On choisit
donc
l’estimation yˆ = 01
101, et
donc xˆ=01
2
`emeexemple : Code ` a r´ ep´ etition am´ elior´ e
Remarques :
• Si on avait eu 2, ou plus, erreurs de mˆeme poids, on n’aurait pas ´et´e en mesure de d´eterminer lemot le plus proche.
• En regardant d’un peu plus pr`es, tous les mots du code diff`erent d’au moins 3 bits, et ce code permet donc de corriger de mani`ere certaine une erreur unique.
• On ne peut pas corriger avec ce code des mots contenant 2 erreurs, et encore moins 3 erreurs (qui peuvent alors n’ˆetre mˆeme pas d´etect´ees !)
• Le coˆut de ce code est de3/5 = 60 %d’occupation `a la protection de l’information
(le taux d’information est de 2/5 = 40 %)
Communication Num´erique Introduction
Exemples
3
`emeexemple : Code de parit´ e
Supposons que l’on ait des mots de 7 bits `a envoyer (code ASCII par exemple), et que l’on s’int´eresse simplement `a la d´etection d’une erreur.
Un moyen et de coder chacun des mots sur 8 bits, en ajoutant un 8`eme bit, appel´e bit de parit´e, de telle sorte que dans tous les mots le nombre de 1 soit pair.
Par exemple,
1011001 est cod´e 10110010 0110100 est cod´e 01101001
D’une mani`ere g´en´erale, un mot du code est de la forme x= [u1u2u3u4u5u6u7p]
o`u X
ui=u1+u2+u3+u4+u5+u6+u7+p≡0 [2]
ou encore p≡X
ui [2]
3
`emeexemple : Code de parit´ e
Supposons que l’on ait des mots de 7 bits `a envoyer (code ASCII par exemple), et que l’on s’int´eresse simplement `a la d´etection d’une erreur.
Un moyen et de coder chacun des mots sur 8 bits, en ajoutant un 8`eme bit, appel´e bit de parit´e, de telle sorte que dans tous les mots le nombre de 1 soit pair.
Par exemple,
1011001 est cod´e 10110010 0110100 est cod´e 01101001
D’une mani`ere g´en´erale, un mot du code est de la forme x= [u1u2u3u4u5u6u7p]
o`u X
ui=u1+u2+u3+u4+u5+u6+u7+p≡0 [2]
ou encore p≡X
ui [2]
Communication Num´erique Introduction
Exemples
3
`emeexemple : Code de parit´ e
Supposons que l’on ait des mots de 7 bits `a envoyer (code ASCII par exemple), et que l’on s’int´eresse simplement `a la d´etection d’une erreur.
Un moyen et de coder chacun des mots sur 8 bits, en ajoutant un 8`eme bit, appel´e bit de parit´e, de telle sorte que dans tous les mots le nombre de 1 soit pair.
Par exemple,
1011001 est cod´e 10110010 0110100 est cod´e 01101001
D’une mani`ere g´en´erale, un mot du code est de la forme x= [u1u2u3u4u5u6u7p]
o`u X
ui=u1+u2+u3+u4+u5+u6+u7+p≡0 [2]
ou encore p≡X
ui [2]
• Ce code permet de d´etecter une erreur, ou 3 erreurs ou 5 erreurs, ou 7 erreurs, mais pas 2, 4 ou 6 erreurs.
• De plus, ce code ne permet pas la localisation de l’erreur, et donc pas sa correction.
• Par contre, ce code permet de r´etablir un caract`ere effac´e !
4
`emeexemple : Code ISBN
Le code ISBN (InternationalStandardBook Number) est un code permettant d’identifier un livre.
Il utilise l’alphabet{0; 1; 2; 3; 4; 5; 6; 7; 8; 9;X}
Seuls les 9 premiers caract`eres permettent d’identifier le livre, le 10`eme servant `a contrˆoler la validit´e du code (de mˆeme que la cl´e d’un RIB, o`u les 2 derniers chiffres d’un num´ero de s´ecurit´e sociale, ou encore pour un num´ero de carte bancaire . . .)
Par exemple, le premier caract`ere permet d’identifier la langue de l’ouvrage (0 pour l’anglais, 2 pour le fran¸cais . . .), tandis que les deux num´eros suivants identifient l’´editeur.
Communication Num´erique Introduction
Exemples
4
`emeexemple : Code ISBN
Le10`eme caract`ere se d´etermine suivant :
c10≡
9
X
i=1
i ci [11] ou encore,
10
X
i=1
i ci≡0 [11]
Le code ISBN permet de :
• d´etecter s’il y a au moins une erreur dans le num´ero
• retrouver un num´ero effacer
• d´etecter une transposition de 2 caract`eres
Ex : Le num´ero ISBN suivant est-il valide ? 2 - 70 - 42 1030 - 6 Ex : Retrouver le chiffre manquant : 0 - 201 - 1 - 502 - 7
4
`emeexemple : Code ISBN
Le10`eme caract`ere se d´etermine suivant :
c10≡
9
X
i=1
i ci [11] ou encore,
10
X
i=1
i ci≡0 [11]
Le code ISBN permet de :
• d´etecter s’il y a au moins une erreur dans le num´ero
• retrouver un num´ero effacer
• d´etecter une transposition de 2 caract`eres
Ex : Le num´ero ISBN suivant est-il valide ? 2 - 70 - 42 1030 - 6 Ex : Retrouver le chiffre manquant : 0 - 201 - 1? - 502 - 7
Communication Num´erique Introduction
Exemples
4
`emeexemple : Code ISBN
Le10`eme caract`ere se d´etermine suivant :
c10≡
9
X
i=1
i ci [11] ou encore,
10
X
i=1
i ci≡0 [11]
Le code ISBN permet de :
• d´etecter s’il y a au moins une erreur dans le num´ero
• retrouver un num´ero effacer
• d´etecter une transposition de 2 caract`eres
Ex : Le num´ero ISBN suivant est-il valide ? 2 - 70 - 42 1030 - 6 Ex : Retrouver le chiffre manquant : 0 - 201 - 13- 502 - 7
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Canal binaire sym´ etrique sans m´ emoire
- Xk
Codage
h(t) -
L
?Bruit AGB
-
Filtre adapt´e
h(−t) @@ -
kT D´ecision - Yk
Xk et Yk prennent leurs valeurs dans l’alphabet {0,1}
La probabilit´e d’erreurs est :
p=P(Yk = 1|Xk= 0) =P(Yk= 0|Xk= 1) =erfc r εb
N0
La probabilt´e d’erreur ne d´epend pas de l’instantk d’utilisation du canal : le canal est dit sans m´emoire
Communication Num´erique G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire
Canal binaire sym´ etrique sans m´ emoire
On peut alors repr´esenter la chaˆıne de transmission entreXk etYk par le sch´ema :
Xk
- -
* HH
HH HHj
p 1−p
1−p Yk
Tout se passe comme siXk ´etait soumis `a un bruit additif et que l’observationYk s’´ecrivait :
Yk =Xk⊕Bk
o`u ⊕d´esigne l’addition modulo 2 (ou exclusif) et Bk est une suite de variables al´eatoires `a valeurs dans{0,1}, ind´ependantes et identiquement distribu´ees avec,
P(Bk= 1) =p
Probabilit´ e d’erreur. Distance
Notonsc= [c1c2. . . cn]le mot transmis, ety= [y1y2. . . yn]le mot re¸cu, alors
Prob(y|c) =Qn
i=1Prob(yi|ci) = (1−p)card{i/yi=ci}pcard{i/yi6=ci}
= (1−p)n p
1−p
card{i/yi6=ci}
Un d´ecodeur parmaximum de vraisemblance doit choisir de renvoyer le motˆcqui maximise la fonction : c7→Prob(y|c).
Commep/(1−p)<1, maximiser cette probabilit´e revient `a minimiser le nombre d’erreurs : card{i/yi6=ci}
Communication Num´erique G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire
Distance et poids de Hamming
Soitx= [x1x2. . . xn]et y= [y1y2. . . yn]sont deux messages de longueurn.
D´efinition
La distance de Hamming entrex et y est le nombred(x, y) de composantes o`u xet y diff`erent.
Le poids de Hamming dex est le nombrew(x) de composantes non nulles dex.
Ex : Six= 10110et y= 00101, alors d(x, y) = 4 et w(x) = 3et w(y) = 2.
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique G´en´eralit´es sur les codes
Param`etres d’un code
Codeur :Dispositif qui associe `a une suite de k bits d’information une suite de n bits.
Code :Un code est un ensemble de mots denbits.
Distance et poids d’un code :Soit C un code :
• la distance minimum de C est le nombre
d∗ =Min{d(x, y)/x, y∈ C, x6=y}
• le poids minimum deC est le nombre :
w∗ =Min{w(x)/x∈ C, x6= 0}
Ex :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
n= 5 ; k= 2 d∗ = 3
w∗= 3
Codeur :Dispositif qui associe `a une suite de k bits d’information une suite de n bits.
Code :Un code est un ensemble de mots denbits.
Distance et poids d’un code :Soit C un code :
• la distance minimum de C est le nombre
d∗ =Min{d(x, y)/x, y∈ C, x6=y}
• le poids minimum deC est le nombre :
w∗ =Min{w(x)/x∈ C, x6= 0}
Ex :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
n= 5 ; k= 2 d∗ = 3
w∗= 3
Communication Num´erique G´en´eralit´es sur les codes
Param`etres d’un code
Le taux d’information d’un code est le nombrer=k/n.
r <1 : ajout d’information
r = 1 : pas d’information suppl´ementaire r >1 : compression de donn´ee . . .
Un code est ditt-correcteur si il permet de corriger toute erreur de au plus t caract`eres.
On a la caract´erisation :
C est t-correcteur⇐⇒d∗ ≥2t+ 1 ou encore, commed∗ =w∗,
t=E
d∗−1 2
=E
w∗−1 2
Ex :
mot original mot cod´e
00 00 000
01 01 101
10 10 110
11 11 011
n= 5 ; k= 2 d∗ = 3
w∗= 3
On dit que le codeC est de param`etres (5,2,3). Un tel code a :
• un taux d’information :r = 2/5 (ou un taux de redondance de 3/5).
• un pouvoir de correction de 1 bit, on dit qu’il est 1-correcteur.
Communication Num´erique G´en´eralit´es sur les codes
Param`etres d’un code
Autre exemple : Code de parit´e Ce code ajoute un bit, appel´e bit de parit´e, `a une suite de kbits d’information de fa¸con `a ce que le nombre total de 1 du mot code ainsi form´e soit pair.
Ex : Pourk= 3, on an= 4 et, par exemple : 000→0000
010→0101 111→1111
C’est un code(4,3)dont le taux d’information estr = 3
4 = 75 %.
On ad∗ =w∗ = 2, et donc t= 0 :
Ce code ne permet aucune correction.
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Codes en bloc lin´eaires
D´efinition
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Codes lin´ eaires
Code lin´eaire :sic1 et c2 d´esignent les mots codes respectifs des deux suites d’information dekbitsd1 et d2, alors `a la suite d’information dek bitsd1⊕d2 est associ´e le mot codec1⊕c2.
( d1 →c1
d2 →c2 alors , d1⊕d2 →c1⊕c2
o`u ⊕est l’addition bit `a bit modulo 2.
Communication Num´erique Codes en bloc lin´eaires
D´efinition
Codes en blocs
Code en bloc :Dans un code en bloc, les n´el´ements binaires des mots code sont calcul´es uniquement avec les kbits d’information du bloc courant.
[d1 d2 . . . dk ] → [c1 c2 . . . cn ]
Au besoin, le message initial est d´ecoup´e en paquets, ou blocs, de taillek.
Pour un code en bloc lin´eaire, le mot codec s’obtient `a partir du mot d’informationdpar une expression matricielle de la forme :
c=d G
o`u,dest un vecteur ligne de taille 1×k,c est un vecteur ligne de taille1×net Gest une matrice de taillek×n appel´ee
matrice g´en´eratrice du code.
Codes en blocs
Code en bloc :Dans un code en bloc, les n´el´ements binaires des mots code sont calcul´es uniquement avec les kbits d’information du bloc courant.
[d1 d2 . . . dk ] → [c1 c2 . . . cn ]
Au besoin, le message initial est d´ecoup´e en paquets, ou blocs, de taillek.
Pour un code en bloc lin´eaire, le mot codec s’obtient `a partir du mot d’informationdpar une expression matricielle de la forme :
c=d G
o`u,dest un vecteur ligne de taille 1×k,c est un vecteur ligne de taille1×net Gest une matrice de taillek×n appel´ee
matrice g´en´eratrice du code.
Communication Num´erique Codes en bloc lin´eaires
D´efinition
Exemple du code parit´e :
Le taux d’information estr= n−1
n , et sa matrice g´en´eratrice, de taille(n−1)×n est :
G=
In−1
1 ... 1
avecIn−1 la matrice identit´e de taillen−1.
Ex : Pourn = 3, on a un code (4,3,2),
de matrice g´en´eratrice G=
1 0 0 1 0 1 0 1 0 0 1 1
.
Par exemple, le motu= [101]est cod´e par : c=uG= [1012]≡[1010] [2]
Exemple du code parit´e :
Le taux d’information estr= n−1
n , et sa matrice g´en´eratrice, de taille(n−1)×n est :
G=
In−1
1 ... 1
avecIn−1 la matrice identit´e de taillen−1.
Ex : Pourn = 3, on a un code (4,3,2),
de matrice g´en´eratrice G=
1 0 0 1 0 1 0 1 0 0 1 1
.
Par exemple, le motu= [101]est cod´e par : c=uG= [1012]≡[1010] [2]
Communication Num´erique Codes en bloc lin´eaires
D´efinition
Code `a r´ep´etition : Ce code associe `ak= 1bit d’information les mots code :
d= 0 → c= 0 0 . . .0
| {z } n d= 1 → c= 1 1 . . .1
| {z } n
Le code `a r´ep´etition est donc un code(n,1, n). Son taux d’information estr = 1
n. Sa distance est n: il peut corriger jusqu’`a t=E
n−1 2
erreurs.
Sa matrice g´en´eratrice est : G= h
1 1 . . .1
| {z } i
n
Communication Num´erique Codes en bloc lin´eaires
D´efinition
Code `a r´ep´etition : Ce code associe `ak= 1bit d’information les mots code :
d= 0 → c= 0 0 . . .0
| {z } n d= 1 → c= 1 1 . . .1
| {z } n
Le code `a r´ep´etition est donc un code(n,1, n). Son taux d’information estr = 1
n. Sa distance est n: il peut corriger jusqu’`a t=E
n−1 2
erreurs.
n
Communication Num´erique Codes en bloc lin´eaires
D´efinition
Code `a r´ep´etition : Ce code associe `ak= 1bit d’information les mots code :
d= 0 → c= 0 0 . . .0
| {z } n d= 1 → c= 1 1 . . .1
| {z } n
Le code `a r´ep´etition est donc un code(n,1, n). Son taux d’information estr = 1
n. Sa distance est n: il peut corriger jusqu’`a t=E
n−1 2
erreurs.
Sa matrice g´en´eratrice est : G= h
1 1 . . .1
| {z } i
n
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Codes en bloc lin´eaires
Forme syst´ematique d’un code
Forme syst´ ematique d’un code
Un code est enti`erement d´etermin´e par sa matrice g´en´eratriceG.
Les vecteurs-ligne deGsont eux-mˆeme des mots-code, et sont suppos´es lin´eairement ind´ependants.
Cela revient `a imposer que :
sid16=d2, alors c1 =d1G6=c2 =d2G : des mots d’information diff´erents ne peuvent pas ˆetre identiquement cod´es.
En d’autres termes, la matriceGest de rang k.
On montre de plus que les combinaisons lin´eaires sur les lignes de Gainsi que les permutations sur les colonnes de Glaissent inchang´ees la probabilit´e d’erreur par mot code :
la distance (ou le poids) du code est inchang´e.
Forme syst´ ematique d’un code
D’apr`es ces propri´et´es, la matrice g´en´eratriceGpeut s’´ecrire sous la forme (Pivot de Gauss) :
Ge=
Ik|Pk×(n−k)
o`uIk est la matrice identit´e de taille k, et la matriceP est appel´ee la matrice de parit´e du code.
LorsqueGest sous sa forme syst´ematique, les mots code commencent parkbits d’information et sont compl´et´es par (n−k) bits de redondance :
si d= [d1d2. . . dk]alors,
c=d G= [d1 d2 . . . dk p1 p2 . . . pn−k ]
Communication Num´erique Codes en bloc lin´eaires
Forme syst´ematique d’un code
Par exemple, le code lin´eaire(7,4)d´efini par sa matrice g´en´eratrice :
G=
1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1
peut se mettre sous la forme syst´ematique :
Ge=
1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1
Communication Num´erique Codes en bloc lin´eaires
Forme syst´ematique d’un code
Ge=
1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1
Ainsi, si un blocc= [c1c2c3c4], est cod´e en d=cG= [c1c2c3c4p1p2p3] o`u,
p1 =c1+c2+c4
p2 =c1+c2+c3
p3 =c2+c3+c4
Communication Num´erique Codes en bloc lin´eaires
Forme syst´ematique d’un code
Ge=
1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1
Ainsi, si un blocc= [c1c2c3c4], est cod´e en d=cG= [c1c2c3c4p1p2p3] o`u,
p1 =c1+c2+c4
p2 =c1+c2+c3
p3 =c2+c3+c4
Tout se passe comme si, le codage consistait simplement en l’ajout de (n−k) bits de redondance.
Majoration de la distance d’un code :
On a vu que la distance d’un coded∗ est aussi ´egale au poids de ce codew∗.
Une fois la matrice g´en´eratrice du code mise sous forme syst´ematique,
Ge=
Ik |Pk×(n−k)
=
1 0 . . . 0
0 1 ... Pk×(n−k) ... . .. 0
0 . . . 0 1
on peut d´enombrer au plus(n−k+ 1)z´eros sur chaque ligne.
Ainsid∗ =w∗ ≤n−k+ 1, et on a la propri´et´e :
La distanced∗ d’un code (n, k, d∗) est major´ee par n−k+ 1.
Le pouvoir correcteurt d’un tel code v´erifie donc t≤E
n−k 2
.
Communication Num´erique Codes en bloc lin´eaires
Caract´erisation d’un mot code
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Caract´ erisation d’un mot code
Matrice de contrˆole de parit´e : On consid`ere un code lin´eaireC de matrice g´en´eratriceG.
On appelle matrice de contrˆole de parit´e une matriceH de dimension(n−k)×n et de rang(n−k) qui v´erifie :
H GT = 0
Caract´erisation d’un mot code :Si cest un bloc, de mot code d=cG, alors, on doit avoir :
H dT =H (c G)T =H GT cT = H GT
cT = 0
On a ainsi la propri´et´e : le bloc d re¸cu est un mot code (donc jug´e non erron´e) si et seulement si H dT = 0
Communication Num´erique Codes en bloc lin´eaires
Caract´erisation d’un mot code
Construction d’une matrice de contrˆole de parit´e :Soit un code lin´eaire dont la matriceG est mise sous forme syst´ematique
G=
Ik |Pk×(n−k)
Alors, la matrice de contrˆole de parit´e a pour expression : H=
(PT)(n−k)×k |In−k
Ex :
G=
1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1
et, H=
1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1
Construction d’une matrice de contrˆole de parit´e :Soit un code lin´eaire dont la matriceG est mise sous forme syst´ematique
G=
Ik |Pk×(n−k)
Alors, la matrice de contrˆole de parit´e a pour expression : H=
(PT)(n−k)×k |In−k Ex :
G=
1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1
et, H=
1 0 1 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1
Communication Num´erique Codes en bloc lin´eaires
D´ecodage par le syndrˆome
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Codes en bloc lin´eaires
D´ecodage par le syndrˆome
D´ ecodage par le syndrˆ ome
Syndrˆome :Soit un code lin´eaire de matrice de contrˆole de parit´e H,c un mot envoy´e, et y =c+ble mot re¸cu.
Alors, on a :HyT =H(c+b)T =HcT +Hbt=HbT
Ainsi, le vecteurs=H yT, ne d´epend que du bruit et non pas du mot envoy´e.
On l’appelle le syndrˆome associ´e `ay.
contrˆole de parit´e, et ne d´epend que du bruit et non pas du mot code ´emis.
A partir de la connaissance deH et de y, on peut donc esp´erer d´eterminer le bruit b, cars=HyT =HbT.
Une fois le bruit connu,cse d´eduit simplement parc=y⊕b.
Communication Num´erique Codes en bloc lin´eaires
D´ecodage par le syndrˆome
D´ ecodage par le syndrˆ ome
Syndrˆome :Soit un code lin´eaire de matrice de contrˆole de parit´e H,c un mot envoy´e, et y =c+ble mot re¸cu.
Alors, on a :HyT =H(c+b)T =HcT +Hbt=HbT
Ainsi, le vecteurs=H yT, ne d´epend que du bruit et non pas du mot envoy´e.
On l’appelle le syndrˆome associ´e `ay.
Le syndrˆome se calcule `a partir du mot re¸cu et de la matrice de contrˆole de parit´e, et ne d´epend que du bruit et non pas du mot code ´emis.
A partir de la connaissance deH et de y, on peut donc esp´erer d´eterminer le bruit b, cars=HyT =HbT.
Une fois le bruit connu,cse d´eduit simplement parc=y⊕b.
D´ ecodage par le syndrˆ ome
Dans l’exemple pr´ec´edent, le code est 1-correcteur : il ne peut corriger qu’une seule erreur.
Supposons qu’une erreurese soit effectivement gliss´ee dans la transmission d’un motc, cod´e par le mot d=cG, et receptionn´e selony=d+e.
L’erreur ´ecrit alorse= [0. . .0 1 0. . .0], le 1 ´etant `a la j`eme position. Le syndrˆome est
s=HyT =H(y+e)T =HdT +HeT =HeT =Hj, o`u Hj est laj`eme colonne de la matrice de contrˆole H.
On connaˆıt ainsi la position de l’erreur, et il n’y a plus qu’a corriger le mot re¸cu.
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
Les codes de Hamming forment une classe particuli`ere de codes lin´eaires.
Pour un entierm, les param`etres d’un code de Hamming sont de la forme(2m−1,2m−m−1,3).
Par exemple,
• (7,4,3)pourm= 3 (cf. TP)
• (128,120,3)pour m= 7 (minitel).
Ces codes sont parfaits : pour tout mot re¸cu, il existe un mot du code `a une distance stictement inf´erieure `a d/2.
Autrement dit, tout mot re¸cu peut-ˆetre d´ecod´e.
elle aussi erron´ee...
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
Les codes de Hamming forment une classe particuli`ere de codes lin´eaires.
Pour un entierm, les param`etres d’un code de Hamming sont de la forme(2m−1,2m−m−1,3).
Par exemple,
• (7,4,3)pourm= 3 (cf. TP)
• (128,120,3)pour m= 7 (minitel).
Ces codes sont parfaits : pour tout mot re¸cu, il existe un mot du code `a une distance stictement inf´erieure `a d/2.
Autrement dit, tout mot re¸cu peut-ˆetre d´ecod´e.
Malheureusement si 2, ou plus, erreurs se sont gliss´ees dans le message re¸cu, ce code propose toujours une correction qui va ˆetre elle aussi erron´ee...
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
Code de Hamming ´etendu :
Pour palier cet inconv´enient, le code de Hamming est souvent´etendu: A chaque bloc de 4 bits est ajout´e les trois bits de redondance du code de Hamming. Ces 7 bits sont alors compl´et´es par un bit de parit´e. Ainsi, le d´ecodage se fait suivant :
• Si une unique erreur s’est produite sur les sept premiers bits, le syndrome donne la position de l’erreur. L’existence d’un nombre d’erreur impair est confirm´ee par le huiti`eme bit.
• Si deux erreurs se sont produites, le syndrome n’est pas nul. Le huiti`eme bit indique une parit´e exact, signal d’un nombre pair d’erreurs. Une retransmission est n´ecessaire.
• Si une erreur s’est produite sur le huiti`eme bit, l’absence d’erreur indiqu´e par le syndrome permet de localiser l’erreur et le message est valid´e.
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
Code de Hamming ´etendu :
Pour palier cet inconv´enient, le code de Hamming est souvent´etendu: A chaque bloc de 4 bits est ajout´e les trois bits de redondance du code de Hamming. Ces 7 bits sont alors compl´et´es par un bit de parit´e. Ainsi, le d´ecodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits, le syndrome donne la position de l’erreur. L’existence d’un nombre d’erreur impair est confirm´ee par le huiti`eme bit.
• Si deux erreurs se sont produites, le syndrome n’est pas nul. Le huiti`eme bit indique une parit´e exact, signal d’un nombre pair d’erreurs. Une retransmission est n´ecessaire.
• Si une erreur s’est produite sur le huiti`eme bit, l’absence d’erreur indiqu´e par le syndrome permet de localiser l’erreur et le message est valid´e.
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
Code de Hamming ´etendu :
Pour palier cet inconv´enient, le code de Hamming est souvent´etendu: A chaque bloc de 4 bits est ajout´e les trois bits de redondance du code de Hamming. Ces 7 bits sont alors compl´et´es par un bit de parit´e. Ainsi, le d´ecodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits, le syndrome donne la position de l’erreur. L’existence d’un nombre d’erreur impair est confirm´ee par le huiti`eme bit.
Le huiti`eme bit indique une parit´e exact, signal d’un nombre pair d’erreurs. Une retransmission est n´ecessaire.
• Si une erreur s’est produite sur le huiti`eme bit, l’absence d’erreur indiqu´e par le syndrome permet de localiser l’erreur et le message est valid´e.
Communication Num´erique Codes en bloc lin´eaires
Code de Hamming
Code de Hamming ´etendu :
Pour palier cet inconv´enient, le code de Hamming est souvent´etendu: A chaque bloc de 4 bits est ajout´e les trois bits de redondance du code de Hamming. Ces 7 bits sont alors compl´et´es par un bit de parit´e. Ainsi, le d´ecodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits, le syndrome donne la position de l’erreur. L’existence d’un nombre d’erreur impair est confirm´ee par le huiti`eme bit.
• Si deux erreurs se sont produites, le syndrome n’est pas nul.
Le huiti`eme bit indique une parit´e exact, signal d’un nombre pair d’erreurs. Une retransmission est n´ecessaire.
• Si une erreur s’est produite sur le huiti`eme bit, l’absence d’erreur indiqu´e par le syndrome permet de localiser l’erreur et le message est valid´e.
Code de Hamming ´etendu :
Pour palier cet inconv´enient, le code de Hamming est souvent´etendu: A chaque bloc de 4 bits est ajout´e les trois bits de redondance du code de Hamming. Ces 7 bits sont alors compl´et´es par un bit de parit´e. Ainsi, le d´ecodage se fait suivant :
• S’il n’y a aucune erreur le syndrome est nul.
• Si une unique erreur s’est produite sur les sept premiers bits, le syndrome donne la position de l’erreur. L’existence d’un nombre d’erreur impair est confirm´ee par le huiti`eme bit.
• Si deux erreurs se sont produites, le syndrome n’est pas nul.
Le huiti`eme bit indique une parit´e exact, signal d’un nombre pair d’erreurs. Une retransmission est n´ecessaire.
• Si une erreur s’est produite sur le huiti`eme bit, l’absence d’erreur indiqu´e par le syndrome permet de localiser l’erreur et le message est valid´e.
Communication Num´erique Autres codes
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
1 Introduction D´efinition
Position du probl`eme Exemples
2 G´en´eralit´es sur les codes
Canal binaire sym´etrique sans m´emoire Param`etres d’un code
3 Codes en bloc lin´eaires D´efinition
Forme syst´ematique d’un code Caract´erisation d’un mot code D´ecodage par le syndrˆome Code de Hamming
4 Autres codes Codes cycliques
Communication Num´erique Autres codes
Codes cycliques
Code cyclique
Les codes cycliques forment une sous-classe des codes lin´eaires.
Un codeC est dit cyclique si
a= [a1a2 . . . an]∈ C ⇐⇒a0 = [ana1 . . . an−1]∈ C
Les codes cycliques sont des codes dont l’algorithme d’encodage est facile `a implanter grˆace `a des registres `a d´ecalages.
L’algorithme de d´ecodage est quant-`a lui plus difficile `a mettre en œuvre.
L’encodage et le d´ecodage de codes cycliques reposent sur la notion de polynˆomes sur un corps fini, dont la th´eorie
math´ematique d´epasse largement l’ambition de ce cours.
Code cyclique
Les codes cycliques les plus utilis´es `a l’heure actuelle sont les codes deReed-Solomon.
Ces codes sont optimums, dans le sens o`u ils n´ecessitent un nombre minimum de redondance(n−k)pour obtenir une distance minimale donn´ee, et donc un nombre maximum d’erreurs qui peuvent ˆetre corrig´ees :t= n−k
2
Pour les modems ADSL, le code utilis´e est RS(240,224,8)
Communication Num´erique Autres codes
Codes cycliques
Ces codes peuvent-ˆetres utilis´es comme base de codes entrelac´es : les CIRC(Cross-InterleavedReed Solomon Code), utilis´es
notamment sur les supports d’enregistrement du type CD ou DVD) L’entrelacement consiste `a m´elanger les blocs afin de “diluer”
l’information. Cette proc´edure permet en particulier de minimiser l’effet d’une bouff´ee d’erreurs (rayure sur un CD . . .).
Communication Num´erique Autres codes
Codes cycliques
Codage avec un code CIRC :
L’id´ee du codage CIRC est de coder avec un premier code C1, puis d’entrelacer les blocs, et enfin, de coder dans la foul´ee avec un deuxi`eme codeC2.
D´ecodage d’un code CIRC :
Pour d´ecoder, on peut alors s’appuyer sur le double codage : on d´ecode avec C2, on d´esentrelace, puis on d´ecode avec C1.
L’apport important de ce code r´eside dans le traitement it´eratif du d´ecodage :
C1 permet de corriger certaines erreurs,C2 ensuite en corrige d’autres. Le message peut alors `a nouveau ˆetre d´ecod´e par C1 . . .
Communication Num´erique Autres codes
Codes cycliques
Codage avec un code CIRC :
L’id´ee du codage CIRC est de coder avec un premier code C1, puis d’entrelacer les blocs, et enfin, de coder dans la foul´ee avec un deuxi`eme codeC2.
D´ecodage d’un code CIRC :
Pour d´ecoder, on peut alors s’appuyer sur le double codage : on d´ecode avec C2, on d´esentrelace, puis on d´ecode avec C1.
L’apport important de ce code r´eside dans le traitement it´eratif du d´ecodage :
C1 permet de corriger certaines erreurs,C2 ensuite en corrige d’autres. Le message peut alors `a nouveau ˆetre d´ecod´e par C1 . . .
Voir aussi `a ce sujet lesturbo codes. . .