• Aucun résultat trouvé

TP 6 - Codes correcteurs

N/A
N/A
Protected

Academic year: 2022

Partager "TP 6 - Codes correcteurs"

Copied!
5
0
0

Texte intégral

(1)

Info 2A Math – C++

TP 6 - Codes correcteurs

Les codes correcteurs d’erreurs ont leur source dans un probl` eme tr` es concret li´ e ` a la transmis- sion de donn´ ees. Dans la grande majorit´ e des cas, la transmission de donn´ ees se fait en utilisant une voyer de communication, la canal de communication, qui n’est pas enti` erement fiable. Au- trement, les donn´ ees, lorsqu’elles circulent sur cette voie, sont susceptibles d’ˆ etre alt´ er´ ee.

Exemple. de canal de communications.

— onde radio (FM, Wifi, Bluetooth, ... )

— fils conducteur (ADSL, Ethernet, ... )

— onde sonore (parole, ...)

Le mˆ eme ph´ enom` ene se produit lorsque l’on stocke de l’information sur un support. L’informa- tion lue peut ˆ etre plus ou moins diff´ erentes que celles enregistr´ ees.

Exemple. M´ emoire vive, disque dur, CDROM, ...

Reprenons l’exemple de communication radio. La pr´ esence de parasites sur la ligne va perturber le son de la vois. Il y’a essentiellement deux approches possibles.

— augmenter la puissance de l’´ emission

— ajouter de la redondance ` a l’information

Augmenter la puissance a ses limites, pour des raisons diverses : consommation ´ energ´ etique, nuisance, coˆ ut de l’´ emetteur, ... . L’autre solution consiste ` a ajouter des donn´ ees, ce qui donne lieu au code des aviateurs qui diront ”Alpha Tango Charlie” dans le but de transmettre ”ATC”

`

a travers le radio. La s´ equence ” Alpha Tango Charlie ”, mˆ eme avec friture sera plus reconnais- sable pour l’oreille humaine qu’un ”ATC’ d´ eform´ e.

Un code correcteur peut avoir plusieurs buts de mani` ere non exclusive.

— d´ etecter les erreurs

— corriger les erreurs

Dans le protocole de communication TCP seul la d´ etection est assur´ ee. En effet, la correction est r´ ealis´ ee par une nouvelle demande de transmission du message.

Dans d’autres situation on peut pas faire de nouvelle demande de transmission, c’est le cas notamment pour le stockage de donn´ ees. Par exemples les codes correcteurs utilis´ es avec les CD sont con¸ cus pour corrig´ ee jusqu’` a 4096 bits cons´ ecutifs, ce qui correspond ` a une rayure de plus d’un millim` etre de large.

Les objectifs ` a atteindre ne sont donc pas du tout les mˆ emes en fonction de l’utilisation de l’information et du ¸ canal de communication.

Notre mod` ele est le suivant :

— on consid` ere que le message est une suite de bits

— regroup´ es par bloc de k bits (k = 1, ou 4, ou 8 ...)

— et que chaque bits ` a une probabilit´ e non nulle d’ˆ etre invers´ e.

Pour pouvoir corriger une ´ eventuelle erreur dans un bloc de bits ont doit n´ ecessairement ajouter une information suppl´ ementaire.

Exemple. Code par adjonction d’un bit de parit´ e (8, 9). On d´ ecoupe notre message initial en

bloc de 8 bits. On transforme ensuite chaque bloc en un bloc de 9 bits en ajoutant un bit ` a la

fin de chaque bloc de telle sorte que la somme des bits du nouveaux blocs soit toujours paire.

(2)

2

Exercice 1. Coder les blocs 01101011 et 00110101. Que ce passe-t-il si un bit est modifi´ e ? et dans le cas de deux bits.

Si une erreur des produit, on peut la d´ etecter, mais pas la localiser : on ne peut pas corriger notre bloc, il faut recommencer la transmission. Si d’avantage d’erreurs de produisent, on n’est mˆ eme pas sˆ ur de d´ etecter le probl` eme.

Qu’attend-on d’un bon code ?

— l’information ne doit pas ˆ etre trop dilu´ ee,

— on doit pouvoir d´ etecter et corriger un nombre raisonnable d’erreurs,

— l’algorithme de codage doit ˆ etre rapide,

— l’algorithme de d´ ecodage aussi.

1 Param` etre d’un code

Un bloc de k bits sera indiff´ eremment appel´ e bloc, mot ou vecteur. L’ensemble des mots de k bits sera not´ e {0, 1}

k

. On parlera indiff´ eremment de bits ou de lettres.

Un mot de k bits sera not´ e b

1

b

2

...b

k

ou ´ eventuellement

 b

1

b

2

.. . b

k

 .

D´ efinition 2. . Un code correcteur de param` etre (k, n) est application injective φ : {0, 1}

k

→ {0, 1}

n

appel´ e encodage. Le param` etre k est la dimension du code et n sa longueur.

Question 3. Pourquoi l’encodage doit-il ˆ etre injectif ? Existe t-il un lien entre k et n ?

Reponse. Si le codage n’´etait pas injectif alors ils existeraient deux mots m et m0 tels que φ(m) = φ(m0) =c. Lors de la r´eception apr`es transmission sans erreurs du motcon ne saurait pas dire s’il est le cod´e demou dem0. Commeφest injective on a que la cardinalit´e de{0,1}k est la mˆeme queφ({0,1}k)

`

a savoir 2k il doit donc y avoir au moins 2k´el´ement dans{0,1}nqui est de cardinalit´e 2n, ce qui implique k6n.

Dans {0, 1} = Z /2 Z = F

2

, on a 1 + 1 = 0.

Exercice 4. En vous inspirant du code vue pr´ ec´ edemment, imagin´ e un code par adjonction d’un bit de parit´ e de param` etres (k, k + 1) pour k > 1.

D´ efinition 5. Soit φ un code de param` etre (k, n). L’ensemble C = {φ(m), m ∈ {0, 1}

k

} est appel´ e image du code φ. Les ´ el´ ements de C sont les mots de code de φ.

Exercice 6. Consid´ erons l’application φ : {0, 1} → {0, 1}

3

d´ efinie par φ(0) = 000 et φ(1) = 111.

Pr´ ecis´ ee chacune des notions introduite pour ce code. Ce code sera appel´ e code de r´ ep´ etition pure (1, 3).

Exercice 7. Pr´ eciser ce que peuvent devenir les mots 000 et 111 apr` es 0, 1 et 2 erreurs. Parmi les mots trouv´ es rep´ er´ ees ceux qui sont des mots de code pour le code de r´ ep´ etition pure (1, 3).

Combien d’erreurs ce code peut-il d´ etecter ? Corriger ?

Si une, ou mˆ eme deux erreurs se produisent, le mot re¸ cu n’est pas un mot de code, l’erreur est donc d´ etect´ ee.

Comment corriger ? Si le mot re¸ cu n’est pas un mot de code, la probabilit´ e qu’il se soit produit une

erreur est plus importante que celle qui se soit produit deux erreurs. Il est donc plus raisonnable

de corriger par le mot de code le plus ”proche”. On peut alors corriger une erreur mais pas 2.

(3)

D´ efinition 8. Soient m et m

0

deux mots de {0, 1}

k

. On appelle distance de Hamming entre m et m

0

, et on note d(m, m

0

) le nombre de lettres distinctes de m et m

0

. On appelle poids de Hamming de m et on note w(n) le nombre de lettres non nulles de m.

Exercice 9. Quel est le poids de Hamming de 01100111. Quelle est la distance de Hamming entre

— 0001001 et 0101001,

— 0000110 et 0001100.

Exercice 10. Montrer que pour tout m, m

0

de {0, 1}

k

, on a d(m, m

0

) = w(m + m

0

). En d´ eduire que pour tout m, m

0

et c de {0, 1}

k

on a d(m + c, m

0

+ c) = d(m, m

0

).

D´ efinition 11. Soit φ un code d’image C. On appelle capacit´ e de d´ etection de φ et on note e

d

le plus grand nombre d’erreurs que φ permet de d´ etecter quelque soit le message. On appelle capacit´ e de correction de φ et on note e

c

le plus grand nombre d’erreurs que φ permet de corriger quelque soit le message. On appelle distance minimale de φ et on note d

φ

la plus petite distance de Hamming non nulle entre deux mots de code.

Proposition 12. On a e

d

= d

φ

− 1 et e

c

=

d

φ

− 1 2

.

Exercice 13. Que vaut d

φ

, e

d

et e

c

dans le cas du code de r´ ep´ etition pure (1, 3).

Exercice 14. Que vaut d

φ

, e

d

et e

c

dans le cas du code de bit de parit´ e (8, 9).

2 Codes lin´ eaires

D´ efinition 15. Un code φ de param` etre (n, k) est dit lin´ eaire s’il existe une matrice G ∈ M

n,k

(F

2

) de rang k, telle que ∀m ∈ {0, 1}

k

, φ(m) = G × m. La matrice G est appel´ ee matrice g´ en´ eratrice du code φ.

Exercice 16. Les codes r´ ep´ etition pure (1, 3) et bit de parit´ e (8, 9) sont-ils lin´ eaire ? Si oui, quelles sont leurs matrices g´ en´ eratrices.

Exercice 17. Etudier le code lin´ eaire ayant

G =

 1 0 0 1 1 0 1 1

comme matrice g´ en´ eratrice. Ce code est de dimension 2 et de longueur 4. On a

G 0

0

=

 0 0 0 0

 , G

1 0

=

 1 0 1 1

 , G

0 1

=

 0 1 0 1

 et G

1 1

=

 1 1 1 0

On a donc C = {0000, 1011, 0101, 1110}. De

d(0000, 1011) = 3, d(0000, 0101) = 2, d(0000, 1110) = 3,

d(1011, 0101) = 3, d(1011, 1110) = 2 et d(0101, 1110) = 3,

on obtient d

φ

= 2 et donc e

d

= 1 et e

c

= 0.

(4)

4

Exercice 18. Proposer une structure C++ permettant de repr´ esenter un code lin´ eaire.

Proposition 19. Soit φ un code lin´ eaire de param` etre (n, k) alors son image C est un sous- espace vectoriel de {0, 1}

n

.

Exercice 20. Montrons que C est un sous-espace vectoriel de {0, 1}

n

qui est un F

2

-espace vectoriel. Soit G la matrice g´ en´ eratirece de φ. Tout d’abord C est non vide car 0 = G × 0. Soient c et c

0

deux ´ el´ ement de C, alors il existent m et m

0

tels que c = G × m et c

0

= G × m

0

. On a c + c

0

= G × (m + m

0

) et donc c + c

0

appartient ` a C. Les seuls ´ el´ ements de {0, 1} = F

2

sont 0 et 1. Multipli´ e un vecteur u de C par 0 donne 0 qui est dans C et le multipli´ e par 1 donne u qui est aussi dans C. L’ensemble C est donc un sous-espace vectoriel de {0, 1}

n

.

Proposition 21. Soit φ un code lin´ eaire d’image C. Alors la distance minimale d

φ

de φ est

´

egale au plus petit poids non nul d’un mot de C.

D´ emonstration. Notons p le plus petit poids non nul d’un mot de C. La distance minimale est la plus petite distance de Hamming entre deux mots de code. Soit c et c

0

dans C tel que d

φ

= d(c, c

0

).

Comme φ est lin´ eaire c

0

− c est encore un mot de code. On a donc d

φ

= d(0, c − c

0

) = w(c − c

0

).

Ainsi d

φ

> p. Soit m un mot de C tel que w(m) = p. Alors d(0, m) = p. Les mots 0 et m ´ etant des mots de code, on a d

φ

6 d(0, m) = p. On a donc montrer d

φ

= p.

Proposition 22. Soit φ un code lin´ eaire de param` etre (k, n) et d’image C. Alors on a d

φ

6 n − k + 1. Un code pour lequel on a ´ egalit´ e est dit MDS (Maximum Distance Separable).

D´ emonstration. D’apr` es la proposition pr´ ec´ edente, il est suffisant de montrer qu’il existe un mot de code de poids inf´ erieur ou ´ egale n + 1 − k. Un mot de {0, 1}

n

dont les k − 1 derni` ere composante sont nulles ` a un poids inf´ erieur ou ´ egale ` a n − k + 1. Notons D l’espace vectoriel des mots dont les k − 1 derni` eres composantes sont nulles. La dimension de D est le nombre de composantes libres, ` a savoir n − k + 1. Par un r´ esultat g´ en´ erale d’alg` ebre lin´ eaire on a n > dim(C + D) = dim(C) + dim(D) − dim(C ∩ D). et donc n > k + n − k + 1 − dim(C ∩ D), ce qui implique dim(C ∩ D) > 0. Il existe donc un mot non nul dans C ∩ D. Ce qui signifie qu’il existe un mot de code avec ses k derni` eres composantes nulles. Le poids de ce mot ´ etant inf´ erieur ` a n − k + 1, on a d

φ

6 n − k + 1.

Exercice 23. Donner un minorant sur la longueur d’un code code lin´ eaire de dimension k d´ etectant d erreurs.

Exercice 24. Les codes bits parit´ e (8, 9) , r´ ep´ etition pure (1, 3) et celui donn´ ee par matrice g´ en´ eratrice sont-ils MDS ?

D´ efinition 25. Soit φ un code lin´ eaire de matrice g´ en´ eratrice G. On appelle matrice de contrˆ ole de φ toute matrice H ∈ M

n−k,n

( F

2

) telle que H.m = ~ 0 ⇔ m ∈ C.

D´ efinition 26. Un code φ de param` etre (k, n) est dit syst´ ematique si pour tout m ∈ {0, 1}

k

, le mot m est un pr´ efixe de φ(m).

Exercice 27. Montrer qu’un code de param` etre (k, n) est syst´ ematique si et seulement si sa matrice g´ en´ eratrice est de la forme

I

k

G

0

o` u G

0

est une matrix de M

n−k,k

(F

2

).

Proposition 28. Soit φ un code syst´ ematique de param` etre (k, n) et de matrice g´ en´ eratrice I

k

G

0

alors la matrice H =

G

0

I

n−k

est une matrice de contrˆ ole de φ.

Exercice 29. D´ emontrer cette proposition.

(5)

Exercice 30. Donner la matrice de controle des code bit de parit´ e (8, 9), r´ ep´ etitions pure (1, 3) et de celui donn´ e par matrice g´ enratrice.

D´ efinition 31. Soit φ un code de param` etre (k, n), de matrice g´ en´ eratrice G et de contrˆ ole H.

On se fixe un mot de source x (de longueur k). Le mot de code correspondant sera φ(x) = y.

S’il y a eu des erreurs durant la transmission, on recoit z. On appelle mot erreur associ´ e ` a z, le mot e tel que z = y + e. On appelle syndrome de z le mot Hz.

On v´ erifie imm´ ediatement qu’on a Hz = H(y + e) = He. Le syndrome ne d´ epend que de la

”maladie” (erreur) et non du ”patient” (mot a transmettre).

D´ efinition 32. L’ensemble des syndromes S

z

de z est appell´ e classe lit´ erale de z.

Principe de d´ ecodage Soit φ un code lin´ eaire de param` etre (k, n), corrigeant e

c

erreurs et de matrice de contrˆ ole H.

1. On recoit le mot z transmis avec de possibles erreurs.

2. On calcul le syndrome s de z par s = Hz.

3. Si s vaut 0, on ne d´ etecte pas d’erreur et on retourne φ

−1

(z).

4. Sinon on recherche l’erreur e de plus petit poids possible telle que He = s.

5. Si le poid w(e) est inf´ erieur ou ´ egale ` a e

c

, on retourne φ

−1

(z + e).

6. Sinon afficher ”Impossible de corriger les erreurs”.

Il nous reste ` a voir comment calculer φ

−1

(c) pour un mot c de F

n2

(utiliser au 2 et 5) et comment trouver e (ligne 4). Si φ est un code syst´ ematique, alors m est le pr´ efixe de longuer k de φ(m).

Dans ce cas φ

−1

(c) et le pr´ efixe de longueur k de c.

3 Table de dacodage

Pour trouver e, nous allons construire une table de d´ ecodage. Soit φ un code lin´ eaire de param` etre (k, n). Les matrices de contrˆ ole associ´ e ` a φ sont de taille (n − k) × n. L’ensemble des syndromes possibles est donc F

n−k2

.

Pour calculer la table de d´ ecodage de φ, on liste tous les syndrˆ omes de φ. Puis on liste tous les mots z de F

n2

par poids croissant. Pour chaque z, on calculer Hz. Au syndrome s on associe alors le premier mot z apparu tel que Hz = s. On arrete ce proc´ eder d´ es qu’on associer un mot ` a chaque syndrome. Le mot associ´ e ` a un syndrome s est alors l’erreur de poid minimal donnants.

Exercice 33. Calculer la table de d´ ecodage pour les codes bits de parit´ e (8, 9), r´ ep´ etition pure

(1, 3) et celui donner par matrice g´ en´ eratrice. Pour chacun des codes respectivement, d´ ecoder

les mots recus 101010100, 101 et 1100.

Références

Documents relatifs

the totality of 0-bounded harmonic functions on a Riemann surface R and by On* the class of all Riemann surfaces on which every ^-bounded harmonic function reduces to a constant..

La qualit´ e de r´ edaction et de la pr´ esentation entrera pour une part importante dans l’appr´ eciation des copies.. Le barˆ eme tiendra compte de la longueur

À l’aide des caractéristiques électriques du poêle, déterminer la durée Δt nécessaire pour porter une masse m = 20 kg de pierre, de la température de 25°C à la température

[r]

[r]

Enn, nous verrons comment approcher le nombre d'or. Ce dernier a des vertus mystiques et biologiques. Il est relié par exemple à l'angle séparant deux graines contiguës dans une eur

[r]

Montrer que f est égale au suprémum de ses minorantes anes continues.. En déduire que f est convexe et