Codes lin´eaires
Correction par syndrˆ omes omes
Codes lin´eaires
Un exemple de d´ etection d’erreurs etection
Un exemple de d´ etection d’erreurs etection
On utilise p our la transmission un codage lin´ eaire eaire syst´ ematique ematique de taille 1 0 0 1 1 0 (3, (3, 6), donn´e par la matrice ma trice 0 1 0 1 0 1 . 0 0 1 0 1 1
Correction par syndrˆ omes omes
On re¸coit coit le message message 011111. Comment Comment savoir si ce message est correct? Le codage est syst´ematique, ematique, donc si ce message est correct, le mot d’origine ´etait etait 011, et on devrait retrouver le message re¸cu cu en codant 011.
Cette Cet te op´eration era tion • garder les p premiers bits du message re¸cu, les recoder, recoder, • prendre les n − p bits bits de contrˆole ole du r´ esultat esultat et les additionner aux bits de contrˆ oles oles du message re¸cu, cu, • compare co mparerr le l e r´esultat esul tat `a 0, 0, revient `a faire le produit du message re¸cu avec la matrice H =
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
2006 20 06-2 -200 007 7
77 / 96
1 = 1
1 0 0 1 , donc H 0 1 1
Dans l’exempl l’ex emplee pr´ec´edent, eden t, on a P
•
,
1 0 1 0 1 0 0
2006 20 06-2 -200 007 7
0 1 1 . 0 0 1
78 / 96
Correction par syndrˆ omes omes
1 1 1 Codage (3, (3, 1) par r´ep´ ep´etit et ition ion : = 1 0 . 0 1 Exemple de calcul de syndrˆome ome : (101) = 10, (111) = 00. 1 1 0 0 1 1 . Codage (4, (4, 3) par parit´ pari t´e : = 0 1 0 1 , donc = 1 0 0 1 1 1 Exemple de calcul de syndrˆome ome : (1011) = 1, (1001) = 0. 1 1 1 0 0 1 1 1 0 Autre code : = 0 1 0 1 0 , donc = 0 1 . Exemple 1 0 0 0 1 0 1 = 1
G
1 , donc
σ
•
Soit m un mot binaire de taille n. On appelle syndrˆ ome ome de m, et on note (m), le produit mH. C’est un mot de longueur n − p.
σ
Le syndrˆome ome correspond `a la somme des bits de contrˆoles oles du message re¸cu cu et des bits de contrˆole ole recalcul´ reca lcul´es.
2006 20 06-2 -200 007 7
79 / 96
•
G
G
H
σ
H
σ
D´efini efi niti tion on
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Exemples
D´efini efi niti tion on
G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
Soit C un code lin´ eaire eaire de taille ( mat ricee g´en´eratri era trice ce ( n, p ) ayant une matric standard G = (I p P , P ´ etant e tant la matrice de parit´ e. e . ) p ole ole du code C est la matrice de taille La matrice de contrˆ taille n × (n − p ) P = H = . I n−p
G. Montcouquiol (IUT Orsay)
Correction par syndrˆ omes omes
Matrice de contrˆ ole - syndrˆ ole omes omes
I n−p
1 1 = 01 0
On v´erifie erifie qu’on a bien 011111 01 1111 × H = = 001. G. Montcouquiol (IUT Orsay)
P
o` u P est la matrice de parit´e du codage.
On compare donc le message re¸cu cu 011111 avec celui obtenu en codant les trois premiers bits 011 → 011110 Seule la comparaison des trois bits de contrˆole est pertinente. On a trouv´ e 110 a` la place des bits re¸cus 111, l’erreur entre les deux est 110 + 111 = 001 = 000, donc le message re¸cu cu n’est pas correct.
σ
H
0 1 de calcul de syndrˆome ome : σ(01010) = 00, σ(11111) = 11.
G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
2006 20 06-2 -200 007 7
80 / 96
Codes lin´eaires
Correction par syndrˆ omes omes
Codes lin´eaires
Matrice de contrˆ ole et d´etectio ole etection n d’erre d ’erreurs urs
Matrice de contrˆ ole et d´ ole etectio n d’erreu etection d ’erreurs rs
D´emons emo nstra tratio tion n Soit m ∈ (Z/2Z)n un mot de longueur n . On note m I ∈ (Z/2Z)p le mot form´ for m´e des de s p premiers bits de m (bits d’informations), et m C ∈ (Z/2Z)n p le mot form´e des d es n − p dernier dernier bits de m (bits de contrˆole) ole) : m = m I .mC (concat (co ncat´ ´enation enat ion). ).
Th´eor or` `eme Soient C un code lin´eaire eaire et H sa matrice de contrˆ ole. Un message m est un mot du code si et seulement si son syndrˆ ome est nul : m ∈ C ⇐⇒ mH = = 0n−p
−
On utilise le fait que H s’´ s’ ´ecri ec ritt
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
2006 20 06-2 -200 007 7
mH = = 0n−p ⇔ (mI .mC ) ×
81 / 96
G. Montcouquiol (IUT Orsay)
P I n−p
.
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Correction par syndrˆ omes omes
Codes lin´eaires
Applications
2006 20 06-2 -200 007 7
82 / 96
2006 20 06-2 -200 007 7
84 / 96
Correction par syndrˆ omes omes
Applications
Soit C le code cod e lin´ li n´eaire eai re donn´ d onn´e par 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 G = 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0
P = 0 n−p ⇔ mI × P + + mC = 0n−p I n−p G ⇔ m ∈ C . ⇔ mC = mI × P ⇔ ⇔ mI .mC = m I × (I p p P ) ⇔ m = m I × G ⇔
La matrice de contrˆole ole fournit donc un moyen e fficace de d´ etection etecti on des erreurs.
G. Montcouquiol (IUT Orsay)
Correction par syndrˆ omes omes
1 0 10 = 11 0 0
sa matrice matr ice g´en´ en´eratri era trice ce stan s tandard dard 0 1 0 1 1
La matrice de contrˆole ole est H
Les mots m 1 = 010101010, m 2 = 111111111, m 3 = 011010000 font-ils partie partie du code ?
0 1 1 0 0 0 1 0 0 0
1 0 0 1 0 0 0 1 0
0 1 0 1 1 0 0 0 1
.
On calcule les syndrˆomes omes : m1 H = = 1100, = 0110, m2 H = m3 H = = 0000,
donc seul m 3 fait partie du code. G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
2006 20 06-2 -200 007 7
83 / 96
G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
Correction par syndrˆ omes omes
Codes lin´eaires
Syndrˆ omes et classes omes class es d’´ equivalence du code equivalence
Liste des syndrˆ omes omes
On rappelle ra ppelle la d´efinition efinitio n de la relation re lation d’´equivale equivale nce C assoc ass oci´ i´ee ee `a un code lin´ li n´eair ea iree C : + v ∈ C v ⇐⇒ u + u C v ∈ C
Th´eor or` `eme Deux messages sont ´equivalents pour la relation C si et seulement si ils ont le mˆeme eme syndrˆ synd rˆ ome : u C C v ⇐⇒ σ(u ) = σ (v )
D´emonst emo nstrat ration ion C v ⇔ u C v ⇔ u + v ∈ C ⇔ σ (u + + v ∈ + v ) = 0n−p ⇔ ⇔ σ (u ) = σ (v )
G. Montcouquiol (IUT Orsay)
σ
(u ) + σ(v ) = 0n
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
On va utiliser le fait que les classes d’´equivalences equivalences du code sont en bijection avec l’ensemble des syndrˆomes possibles On va donc construire un t ableau, appel´e liste des syndrˆomes, associant a` chaque syndrˆome ome possible un mot de plus petit poids ayant ce syndrˆome.
p
2006 20 06-2 -200 007 7
85 / 96
G. Montcouquiol (IUT Orsay)
Correction par syndrˆ omes omes
2006 20 06-2 -200 007 7
86 / 96
Correction par syndrˆ omes omes
Exemple
• On
commence par ´ecrire ecrire dans une u ne premi` prem i`ere ere colonne c olonne tous les syndrˆ omes omes possibles, c’est-` a-dire a-dire tous les mots de longueur n − p . • On parcourt ensuite l’ensemble des mots de longueur n de poids 0, 1, puis 2, 3 etc. Pour chaque mot on calcule son syndrˆome. Si c’est la premi`ere ere fois que q ue ce syndrˆome apparaˆıt, ıt, on ´ecrit le mot dans la deuxi` eme eme colonne, en face de son syndrˆome. continue jusqu’`a ce qu’il y ait un mot en face de chaque syndrˆome.
2006 20 06-2 -200 007 7
Soit C le code lin´ eaire eaire de taille (4 , 2), de matrice g´en´ en´eratrice eratr ice standard 1 0 1 1 G = (mˆ eme eme code que dans l’exemple du tableau standard). 0 1 0 1 1 1 0 1 La matrice de contrˆole ole est H = 1 0 0 1
M´etho et hode de
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
On se donne un u n code cod e lin´eaire eaire C , de taille ( n, p ), ), dont d ont on connaˆ c onnaˆıt ıt une matrice de contrˆole ole H .
G. Montcouquiol (IUT Orsay)
On a vu que le principe de la correction d’erreurs pour un code lin´eaire eaire consiste `a d´eterminer, etermi ner, dans d ans chaq ue classe clas se d’´equivale equivale nce du code, un mot de plus petit poids (le vecteur d’erreurs).
−
Construction de la liste des syndrˆ omes omes
• On
Correction par syndrˆ omes omes
87 / 96
Construction de la liste des syndrˆomes omes : syndrˆ omes omes 00 01 10 11
vecteurs vecteurs d’erreurs d’erreurs 0000 0001 0010 1000
G. Montcouquiol (IUT Orsay)
(0000) = 00 (0001) = 01 σ (0010) = 10 (010 0) = 01, 0 1, d´ej` ej`a pr´esent ese nt σ (0100) σ (1000) = 11 σ σ
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
2006 20 06-2 -200 007 7
88 / 96
Codes lin´eaires
Correction par syndrˆ omes omes
Codes lin´eaires
Utilisation de la liste des syndrˆ omes omes
Correction par syndrˆ omes omes
Exemple On avait obtenu la liste des syndrˆomes omes suivante :
M´etho et hode de Soit w le mot re¸cu. cu. On calcule son syndrˆome ome σ(w ).
On regarde dans la liste le vecteur d’erreurs e correspondant `a ce syndrˆ ome, puis on corrige le mot re¸cu en le rempla¸cant ome, cant par w = w + e .
Par construction de la liste, e est un ´el´ el´ement ement de p oids minimum dans la classe d’´equivale equivale nce de w . Donc w est bien un mot du code le plus proche de w , ce qui justifie cette m´ethode ethode de correction.
syndrˆ omes omes 00 01 10 11
vecteurs vecteurs d’erreurs d’erreurs 0000 0001 0010 1000
avec la matrice de contrˆole ole 1 1 0 1 = H = 1 0 0 1
Si on re¸coit coit le mot 0111 : σ(0111) = 10 = 10,, on le corrige en 0111 + 0010 = 0101.
Remarque Remarque : la liste des syndrˆomes omes n’est pas unique. En particulier, si
plusieurs mots de plus petit poids ont le mˆeme eme syndrˆome, le choix de celui qui apparaˆ apparaˆıt dans le tableau aura une influence sur la correction.
G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
2006 20 06-2 -200 007 7
89 / 96
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
2006 20 06-2 -200 007 7
90 / 96
Codes de Hamming Hamming
Matrice de contrˆ ole et distance du code ole
Attention Attention : pour la correction, correction, il faut disposer de la liste des syndrˆ omes omes et de la matrice de contrˆole ole (pour calculer les syndrˆomes).
• La
correction par syndrˆome ome est un p eu plus compliqu´ ee ee mais plus rapide et moins encombrante que la correction par tableau standard : elle est donc `a privil´ pr ivil´egier. egie r.
• La
construction de la liste des syndrˆomes omes peut peu t quand quan d mˆeme eme ˆetre etr e longue et fastidieuse. Pour certains co des lin´eaires eaires particuliers, il existe des m´ethodes ethodes de correction plus rapides.
G. Montcouquiol (IUT Orsay)
G. Montcouquiol (IUT Orsay)
Correction par syndrˆ omes omes
Remarques
•
Si on re¸coit coit le mot 0110 : σ(0110) = 11 = 11,, on le corrige en 0110 + 1000 = 1110.
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
2006 20 06-2 -200 007 7
La matrice de contrˆole ole donne directement des informations sur la capacit´e de correction corre ction d’un d’ un code cod e lin´eaire. eaire.
Th´eor`eme Soit C un code lin´ eaire, eaire, de distance de Hamming d (C ), et ayant une matrice matrice de contrˆ ole H. On a d (C ) ≥ 3 si et seulement si les lignes de H sont toutes distinctes et non nulles.
On se servira de ce r´esultat p our construire des co des lin´eaires eaires p ouvant corriger une erreur.
91 / 96
G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
2006 20 06-2 -200 007 7
92 / 96
Codes lin´eaires
Codes de Hamming
Codes lin´eaires
Matrice de contrˆ ole et distance du code ole
Codes de Hamming Hamming
Constructio Const ruction n de codes c odes lin´eaires eaires
D´emonst emo nstrat ration ion • On
remarque que le syndrˆome d’un mot de poids 1, 0... 0 ...010 010... ...0, 0, ayant exactement un 1 en i -` eme eme position, posit ion, est la i -`eme eme ligne lign e de H : les lignes de la matrice de contrˆole ole correspondent aux syndrˆomes omes des mots de poids 1. • Donc une ligne de H est nulle si et seulement si il existe un mot de poids 1 de syndrˆome ome nul, c’est-`a-dire a-dire un mot du code de poids 1, ce qui qu i ´equiv equ ivaut aut `a d (C ) = 1. • De
la mˆeme fa¸con, les syndrˆomes omes des mots de poids 2 correspondent aux sommes de deux lignes distinctes de H . • Deux lignes de H sont identiques si et seulement si leur somme est nulle, donc si et seulement si il existe un mot de poids 2 de syndrˆome nul, c’est-`a-dire a-dire un mot du code de poids 2. G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes lin´eaires
2006 20 06-2 -200 007 7
93 / 96
Pour construire con struire un code cod e lin´eaire eaire C de taille ( n, p ) pouvant corriger au moins une erreur (i.e. d (C ) ≥ 3) : •
on construit construit la matrice matrice de contrˆ ole ole H de taille n × (n−p ), ), en commen¸cant cant par l’identit´ e en bas, puis en ajoutant des lignes non nulles toutes di ff ´erentes erentes (possible (possibl e uniquement uniqu ement si n ≤ 2n p − 1) −
P , on connaˆıt ıt la matrice de parit´e P , et donc I n−p la matr m atrice ice g´en´ en´erat erat rice standard stan dard G = (I p p P ) du code.
• connaissant H =
G. Montcouquiol (IUT Orsay)
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
Codes de Hamming
Codes lin´eaires
Codes de Hamming
2006 20 06-2 -200 007 7
94 / 96
Codes de Hamming Hamming
Exemples de codes de Hamming •
D´efini efi niti tion on Un code de Hamming est un code lin´ eaire eaire dont la matrice de contrˆ ole H est constitu´e de tous les mots binaires non nuls de longueur k. C’est un code parfait, de taille (2 k − 1, 2k − 1 − k ), et de distance 3 3 . Exercice : construire un mot du code de poids 3.
Les codes de Hamming Hamming sont simples `a construire et permettent de corriger exactement une erreur, ce qui justifie leur utilit´e. e.
1 1 = 1 0, donc
Si k = 2 : alors H
Codes d´ etecteurs et correcteurs d’erreurs etecteurs
2006 20 06-2 -200 007 7
95 / 96
G = 1 1 1 .
0 1 On retrouve le code (3, (3, 1) par r´ep´ ep´etition etitio n : c’est le plus plu s petit pe tit code de Hamming. 1 1 1 1 1 0 1 0 1 • Si k = 3 : on construit H = 0 1 1 par exemple, donc 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 . C’est un code de Hamming de taille G = 0 0 1 0 1 0 1 0 0 0 1 0 1 1 (7, (7 , 4). G. Montcouquiol (IUT Orsay) Codes d´ etecteurs et correcteurs d’erreurs etecteurs 2006 20 06-2 -200 007 7 96 / 96
G. Montcouquiol (IUT Orsay)