Beruflich Dokumente
Kultur Dokumente
16
Un bloc de k bits sera indifferemment appele bloc, mot ou vecteur. Lensemble des mots de
k bits sera note {0, 1}k . On parlera indifferemment de bits 2
ou de
3 lettres.
b1
6 b2 7
6 7
Un mot de k bits sera note b1 b2 ...bk ou e ventuellement 6 .. 7.
4.5
bk
Definition 4.2. . Un code correcteur de param`etre (k, n) est application injective : {0, 1}k !
{0, 1}n appele encodage. Le param`etre k est la dimension du code et n sa longueur.
7. P
ourquoi
17
Exercice 4.3. En vous inspirant du code vue precedemment, imagine un code par adjonction
dun bit de parite de param`etres (k, k + 1) pour k > 1.
Solution : On definit lapplication
18
Exercice 4.10. Montrer que pour tout m, m0 de {0, 1}k , on a d(m, m0 ) = w(m + m0 ). En
deduire que pour tout m, m0 et c de {0, 1}k on a d(m + c, m0 + c) = d(m, m0 ).
Solution : Soient m = b1 b2 ...bk et m0 = b01 b02 ...b0k des mots de {0, 1}k . La distance de
Hamming est de nombre de lettres distinctes entre w et w0 . On a donc d(m, m0 ) = #{i 2
{1, ..., k} | bi 6= b0i }. Comme 0 + 0 = 0, 1 + 1 = 0, 0 + 1 = 1 et 1 + 0 = 1 on remarque que
deux bits sont differents si et seulement si leur somme vaut 1. On a donc
d(m, m0 ) = (b1 +b01 )+(b2 +b02 )+...+(bk +b0k ) = w((b1 +b01 )(b2 +b02 )...(bk +b0k )) = w(m+m0 )
Definition 4.11. Soit un code dimage C. On appelle capacite de detection de et on note
ed le plus grand nombre derreurs que permet de detecter quelque soit le message. On appelle
capacite de correction de et on note ec le plus grand nombre derreurs 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.
d
1
Proposition 4.12. On a ed = d
1 et ec =
.
2
Exercice 4.13. Que vaut d , ed et ec dans le cas du code de repetition pure (1, 3).
1.
Exercice 4.14. Que vaut d , ed et ec dans le cas du code de bit de parite (8, 9).
Solution : Les mots m = 000000000 et m0 = 100000001 sont deux mots de C. Comme
d(m, m0 ) = 2 on a d 6 2. Montrons que d nest pas 1. Supposons par labsurde quil existe
deux mots m et m0 de C tels que d(m, m0 ) = 1. Posons m = b1 ...b9 , m0 = b01 ...b09 . Comme m
et m0 sont dans C, on a b1 + ... + b9 = 0 et b01 + ... + b09 = 0. Comme d(m, m0 ) = 1 il existe
i 2 {1, ..., 9} tel que bi 6= b0i et bj = b0j pour tout j 6= i. On a dej`a vue que le relation bi 6= b0i est
e quivalente a` bi + b0i = 1. On a donc b0i = bi + 1. Ce qui donne
0 = b01 + ... + b0 i + ...bk = b1 + ... + bi + 1 + ... + bk = 1 + b1 + ... + bk = 1 + 0 = 1
On a donc necessairement d = 2. Do`u ed = 1 et ec = b 12 c = 0.
Codes lineaires
Definition 4.15. Un code de param`etre (n, k) est dit lineaire sil existe une matrice G 2
Mn,k (F2 ) de rang k, telle que 8m 2 {0, 1}k , (m) = G m. La matrice G est appelee matrice
generatrice du code .
Exercice 4.16. Les codes repetition pure (1, 3) et bit de parite (8, 9) sont-ils lineaire ? Si oui,
quelles sont leurs matrices generatrices.
2. Codes lineaires
19
ce que lon veux. Pour le code bit de parite (8, 9) on a (b1 ...bb ) = b1 ...b8 b9 avec b9 = b1 +...+b8 .
Pour
2
3
2
3
2 3
1 0 0 0 0 0 0 0
b1
b1
60 1 0 0 0 0 0 07
6
7
b2
6
7
6 b2 7 6
7
60 0 1 0 0 0 0 07
6 7 6
7
b
3
6
7
6 b3 7 6
7
60 0 0 1 0 0 0 07
6 7 6
7
b4
6
7
6 b4 7 6
7
7
6 7 6
7
b5
G=6
60 0 0 0 1 0 0 07 on a G 6b5 7 = 6
7
6 7 6
60 0 0 0 0 1 0 07
7
b6
6
7
6 b6 7 6
7
60 0 0 0 0 0 1 07
6 7 6
7
b
7
6
7
7
4 b7 5 6
40 0 0 0 0 0 0 15
4
5
b8
b8
1 1 1 1 1 1 1 1
b1 + b2 + b3 + b4 + b5 + b6 + b7 + b8
qui est ce quon veux.
1
60
G=6
41
1
3
0
17
7
05
1
6
7
6
7
6
7
6
7
0
07
1
607 , G 0 = 617 et G 1 = 617
G
=6
,
G
=
405
415
405
415
0
0
1
1
0
1
1
0
On a donc C = {0000, 1011, 0101, 1110}. De
struct CodeCorrecteur{
Matrice G;
};
Proposition 4.19. Soit un code lineaire de param`etre (n, k) alors son image C est un sousespace vectoriel de {0, 1}n .
20
Exercice 4.20. Montrons que C est un sous-espace vectoriel de {0, 1}n qui est un F2 -espace
vectoriel. Soit G la matrice generatirece de . Tout dabord C est non vide car 0 = G 0.
Soient c et c0 deux e lement de C, alors il existent m et m0 tels que c = G m et c0 = G m0 .
On a c + c0 = G (m + m0 ) et donc c + c0 appartient a` C. Les seuls e lements de {0, 1} = F2
sont 0 et 1. Multiplie un vecteur u de C par 0 donne 0 qui est dans C et le multiplie par 1 donne
u qui est aussi dans C. Lensemble C est donc un sous-espace vectoriel de {0, 1}n .
Proposition 4.21. Soit un code lineaire dimage C. Alors la distance minimale d de
e gale au plus petit poids non nul dun mot de C.
est
Demonstration. Notons p le plus petit poids non nul dun mot de C. La distance minimale
est la plus petite distance de Hamming entre deux mots de code. Soit c et c0 dans C tel que
d = d(c, c0 ). Comme est lineaire c0 c est encore un mot de code. On a donc d = d(0, c
c0 ) = w(c c0 ). Ainsi d > p. Soit m un mot de C tel que w(m) = p. Alors d(0, m) = p. Les
mots 0 et m e tant des mots de code, on a d 6 d(0, m) = p. On a donc montrer d = p.
Proposition 4.22. Soit un code lineaire de param`etre (k, n) et dimage C. Alors on a d 6
n k + 1. Un code pour lequel on a e galite est dit MDS (Maximum Distance Separable).
Demonstration. Dapr`es la proposition precedente, il est suffisant de montrer quil existe un
mot de code de poids inferieur ou e gale n + 1 k. Un mot de {0, 1}n dont les k 1 derni`ere
composante sont nulles a` un poids inferieur ou e gale a` n k + 1. Notons D lespace 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 resultat generale dalg`ebre lineaire 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
quil existe un mot de code avec ses k derni`eres composantes nulles. Le poids de ce mot e tant
inferieur a` n k + 1, on a d 6 n k + 1.
Exercice 4.23. Donner un minorant sur la longueur dun code code lineaire de dimension k
detectant d erreurs.
n
Solution : Sil est de longueur n alors sa distance minimale d est inferieur ou e gale a`
k + 1. Dans ce cas il detecte n k erreurs. On a donc n k > d et donc n > k + d.
Exercice 4.24. Les codes bits parite (8, 9) , repetition pure (1, 3) et celui donnee par matrice
generatrice sont-ils MDS ?
Solution : Pour (8, 9), on a montrer d = 2, qui est e gale a` 9 8 + 1. Nimporte quel code
de bit parite est MDS. Pour (1, 3) on a calcule d = 3, qui est e gale a` 3 1 + 1. Il est donc bien
MDS. Pour le code donnee par matrice generatrice, on a k = 2 et n = 4. On a calcule d = 2.
Or n k+ = 4 2 + 1 = 3, ce code nest donc pas MDS.
Definition 4.25. Soit un code lineaire de matrice generatrice G. On appelle matrice de
controle de toute matrice H 2 Mn k,n (F2 ) telle que H.m = ~0 , m 2 C.
Definition 4.26. Un code de param`etre (k, n) est dit systematique si pour tout m 2 {0, 1}k ,
le mot m est un prefixe de (m).
Exercice 4.27. Montrer quun code de param`etre (k, n) est systematique si et seulement si sa
I
matrice generatrice est de la forme k0 o`u G0 est une matrix de Mn k,k (F2 ).
G
21
2. Codes lineaires
Solution : Soient
un code line2
aire3systematique et G sa matrice generatrice. Notons
b1
6 .. 7
L1 , ..., Ln les n lignes de G. Soit m = 4 . 5 un mot de {0, 1}k . On a
bk
2
3
2
3
L1
L1 m
6 7
6
7
G m = 4 ... 5 m = 4 ... 5
Ln
Ln m
Ik
In k est une matrice de controle de .
0 alors la matrice H = G
G
Exercice 4.29. Demontrer cette proposition.
Solution : Montrons dabord que pour tout mode de code c de {0, 1}n on a Hc = 0, ce
qui revient a` montrer que Im(G) est inclus dans ker(H). Si c est un mot de code alors il existe
m 2 {0, 1}k tel que c = Gm. Do`u
0
Ik
0
0
0
Hc = HGm = G In k
0 m = G Ik + G In k m = 2G m = 0 m = 0
G
On a donc montrer Im(G) ker(H). Pour avoir e galite il suffit de montrer legalite des dimensions. Parconstruction
de G, on a C = Im(G) et donc dim(C) = dim(Im(G)) = rang(G) = k.
De H = G0 In k , on obtient dim(Im(H)) = rang(H) = n k. Par le theor`eme du rang, on
a dim{0, 1}n = rang(H) + dim(ker(H)). On a donc dim(ker(H)) = n (n k) = k. On a
donc bien ker(H) = Im(G) et H est une matrice de controle de .
Exercice 4.30. Donner la matrice de controle des code bit de parite (8, 9), repetitions pure (1, 3)
et de celui donne par matrice genratrice.
Solution : La matrice generatrice du code (8, 9) est
2
1 0 0 0 0 0
60 1 0 0 0 0
6
60 0 1 0 0 0
6
60 0 0 1 0 0
6
G=6
60 0 0 0 1 0
60 0 0 0 0 1
6
60 0 0 0 0 0
6
40 0 0 0 0 0
1 1 1 1 1 1
0
0
0
0
0
0
1
0
1
3
0
07
7
07
7
07
7
07
7
07
7
07
7
15
1
22
H= 1 1 1 1 1 1 1 1 1 .
2 3
1
G = 415
1
H=
1 1 0
1 0 1
est la matrice
1
60
G=6
41
1
H=
3
0
17
7
05
1
1 0 1 0
.
1 1 0 1
Definition 4.31. Soit un code de param`etre (k, n), de matrice generatrice G et de controle H.
On se fixe un mot de source x (de longueur k). Le mot de code correspondant sera (x) = y.
Sil y a eu des erreurs durant la transmission, on recoit z. On appelle mot erreur associe a` z, le
mot e tel que z = y + e. On appelle syndrome de z le mot Hz.
On verifie immediatement quon a Hz = H(y + e) = He. Le syndrome ne depend que de
la maladie (erreur) et non du patient (mot a transmettre).
Definition 4.32. Lensemble des syndromes Sz de z est appelle classe literale de z.
Principe de decodage Soit un code lineaire de param`etre (k, n), corrigeant ec erreurs et
de matrice de controle 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 detecte pas derreur et on retourne 1 (z).
4. Sinon on recherche lerreur e de plus petit poids possible telle que He = s.
5. Si le poid w(e) est inferieur ou e gale a` ec , 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 Fn2 (utiliser au 2 et 5) et
comment trouver e (ligne 4). Si est un code systematique, alors m est le prefixe de longuer k
de (m). Dans ce cas 1 (c) et le prefixe de longueur k de c.
3. Table de dacodage
23
Table de dacodage
Pour trouver e, nous allons construire une table de decodage. Soit un code lineaire de
param`etre (k, n). Les matrices de controle associe a` sont de taille (n k) n. Lensemble
des syndromes possibles est donc Fn2 k .
Pour calculer la table de decodage de , on liste tous les syndromes de . Puis on liste tous
les mots z de Fn2 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 proceder des quon associer un mot a`
chaque syndrome. Le mot associe a` un syndrome s est alors lerreur de poid minimal donnants.
Exercice 4.33. Calculer la table de decodage pour les codes bits de parite (8, 9), repetition pure
(1, 3) et celui donner par matrice generatrice. Pour chacun des codes respectivement, decoder
les mots recus 101010100, 101 et 1100.
Solution : Pour le code bit de parite (8, 9), on a H = 1 1 1 1 1 1 1 1 1 . Lensemble des syndromes est Fn2 k = F2 = {0, 1}. On liste les mots z de Fn2 = F92 par poid
croissant :
z 2 F92
s = Hz
000000000
0
000000001
1
On obtient alors la table de decodage
syndrome
erreur
0
000000000
1
000000001
Si on recoit le mot z = 101010100. On calcule
2 3
1
607
6 7
617
6 7
6 7
607
7
s=H z = 1 1 1 1 1 1 1 1 1 6
617 = 0,
607
6 7
617
6 7
405
0
24
0
1 1 0
1
4
5
s = Hz =
1 =
1 0 1
0
0
syndrome erreur
00
000
01
001
10
010
11
100
2 3
1
1 1 0
1
s=H z =
405 =
1 0 1
0
1
Dapr`es la table de decodage, lerreur associe a` 10 est 010, on retournr le prefixe de longueur 2
de z + 010 = 101 + 010 = 111, a` savoir 11.
Le code correteur de matrice generatrice
2
3
1 0
60 1 7
7
G=6
41 0 5
1 1
a` la matrice
H=
1 0 1 0
1 1 0 1
z 2 F42 s = Hz
0000
00
0001
01
0010
10
0100
01
1000
11
La table de decodage est donc
syndrome erreur
00
0000
01
0001
10
0100
11
1000
2 3
1
6
7
1 0 1 0
1
1
7
s=H z =
6
405 = 0
1 1 0 1
0
3. Table de dacodage
25
Dapres lea table de decodage, lerreur associee au syndrome 10 est 0100 qui est de poids 1 or
ce code ne corrige aucune erreur, on ne peut donc pas finir le decodage.