Les codes correcteurs d’erreurs
On fait des erreurs quand on utilise un canal de transmis-
sion avec du bruit.
➤Ligne de transmission (téléphone, radio, parole,...)
➤Transcription (papier, support magnétique,...)
Théorème de Shanon : On peut toujours réduire le débit
d’information pour diminuer le taux d’erreurs.
Pour représenter de l’information, on la code. Pour détecter
ou corriger des erreurs, il faut augmenter la redondance du
code. En général on travaille sur des codes binaires qui ont
comme taille kbits et qui peuvent représenter Minforma-
tions (mots du code). M << 2k.
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 8
Les codes correcteurs d’erreurs (2)
On dispose d’une procédure qui permet de vérifier si un mot
parmi le 2kmots possibles est valide : code detecteurs d’er-
reurs.
Si le code est bien construit, on peut remplacer un mot
contenant une erreur, par un mot correct voisin : code cor-
recteurs d’erreurs.
On construit de tels codes en utilisant les corps finis et
beaucoup de Mathématiques en plus!!!
✧Codes linéaires, codes cycliques;
✧Utilisés dans tous les disques dur CRC;
✧Utilisé dans les CD-Audio et CD-ROM, l’information codé est prati-
quement le double de l’information utile. On fait toujours des erreurs
quand on lit un CD!!!;
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 9
La carte d’étudiant
On veut savoir s’il y a eu une mauvaise transcription d’un
numéro de carte d’étudiant.
9623181E
c8c7c6c5c4c3c2c1
c1est la clé. Sa valeur est choisie de telle manière que :
8
X
i=1
ici≡0 (mod 11)
A→1F→6
B→2G→7
C→3H→8
D→4J→9
E→5K→10
8×9 + 7 ×6 + 6 ×2 + 5 ×3 + 4 ×1 + 3 ×8 + 2 ×1 + 1 ×5 = 176
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 10
La carte d’étudiant (2)
Détecte une erreur simple : Si c= (c8, . . . , c1)est correct
alors P8
i=1 ici≡0 (mod 11). Supposons une erreur sur le
chiffre ialors c0= (c8, . . . , c0
i, . . . , c1),ona:
8
X
i=1
ic0
i≡
8
X
i=1
ici+i(c0
i−ci)≡i(c0
i−ci)6≡ 0(mod 11)
Détecte une permutation de 2 chiffres : Avec les mêmes no-
tations c0
i=cjet c0
j=ci
8
X
i=1
ic0
i≡i(cj−ci) + i(ci−cj)≡(cj−ci)(i−j)6≡ 0(mod 11)
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 11
La carte d’étudiant (3)
Corrige une erreur en position connue : Si l’on a
c= 96x3181E
c’est à dire que le troisième chiffre est effacé. Alors :
8×9+7×6 + 6 ×x+ 5 ×3 +4 ×1+ 3×8 +2 ×1+ 1×5 = 164+6x
Pour que le code soit valide :
164 + 6x≡0 (mod 11) 6x≡1 (mod 11)
x≡6−1≡2 (mod 11)
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 12
Le code ISBN
C’est un code à dix chiffres pour tous les livres : Internatio-
nal Standard Book Number. Par exemple le livre : Méthodes
Mathématiques pour l’Informatique
2 04 018617 4
Langue Editeur No du livre clé
Si c= (c1, c2, . . . , c10)alors
10
X
i=1
ici≡0 (mod 11)
Attention si on doit noter 10 on le représente par X. Par
exemple : L’anatomie de Prolog : ISBN 2 7296 0149X.
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 13
Le code de la Sécurité Sociale
C’est un nombre Nss de 13 chiffres avec une clé de vérifi-
cation qui est un nombre deux chiffres.
1 xx 07 75 114524 84
Sexe Année Mois Départ. No registre clé
Nss +Cle ≡0 (mod 97)
Pour calculer cette clé avec une calculatrice, il faut couper
le nombre Nss en deux. On a :
1000000 ≡27 (mod 97)
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 14
Le code du RIB
Il s’agit de la clé utilisé dans tous les numéros de comptes
bancaire. Voici la structure du code RIB :
30004 00703 0000xxxxxxx 94
Banque Guichet Numéro de compte clé RIB
Ce code est considéré comme un nombre Nc de 23 chiffres
dont les deux derniers chiffres sont la clé RIB qui est tel
que :
Nc ≡0 (mod 97)
Attention, c’est légèrement différent du code de la Sécurité
Sociale.
Turing : des codes secrets aux machines universelles #4 c
2003 MVC 15