Vous êtes sur la page 1sur 7

Chapitre 2

CODES CORRECTEURS D’ERREURS


EMPILEMENT DANS LES GRAPHES

Introduction

Codage Décodage
SOURCE DESTINATION
CANAL
Emetteur Récepteur

Perturbation

Figure 1 Schéma fondamental du codage

Les trois caractéristiques d’un bon code sont:

- E¢ cacité de la transmission: compression des données

- Sécurité de l’information: cryptage, authenti…cation

- Intégrité du message: corrections d’erreurs.

Quel que soit le canal considéré, on ne peut jamais le supposer sûr. Il y a


toujours des erreurs au cours des transmissions, et le message est susceptible d’être lu,
altéré par des tiers. Il s’agit alors pour l’emetteur d’envoyer des messages sous une
forme qui permette au destinataire de les reconstituer en tenant compte d’éventuelles
altérations au cours du transfert ou de la con…dentialité de certaines informations, tout
en minimisant la taille des données.

Taux d’erreurs: possibilité qu’un bit transmis par le canal soit di¤érent du bit
émis
nbre de bits érronés
= :
nbre de bits émis
PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS 14

Exemple 2.1
5
- Pour un CD ROM: 10 (7 Ko érronés sur un CD de 700 Mo).
12
- Communication …bre optique: 10 :
4
- Liaison téléphonique: entre 10 et 10 7 :

- ADSL: 10 3 à 10 9 :
12
- Réseau informatique: 10 :

2.1 PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS

2.1.1 Codage par blocs

Soit un canal qui transmet les symboles (caractères) d’un alphabet V . Pour un canal
binaire, V = f0; 1g :
Soit m 2 V + un message à transmettre. Le codage par blocs de taille k consiste
à découper le message en blocs Mi de k symboles, en traitant chaque bloc l’un aprés
l’autre.

S = [S1 ; :::; Sk ] émis sur le canal ! S 0 = [S10 ; :::; Sk0 ] séquence reçue.
Si Si 6= Si0 , on dit que le symbole i est érroné.
Si j symboles sont érronés, on dit qu’il y a j erreurs.
ex: 101 ! 100 il y a 1 erreur.

Pour détecter (et) corriger ces erreurs, la méthode de codage par blocs consiste
à ajouter de la redondance aux k symboles du bloc d’information du bloc initial.
Le bloc à transmettre S = [S1 ; :::; Sk ] devient un bloc de n = k + r symboles,
(S) = [C1 ; :::; Ck ; :::; Cn ] avec r symboles de redondances.

- L’ensemble C = (S); S 2 V k est appelé un code (n; k) (de longueur n et


de dimension k).
- Les éléments sont appelés mots de code.

Remarque 2.2 La fonction doit être injective pour pouvoir reconstituer sans ambi-
guités le message source (lorsqu’il n’y a pas d’erreurs).
PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS 15

k
- Rendement d’un code: R = :
n
Ainsi, la réception d’un mot qui n’est pas dans C indique une erreur.
Suite à une détection, le décodeur peut éventuellement procéder à une correc-
tion.
Il y a deux types de corrections:

- correction directe.
- correction par retransmission (ARQ: Automatic Repeat Request).

2.1.2 Exemples simples

Code de parité
On considère F = f0; 1g : on code le mot m = (u1 ; :::; uk ) par le mot:
X
k
(m) = (u1 ; :::; uk ; Ck+1 ) où Ck+1 = (u1 ; :::; uk ) = ui (mod 2):
Re dondance
| {z } i=1

Ex: 110=0; 111=1; 0101:

Propriété: L’ensemble des mots du code ont un nombre pair de 1.

- S’il y a 1 erreur de transmission (et 1 seule), on reconnait qu’il y a une erreur. Si le


mot émis 1010 est reçu avec une seule erreur, le mot arrivé sera 0010 ou 1011.

- S’il y a 2 erreurs, on ne peut pas détecter. 1100 ! 1010:

Donc: Le code de parité permet de détecter 1 erreur. Il ne permet pas de corriger


l’erreur.

Code de parité longitudinale et transversale


En considérant F = f0; 1g ; on construit un code (n; k1 k2 ) binaire comme suit: le mot
source m est représenté dans un tableau bidimensionnel de bits avec k1 lignes et k2
colonnes. Le mot de code (m) contient (k1 + 1) (k2 + 1) bits dont (k1 + k2 + 1) bits
de parité:
PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS 16

1 2 : : : k2 C1
1
2
:
:
:
k1
C2

Ce code permet non seulement de détecter mais aussi de corriger une erreur.

Il su¤…t de localiser la ligne et la colonne où s’est produite l’erreur.

0 1 0 1 0 0 1
Exemple 2.3 Si le mot source est de longueur 21 = 3 7: 0 0 0 1 0 0 1
0 0 0 0 0 0 0

0 1 0 1 0 0 1 1
0 0 0 1 0 0 1 0
Le mot est codé sur 32 bits: .
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 1

0 1 0 1 0 0 1 1
0 0 0 1 (1) 0 1 0
Si le mot reçu est: , on identi…e et on corrige.
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 1

Code de répétition
F = f0; 1g ; k = 1. On a 0 ou 1 à transmettre.

La redondance (u1 ) = u1 u1 :::u1 ; n = r + 1:


| {z }
r fois

- S’il y a 0 ou n erreurs, on a le mot du code.


- S’il y a entre 1 et n 1 erreurs, le mot n’est pas dans le code.

Donc, le code permet de détecter n 1 erreurs.


n 1
Si nous savons à priori que la transmission fait au plus erreurs, alors
2
n 1
le code permet de corriger erreurs.
2
PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS 17

Code de Hamming H [7; 4]


F = f0; 1g ; jCj = 16:

On a u1 u2 u3 u4 à transmettre, k = 4; r = 3 avec (u1 ; u2 ; u3 ; u4 ) = v1 v2 v3


8
< v1 = u2 + u3 + u4 (mod 2)
où v2 = u1 + u3 + u4 (mod 2) et on suppose le mot reçu u01 u02 u03 u04 v10 v20 v30 :
:
v3 = u1 + u2 + u4 (mod 2)
8
< w1 = u02 + u03 + u04 (mod 2)
On considère: w2 = u01 + u03 + u04 (mod 2) :
:
w3 = u01 + u02 + u04 (mod 2)

On considère le syndrome: S = (w1 + v10 ; w2 + v20 ; w3 + v30 ) (mod 2):

8
< w1 = v1 = v10
S’il n’y a pas d’erreur: w2 = v2 = v20 =) S = (0; 0; 0)
:
w3 = v3 = v30

8
< w1 = v1 = v10
S’il y a une seule erreur en j = 1 : w2 = 1 v2 = 1 v20 =) S = (0; 1; 1);
:
w3 = 1 v3 = 1 v30

- erreur en j = 2 =) S = (1; 0; 1); - erreur en j = 5 =) S = (1; 0; 0);


- erreur en j = 3 =) S = (1; 1; 0); - erreur en j = 6 =) S = (0; 1; 0);
- erreur en j = 4 =) S = (1; 1; 1); - erreur en j = 7 =) S = (0; 0; 1);

Donc le code permet de détecter et corriger une erreur.

S’il y a deux erreurs: par exemple erreur en j = 1 et 2, =) S = (1; 1; 0):

On peut croire qu’il y a une seule erreur (en j = 3) !


De plus, le nombre de syndromes possibles est égal à 23 = 8 alors que le nombre
de couple d’erreurs possible est 72 > 8:
Raisonnement cage à pigeons =) On ne peut pas corriger.

Cependant, S’il y a deux erreurs alors S 6= (0; 0; 0):


Donc on peut détecter s’il y a des erreurs (on ne sait pas s’il y en a 1 ou 2).
PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS 18

S’il y a trois erreurs: par exemple erreur en j = 1; 2 et 3 =) S = (0; 0; 0):

Donc, on ne peut pas détecter les erreurs.

Ainsi, le Code de Hamming H [7; 4] permet de détecter 1 ou 2 erreurs et permet


de corriger 1 erreur.

Exercice 1 :

On utilise le Code de Hamming H [7; 4]. On reçoit le mot m = 1000110:


Trouver le mot qui a la plus forte probabilité d’avoir été émis.

2.1.3 Structures Algébriques des mots de code

L’élaboration des codes par blocs nécessite de pouvoir faire des opérations et des calculs
sur les blocs.
8
< (F; +) est un groupe commutatif
Corps Finis: (F; +; ) est un corps si: (F n f0g ; ) groupe
:
distributive / +

Si jF j est …ni, on parle de corps …ni. On note F = f0; 1g = F2 :

Théorème 2.4 Si F est un corps …ni, alors jF j = pn avec p premier et n entier. De


plus, pour tout nombre premier p et tout entier n 1, il existe un corps …ni de cardinal
pn : Ce corps est unique (à un isomorphisme prés) et on le note GF [pn ] :

Théorème 2.5 Z=qZ si et ssi q est premier.

+ 0 1 0 1
Exemple 2.6 F = f0; 1g ; Z=2Z est un corps …ni. 0 0 1 0 0 0
1 1 0 1 0 1
PRINCIPE DE DETECTION ET DE CORRECTION D’ERREURS 19

0 1 2 3
0 0 0 0 0
Z=4Z n’est pas un corps: 1 0 1 2 3 (2 n’admet pas d’inverse).
2 0 2 0 2
3 0 3 2 1

Construction de GF [2]:

Soit (V; +; ) un corps et soit P un polynôme de degré d 1: On note V [X] =P


l’ensemble des polynômes de degré inférieur strictement à d muni de + et :
- C’est un anneau commutatif unitaire admettant 0 et 1 comme élément neutre
pour + et :
- Si P est un polynôme irréductible, alors V [X] =P est un corps.

Exemple 2.7 sur le corps V = F2 : Si on prend P = x2 + x + 1 (irréductible), l’anneau


V [X] =P = f0; 1; x; 1 + xg est un corps à 24 = 16 éléments.

+ 0 1 x 1+x 0 1 x 1+x
0 0 1 x 1+x 0 0 0 0 0
1 1 0 1+x x 1 0 1 x 1+x
x x 1+x 0 1 x 0 x 1+x 1
1+X 1+x x 1 0 1+X 0 1+x 1 x

Si F = f0; 1g ; F = GF [2] et F n : espace vectoriel de dimension n sur le corps


GF [2] :
Dans F n : mot de taille n vecteur de F n (addition dans F n addition
(mod 2)).

Ainsi, un code C est un sous ensemble de F n :

Remarque 2.8 On voit que la construction d’un bon code est liée à la construction
d’un corps avec p premier et le choix de polynôme irréductible.

Vous aimerez peut-être aussi