You are on page 1of 4

Il existe trois grands types de codes :

la compression : diminuer le cot de stockage et de transmission de l'information


(diminuer taille et redondance)

la cryptographie : assurer la confidentialit de l'information

les codes de contrle (dtecteurs et correcteurs d'erreurs) : assurer la fiabilit du


stockage et de la transmission de l'information (augmentation de la redondance)

Leur tude a t initie par Shannon il y a une cinquantaine d'annes avec la thorie de
l'information. Les thormes de Shannon ont montr l'existence de codes optimaux
(correcteurs d'erreurs et compression), et Varshamov et Gilbert ont montr la mme poque
l'existence de codes ayant un taux de transmission optimal par rapport la fiabilit.
Nous allons tout d'abord dfinir les outils utiliss puis tudier quelques exemples de codes de
contrle.

Qu'est-ce qu'un code correcteur ?


Lors de la transmission ou stockage de l'information code, sous forme de mots, il peut y
avoir des imperfections, du bruit qui causent un risque d'omission ou de modification d'un
symbole.

Code
Commenons par dfinir mathmatiquement quelques termes :

alphabet.........ensemble fini F (de symboles)

mot...............k-uplet

vocabulaire.....ensemble A de mots,

code..............application injective :

, k tant fixe

(A, B vocabulaires)

Exemples de codes :

code gntique : {nuclotides A, C, G, U}3 -> {acides amins}

langues et traduction
Ces deux exemples de codes ne sont pas des applications injectives.

conversion de bases : binaire <-> hexadcimal, {0,1}4 <-> {0,...,9,A,...,F}


(applications bijectives)

Alphabets utiliss
Un code efficace ncessite des relations entre les symboles, donc des alphabets numriques
qui permettent d'effectuer des oprations mathmatiques sur les symboles.
Les oprations les plus simples, l'addition et la multiplication, sont dfinies dans un corps. Un
corps est un ensemble muni de deux oprations, qui doivent vrifier quelques proprits,
notamment la stabilit (toute combinaison d'lments du corps avec ses oprations doit donner
un rsultat qui appartient au corps) et la symtrisation des lments (chaque lment doit
avoir un inverse et un oppos dans le corps).
Par ailleurs un alphabet fini implique un corps fini, que l'on munit des addition et
multiplication modulo p (on ne garde que le reste de la division euclidienne du rsultat par le
cardinal p du corps).
De plus, si F est un corps, l'ensemble des mots de k symboles F^k est un espace-vectoriel. Les
mots sont alors des vecteurs, ce qui permet d'utiliser toutes les ressources de l'algbre linaire.
De nombreux codes sont linaires, ce sont donc des applications linaires qui ont une matrice
associe, utile pour les calculs.
On utilisera dsormais l'alphabet binaire {0,1} muni des addition et multiplication modulo 2
(ainsi 1+1 = 0).

Code de contrle
On caractrise un code par trois nombres : code [n,k,d]

n = dimension du vocabulaire but (nombre de symboles des mots)

k = dimension du vocabulaire source

d = distance minimale (nombre minimal de symboles diffrents) entre deux mots du


vocabulaire but

k/n reprsente alors le taux de transmission (vitesse) et d/n la fiabilit de transmission.


On peut sparer les codes de contrle en deux catgories :

Les codes dtecteurs d'erreur (ex : bit de parit)

Les codes correcteurs d'erreur : permettent de dtecter et corriger les erreurs.


On utilise le principe de dcodage par vraisemblance maximale : si le mot reu
n'appartient pas au vocabulaire, le mot envoy est le mot du vocabulaire le plus proche
(au sens de distance de Hamming : nombre de coordonnes diffrentes = d). On
suppose donc que le minimum d'erreur a t commis.
Pour pouvoir corriger une erreur il faut que d soit suprieur ou gal trois.
Ces codes se basent sur la redondance (rptition) de l'information.

Exemples de codes de contrle

Codes dtecteurs d'erreurs et bit de parit


Les codes dtecteurs d'erreur consistent crer la signature d'un mot. On peut protger autant
de symboles que l'on veut avec un symbole (seuls problmes : localisation de l'erreur et risque
d'erreurs multiples se compensant).
Ces codes sont trs simples et conomes donc trs utiliss (calcul de CRC dans les fichiers
informatiques, numro RIB, numro SECU, transmission modems).
Bit de parit
Le bit de parit est un code [k+1,k,1], dont le principe est d'ajouter un bit au mot de sortes que
le nombre de bits 1 du mot soit pair. Il suffit alors de calculer ce bit la rception et de le
comparer avec celui envoy pour savoir si une erreur de transmission a t commise. Il est
particulirement utilis dans les modems, puisque chaque octet en contient un ce qui permet
au modem de redemander un octet erronn, avec une perte de temps minimale.
Mais lorsque la source n'est pas disponible comme pour un modem, comme pour le stockage
sur disquette par exemples, il peut ne pas tre suffisant de savoir qu'une donne est erronne
mais pouvoir la corriger.

Le codage triple rptition


C'est un code [3,1,3], trs simple, qui consiste rpter trois fois chaque mot. Il permet
videmment de corriger une erreur dans chaque symbole de donne, mais est trs coteux,
puisqu'il multiplie par 3 la taille des donnes (k/n = 1/3).

Le code de Hamming
Le code de Hamming est une code [7,4,3]. Il prend donc en entre des mots de 4 bits de
donnes, et ajoute 3 bits de contrle pour donner des mots de 7 bits.
Plus prcisment : (u1 ,u 2,u3 ,u4 ) -> (u1 ,u2 ,u3 ,u4,u 5 ,u6,u7 ) o :

u5 = u1 + u 2 + u3

u6 = u2 + u 3 + u4

u7 = u1 + u 2 + u4

Les bits de donne 1, 3 et 4 apparaissent dans deux quations, le bit de donne 2 dans trois, et
les bits de contrle 5, 6 et 7 dans une seule.
On peut alors vrifier que l'on a bien d = 3 : en modifiant un bit de donne, intervenant dans
deux ou trois quations, il faut modifier deux ou trois bits de contrle pour que les quations
soient vrifies, ce qui signifie que le nombre minimal de bits diffrents entre deux mots est 3.
Il permet donc bien de corriger une erreur dans le mot.
Pour le dcodage on est confront plusieurs cas :

Aucune quation fausse : pas d'erreur (ou plusieurs qui se compensent)

Une quation fausse : seuls les bits de contrles n'interviennent que dans une quation,
c'est donc le bit de contrle en cause qui est erron.

Deux quations fausses : seuls les bits de donne 1, 3 et 4 interviennent seulement


dans deux quations, c'est donc le bit de donne commun aux deux quations fausses
qui est erron.

Trois quations fausses : seul le bit de donne 2 intervient dans les trois quations,
c'est lui qui est erron.

Le codage de Hamming reste cependant mdiocre par rapport aux critres de Varshamov et
Gilbert, c'est pourquoi de nouveaux codes ont t recherchs et sont en train de voir
effectivement le jour.

Les codes de Goppa (gomtrico-algbriques)


Il s'agit d'une gnralisation des codes de Reed-Solomon (utiliss par exemple dans les CD
audios).
Ces codes utilisent les courbes sur un corps fini, d'quation P(x;y) = 0 (o P est un polynme
de degr m). En notant (Pj(xj;yj))1<=j<=n les solutions de l'quation (points de la courbe), et en
choisissant une base (Gi)1<=i<=k des polynmes deux inconnues de degr infrieur m, on
construit la matrice G de dimension k,n tel que ses lments soient gij = Gi(Pj), qui dfinit un
code [n,k,d] pour lequel on peut montrer que d >= n - d(P).
Ces codes ont une grande distance minimale, ce qui les rend avantageux pour les
transmissions trs perturbes (satellite ...).
Exemple : avec la courbe de Klein x3y + y3 + y = 0 qui a 24 solutions dans le corps 8
lments, on peut construire un code [24,3,21] qui permet de corriger jusqu' 10 erreurs dans
un mot.
On a montr qu'il existe des codes de Goppa sur des corps de cardinal suprieur 49 qui font
mieux que l'optimum dfini par Varshamov et Gilbert.

Conclusion
Les codes correcteurs d'erreurs sont donc encore un sujet de recherche active, visant
principalement une mise en oeuvre efficace. Ils sont peu connus mais trs utilis, car la
fiabilit des transmissions et du stockage est une ncessit.

You might also like