De cette manière si vous recevez un message de la forme (0,0,1,1,0,0,0,1), vous savez qu’il y a eu
un problème et vous pouvez demander que l’on vous renvoie le message. Si vous recevez un message
˜m= (1,1,0,0,0,0,0,0) alors il se peut que
1) il n’y ait pas d’erreur,
2) le message original soit, par exemple, (1,1,0,0,0,1,1,0).
Il n’y a pas moyen de voir s’il y a une erreur. On voit donc que notre code peut détecter une erreur. Ce
code s’appelle le code de parité.
L’idée est donc de rajouter de l’information afin de pouvoir détecter des erreurs et éventellement les
corriger. Dans l’exemple ci-dessus on ne peut que repérer une erreur mais pas la corriger. Un « bon code »
doit donc
1) ne pas trop diluer l’information
2) pouvoir détecter et corriger un nombre raisonnable d’erreurs
3) coder « rapidement » les messages
4) décoder « rapidement » les messages
3.1 Généralités
Un code correcteur de paramètre (k, n)est une application injective
Φ : Fk
2−→ Fn
2
m7−→ Φ(m).
∗Les mots de Fk
2sont les mots sources, c’est l’information que l’on souhaite communiquer.
∗Les mots de Fn
2sont les mots de code. On notera C= Im(Φ) l’ensemble des mots du code. C’est un
sous-ensemble de Fn
2.
∗Le paramètre kest appelé la dimension du code
∗le paramètre nla longueur du code.
Un code est dit systématique les kpremières composantes de Φ(m)sont égales à m. En d’autres termes si
m= (m1, . . . , mk)alors Φ(m) = (m1, . . . , mk, . . .). Nous ne considérerons que des codes systématiques.
Exemple 3.2. 1) Le code de parité introduit dans l’exemple précédent est un code de paramètre (7,8).
2) On introduit le code suivant :
Φ : F2−→ F3
2
07−→ (0,0,0)
17−→ (1,1,1)
C’est un code de paramètre (1,3). L’ensemble Ccontient deux éléments. Une étude rapide montre
que ce code peut détecter 2 erreurs et corriger 1 erreur.
3.2 Distance de Hamming
Commençons cette section par reprendre l’exemple 2) précédent. Si on reçoit le message (0,1,0) alors on
voit qu’il y a forcément eu une erreur. Il se peut que
1) le message envoyé était (0,0,0) et il y a eu une erreur lors de la transmission ;
2) le message envoyé était (1,1,1) et il y a eu deux erreurs lors de la transmission.
Le premier cas est plus probable que le deuxième, donc si on reçoit (0,1,0) on corrigera ce message
en (0,0,0).
1) Soit x, y ∈Fn
2. La distance de Hamming entre xet yest définie par
d(x, y) = nombre de coordonnées distinctes entre xet y.
2) Le poids de x∈Fn
2est défini par w(x) = d(x, 0).
3) Soit Cun code. La distance minimale de Cest définie par :
dC= min{d(x, y)|x, y ∈C, x 6=y}.
Définition 3.3.
5