Vous êtes sur la page 1sur 34

Cours: Théorie de l’information et communication numériques

Première Partie : Théorie de l’information


Chapitre 0 : Paradigme de Shannon
Chapitre 1 : Mesure de l’information
1.1. Espace probabilisé discret
1.2. Espace probabilisé joint. Probabilités conditionnelles
1.3. Incertitude et information propre
1.4. Information Mutuelle
1.5. Entropie d’un Espace. Entropie Conditionnelle
1.6. Information Mutuelle Moyenne
Chapitre 2 : Codage des sources discrètes sans mémoire
2.1. Entropie d’une source discrète
2.2. Efficacité du codage de source
2.3. Théorème de codage de source pour les codes à longueur fixe et variable
2.4. Premier théorème de Shannon
2.5. Codage de Huffman et de Lempel-Ziv
Chapitre 3 : Codage de canal
3.1. Modélisation d’une chaîne de communication numérique
3.2. Capacité d’un canal
3.3. Deuxième théorème de Shannon
Chapitre 4 : Codes correcteurs d’erreurs
4.1. Aptitude d’un code de détecter et à corriger des erreurs
4.2. Génération et détection d’un code correcteur d’erreur

Deuxième Partie : Communication numérique


Chapitre 5 : Modulation numérique. Représentation spectrale. Récepteur optimal
5.1. Structure d’une chaîne de communication
5.2. Définition des modules numériques linéaires
5.3. Equivalent de Bande de base et passe bande
Chapitre 6 : Représentation vectorielle. Réparation spectrale des modulations
numériques
6.1. Constellations et modulation linéaires PAM, QAM, QPSK et PSK
6.2. Transmission dans un canal à bruit additif blanc Gaussien. Récepteur optimal
6.3. Critère de Nyquist et Interférence entre symboles IES.
6.4. Performances des modulations sans mémoires.
Paradigme de Shannon

La figure ci-dessous illustre le paradigme de la communication selon Shannon qui dit que :

Le problème fondamental de la communication est de reproduire en un point, soit exactement,


soit approximativement, un message recueilli en un autre point.

Fig.1.1. Le paradigme de Shannon de 1948


Dans cette figure, on voit qu’un message émis par une source d’information est transmis dans
un canal bruité puis reçu par le destinataire. On y distingue les rôles de la source, du canal et
du destinataire ; de l’émetteur et du récepteur ; du signal et du bruit.

De fait, la théorie de Shannon se fonde sur la théorie des probabilités : il commence par laisser
de côté l’aspect sémantique -le « sens » de l’information- en considérant tout message comme
résultant d’un choix dans un ensemble d’alternatives, selon un modèle probabiliste :

Fréquemment, les messages ont une signification, c’est-à-dire qu’ils se réfèrent ou sont corrélés
selon certaines modalités à des entités physiques ou conceptuelles. L’aspect essentiel est que
le message effectif est choisi dans un ensemble de messages possibles. Le système doit
fonctionner pour tous les choix que l’on peut faire et non seulement pour celui qui est
effectivement fait, puisque celui-ci est inconnu au moment de la conception du système.

Grâce à Shannon, il apparaît le terme bit, aujourd’hui omniprésent en informatique, comme


mesure logarithmique de l’information. Le choix le plus naturel est celui de la fonction
logarithme. Bien que cette définition doive être considérablement généralisée quand nous
considérons l’influence des données statistiques du message et quand nous avons une gamme
continue de messages, nous utiliserons dans tous les cas une mesure essentiellement
logarithmique. La mesure logarithmique est la plus adéquate pour différentes raisons. Si on
utilise la base 2, l’unité peut être appelée « binary digit » ou, plus simplement, « bit », un terme
suggéré par J. W. Tukey.

Shannon crédite J. W. Tukey mais c’est bien lui, Shannon, qui popularise ce terme avec l’idée
révolutionnaire, devenue évidente aujourd’hui, que toute information peut être portée par des
Paradigme de Shannon

suites de 0 et de 1. A noter que le bit comme unité proposée par Shannon va plus loin que le
simple chiffre binaire, car il prend en compte l’aspect probabiliste de l’information. D’ailleurs,
aujourd’hui, l’unité officielle de la mesure d’information s’appelle... le Shannon (sh).

L’unité sh ou Shannon est une unité de mesure logarithmique de l'information, mesurant la


quantité d'information contenue dans un message comme étant le nombre de bits minimal pour
le transmettre.
Exemple du télégraphiste
Un télégraphiste transmet les 26 caractères de l'alphabet, les 10 chiffres et des espaces. Un
message télégraphique d'un caractère peut donc avoir 37 valeurs. Si on suppose que tous les
caractères ont la même probabilité (comme dans un texte crypté), chacun porte un peu plus de
5 Shannon (25 = 32 possibilités), plus précisément log2(37) ≈ 5,2. Pour le transmettre, il faut 6
bits. La compression de données consiste à rapprocher le nombre de bits du nombre de shannons
(ce dernier prenant en compte la probabilité d’une information).

L’influence des théorèmes de Shannon sur le développement des télécommunications, quoique


considérable, n’a pas toujours été évaluée à sa juste mesure. Shannon énonce et résout le
problème théorique de la communication. Il ne propose quasiment aucune solution pratique,
mais établit des limites de performances, ce qui est au moins aussi important. Avant Shannon,
des moyens de communication comme le télégraphe ont été développés pour ainsi dire dans le
brouillard, sans le repère ultime permettant de savoir jusqu’où on pouvait aller. Avec Shannon,
sont enfin connues les limites fondamentales de performances qu’il est possible d’atteindre,
offrant ainsi aux ingénieurs la référence à laquelle tout système pratique peut se comparer. Sans
les théorèmes de Shannon, tous les systèmes numériques modernes auraient mis beaucoup plus
de temps à se développer. Il a fallu des décennies avant de voir apparaître quelques solutions
pratiques qui s’approchent des limites de Shannon.
Chapitre 1. Mesure de l’information

On va donner une mesure de la quantité d’information qui est adaptée à la description statistique
des sources et des canaux. Les énoncés qui en résultent font appel aux probabilités discrètes.

1.1. Espace probabilisé discret


Considérerons des ensembles finis munis d’une probabilité discrète p . L’espace probabilisé est noté

 A, p  La loi de probabilité est dite uniforme si p  a  = 1 n , où n = card(A), pour toute lettre a


de A. Une variable aléatoire de (A, p) est une fonction de A dans un ensemble quelconque. Une
variable aléatoire est réelle si l’espace d’arrivée est R. L’espérance d’une variable aléatoire
réelle v est le réel E  v  =  p  a .v  a  encore appelé moyenne de v.
aA

1.2. Espace probabilisé joint. Probabilités conditionnelles


Considérons l’espace A× B produit de deux ensembles A = a1 ,...,a n  et B = b1 ,..., b m  . Le

produit est formé des couples (a, b) avec a dans A et b dans B. On munit cet ensemble d’une loi de
probabilité discrète, notée p AB , appelée loi de probabilité jointe de A et B. L’espace de probabilité
joint est aussi noté AB.
A B
ai bi
La probabilité p AB  a, b  est la probabilité d’avoir simultanément a en entrée et b en sortie. On

définit une loi de probabilité p A sur A par

pA (a) =  pAB (a, b)


bÎB
On vérifie que c’est bien une loi de probabilité sur A. On définit une probabilité pB sur B de

façon similaire. Les deux lois p A et pB sont appelées lois marginales.

On définit maintenant les lois conditionnelles. Soit a une lettre de A telle que p  a  > 0 . La

probabilité conditionnelle pour que l’on ait b en sortie sachant que l’on a a en entrée est définie
par
p AB (a, b)
p B A (b a) =
p A (a)
On dit également qu’il s’agit de la probabilité conditionnelle pour que l’on ait {B = b} sachant
que {A= a}. Notez ici l’abus de notation car A et B désignent ici des variables aléatoires.
De façon symétrique, on a
p AB (a, b)
p A B (a b) =
p B (b)
Chapitre 1. Mesure de l’information

On dit que les événements {A=a}et {B=b} sont statistiquement indépendants


pAB  a, b  = pA  a  .pB  b  . Lorsque cette égalité est vraie pour tout couple AB, alors les espaces
A et B sont dits statistiquement indépendants. On parle alors d’espace probabilisé produit.

Lorsqu’il n’y aura pas de confusion on notera p toutes les probabilités ci-dessus. Ainsi on notera
p(b|a) la probabilité conditionnelle pour que l’on ait {B=b} sachant que {A = a}, et p(a|b) la
probabilité conditionnelle pour que l’on ait {A=a} sachant que {B=b}. Attention à ces notations
car par exemple si A = B = {0, 1}, pA|B (0|1) peut très bien être différent de p B A  0 1 .

1.3. Incertitude et information propre


En suivant le modèle probabiliste, fournir une information à un utilisateur consiste à choisir un
événement parmi plusieurs possibles. Qualitativement, fournir une information consiste donc à lever
une incertitude sur l’issue d’une expérience aléatoire. La notion d’information est déjà
immanente à celle de probabilité conditionnelle.

Considérons les événements {A = a} et {B = b}. La probabilité p(a|b) peut être interprétée


comme la modification apportée à la probabilité p(a) de l’événement {A = a} lorsque l’on reçoit
l’information que l’événement {B = b} s’est réalisé.
Ainsi :
- si p(a|b) ≤ p(a), l’incertitude sur a augmente,
- si p(a|b) ≥ p(a), l’incertitude sur a diminue.
Pour mesurer la variation de l’incertitude, il faut choisir une fonction décroissante de la
probabilité. On notera I  a  l’incertitude sur a , encore appelée information propre de a :

I  a  = -log 2 p  a 
L’information propre de l’événement A = a est I  a  = -log2p  a  . L’information propre

s’interprète comme la quantité d’information fournie par la réalisation de cet événement. Notons
que l’information propre est toujours positive ou nulle et que, plus un événement est
improbable, plus son information propre est grande. A l’inverse, la réalisation d’un événement
certain n’apporte aucune information, ce qui semble conforme à l’intuition.
La quantité d’information fournie par la réalisation de deux événements a et b statistiquement
indépendants doit être égale à la somme des quantités d’information propre fournies par les
réalisations de a et b pris séparément. On a donc :
I  a, b  = I  a  + I  b 
avec p  a, b  = p  a  p  b  lorsque a et b sont indépendants.
Chapitre 1. Mesure de l’information

On peut même montrer que si la mesure de l’information vérifie de plus un autre axiome appelé
condition de regroupement, la fonction log est la seule possible. On doit donc choisir une
fonction de la forme I  a  = loge p  a  avec λ < 0. Le choix de λ dépend de l’unité de

d’information choisie. Nous utiliserons le bit. Un bit est égal à la quantité d’information fournie
par le choix d’une alternative parmi deux équiprobables. Ceci signifie que si une lettre est
choisie dans l’alphabet A = {0, 1} muni d’une loi de probabilité uniforme, alors la quantité
d’information fournie par la réalisation de l’événement {A = a} est de un bit. On a ainsi I(0)=λ
log2 p(0) = −λ log2 2 = 1. Donc λ = -1 log 2 2 . D’où I  a  = -log 2 p  a  .

Le bit est ici à comprendre dans son sens originel de « binary unit » et non « binary digit ». La
confusion provient du fait que pour représenter une information de n bits, il faut n symboles
binaires.
Exemple:

Soit A = a 0 , . . . ,a15  un alphabet de 16 lettres équiprobables. L’information propre d’une

lettre a quelconque est I  a  = -log 2 1 16  = 4 . Dans ce cas particulier, l’information va consister

à choisir un entier i dans {0, 1, . . . , 15} et pour représenter cette information il faut disposer de 4
bits. Il faut prendre garde au fait que ceci n’est vrai que parce que les lettres sont équiprobables.

2.4. Information mutuelle


On considère un espace probabilisé joint AB où A = a1 ,...,a n  et B = b1 ,..., b m  .

L’information mutuelle entre les événements A = a et B = b est définie par :

 p a | b 
I  a; b  = log 2 
 p  a  
 
Par définition
p  a, b  = p  a b  p  b  = p  b a  p  a  .

Donc
 p  a, b  
I  a; b  = I  b;a  = log 2 
 p  a  p  b  
 
On va discuter le signe de I  a ;b  .

- I  a ;b  > 0 signifie que si l’un des deux événements se réalise, alors la probabilité de l’autre
augmente;
- I  a ; b  < 0 signifie que si l’un des deux événements se réalise, alors la probabilité de l’autre
diminue;
- I  a ;b  = 0 signifie que les deux événements sont statistiquement indépendants.
Chapitre 1. Mesure de l’information

Considérons l’information mutuelle entre l’événement {A = a} et lui-même. Rigoureusement,

ceci consiste à calculer I  a; b  lorsque l’événement {B = b} spécifie de façon unique {A = a}

c’est-à-dire lorsque p  a | b  = 1 . On a alors :

p a | b 1
I  a; b  = log 2 = log 2 .
p a  p a 
D’où I  a;b  = -log 2 p  a  = I  a  . Il s’agit en fait de la quantité maximale d’information que peut

fournir {A = a}.
On peut également définir dans l’espace probabilisé joint AB, l’information propre
conditionnelle de a sachant b qui est la quantité d’information fournie par l’événement {A = a}
sachant que l’événement {B = b} est réalisé :
I  a | b) = -log 2 p  a | b 
L’information mutuelle entre deux événements est donc
I  a ;b  = I  a  - I(a | b).
1.5. Entropie d’un espace
On peut également définir la moyenne de l’information propre d’un espace probabilisé A. Cette
moyenne s’appelle entropie de l’espace A :
H A =  p  a  I  a  = - p a  log p a 
aA aA
2

1.6. Entropie conditionnelle


Enfin l’information propre conditionnelle est une variable aléatoire réelle et nous pouvons
définir sa moyenne appelée entropie conditionnelle de A sachant B. Elle est définie sur l’espace
de probabilité joint AB :
H  A | B = -  p  a, b  log p  a | b .
aA,bB
2

1.7. Information mutuelle moyenne


L’information mutuelle moyenne de A et B dans l’espace probabilisé joint AB est définie par :
I  A; B =  p  a, b  I  a; b 
aA;bB

On a donc
  p a, b
I(A; B) =  p  a, b  log p  a  p  b 
aA,bB
2

On en déduit que I (A ; B) = H(A) − H(A|B).


Chapitre 2. Codage des sources discrètes sans mémoire

On appellera codage d’une source discrète une application qui associe à chaque séquence finie
de lettres de la source une séquence binaire finie. Il s’agit donc d’une application de A∗ dans
{0, 1}∗, où A est l’alphabet de la source. Quand on parlera de codage, on supposera que cette
application est injective. Un cas particulier de ces codages consiste à associer à chaque lettre de
A un mot de {0, 1}∗. Si on note c cette application de A dans {0, 1}∗, le codage d’un mot
u = u1 . . . un est alors le mot c(u1) . . . c(un). On le note c(u) ce qui étend c à A∗. On note C
l’ensemble des codes possibles des lettres donné par l’expression suivante :
C = {c  a  | a  A}
La sortie de la source est une séquence de lettres tirées d'un alphabet fini A = a1,....a n  . Chaque

lettre a i de l'alphabet apparaît avec une probabilité pi = p  a i  . Le codage de source consiste à

représenter ces séquences en binaire le plus efficacement possible. Un bon choix du code
dépend de la loi de probabilité p.
Exemple de codage de source
Soit un alphabet A à 4 lettres (a1 ; a2 ; a3 ; a4)

2.1. Entropie d’une source discrète


Plus qu'à la quantité d'information liée à un évènement, on s'intéresse à l'information fournie
par une source donnée, autrement dit à la valeur moyenne de l'information propre des
informations fournies par la source.
Définition :
On appelle entropie d'une source A (ensemble des évènements possibles) et on note H(A) la
quantité :
H A =  p  a  I  a  = -  p  a  log 2p  a 
aA aA
Théorème
Soit A un alphabet de cardinal n et p une loi de probabilité sur A. Alors H  A   log 2 n avec

égalité si et seulement si p est la loi uniforme.


2.2. Efficacité du codage d’une source
Sot m le nombre moyen de symboles binaires utilisés par lettre de la source, qui est donné par
la formule ci-dessous.
Chapitre 2. Codage des sources discrètes sans mémoire

m=  p a  c a 
aA
H A
L'efficacité du code est définie par E =
m
2.3. Codage avec un code de longueur fixe et variable
a. Codage avec un code de longueur fixe
Si une source a pour cardinal n, il est possible de la coder avec un code de longueur fixe m tel
que
log 2 n  m  1+ log 2n
H A
E=
m
H  A   log 2n  E  1 avec égalité si et seulement si

o Les lettres de la source sont équiprobables.


o Le cardinal de la source est une puissance de 2.
Exemple :
Soit une source dont l’alphabet est A = {0, 1, . . . , 9} munie de la loi de probabilité uniforme.
On code cette source par un code en longueur fixe de longueur 4. Par exemple, on peut prendre

Lettre 0 1 2 3 4 5 6 7 8 9

Mot de code 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

L’efficacité du code est H(A)/4 = (log2 10)/4 ≈ 0.83. Ce code n’est pas optimal. Il est
cependant possible d’améliorer son efficacité en considérant non plus des chiffres isolés mais
des paires de chiffre. Ceci revient à changer la source A en A2 = {00, 01, . . .,99}. Son cardinal
est 100. Cette nouvelle source reste munie d’une loi de probabilité uniforme et son entropie
vaut H  A2   log 2100  2H  A  . La puissance de 2 immédiatement supérieure à 100 est

27 = 128. Il existe donc un code de longueur 7 pour coder cette source. Son efficacité est cette
fois ci H  A2  7   2log 2 10  7  0.95 , ce qui est meilleur. En considérant la source A3, on

obtiendra une efficacité de 0, 996. On améliore ainsi l’efficacité.


D’une façon générale, il est possible de considérer la source Al munie de la loi de probabilité
produit, pour l entier positif. On a alors H  Al   l H  A  .

Proposition : Soit A une source de cardinal n. Soit Al la source des l-uplets de lettres de A.
Il existe un code de longueur constante ml pour Al tel que
Chapitre 2. Codage des sources discrètes sans mémoire

ml 1
log 2 n   + log 2 n
l l
H A H A
L’efficacité de ce code vaut alors et converge vers quand l devient grand.
ml l log 2 n
Finalement, cela prouve que, pour une source munie d'une loi de probabilité uniforme,
l'efficacité du codage peut être arbitrairement proche de 1.
b. Codage avec un code de longueur variable
1. Codes à décodage unique - Codes préfixes
Le cas des codes de longueur variable est plus problématique en ce qui concerne le découpage
des mots. Puisque deux mots consécutifs ont à priori des longueurs différentes, il faut concevoir
des codes permettant la séparation sans ambiguïté des mots de code.
 Code déchiffrable
Définition : Un code est dit déchiffrable ou à décodage unique si son codage associé est
injectif.
 Condition du préfixe
Un code vérifie la condition du préfixe si aucun mot de code n'est le début d'un autre mot de
code.

Exemple : L’alphabet a1 ,a 2 ,a 3 est codée par a1  1, a 2  10, a 3  100 . Les mots de codes

peuvent être découpés en introduisant une séparation avant chaque '1' dans la
séquence binaire, ce code est donc déchiffrable. Il n’est pourtant pas préfixe.
Proposition : Tout code préfixe est déchiffrable.
2. Représentation des codes préfixes par des arbres

Il est commode de représenter un code à l’aide d’un arbre binaire. Ici, on ne définira pas les
termes branches, nœud, feuille, racine, fils, père, qui auront leur signification usuelle. Les
arbres qu’on considère ont les propriétés suivantes :
- chaque branche a pour attribut un des symboles binaires 0 ou 1,
- deux branches partant du même nœud ont des attributs différents,
- chaque nœud a pour attribut la concaténation des attributs des branches reliant la racine à ce
nœud.
De plus, on appellera ordre d’un nœud ou d’une feuille le nombre de branches le séparant de
la racine.
Exemple : Pour représenter l’ensemble des séquences binaire de longueur inférieure ou égale
à 3 nous utilisons l’arbre :
Chapitre 2. Codage des sources discrètes sans mémoire

0 000

0 1
00 001
1
0 010
0
01 1
011

0 100
1 0
10
1 101
1 0
110
11
1
111
Figure2-2. Arbre du code
Pour représenter un code régulier, on utilisera le plus petit arbre contenant tous les mots de
code, appelé arbre du code.

Exemple : Considérons l’alphabet a1 ,a 2 ,a 3 ,a 4  , et les trois codes suivants

Code1 Code2 Code3


a1 m1 = 00 m1 = 00 m1 = 0

a2 m2 = 01 m2 = 01 m2 =10

a3 m3 =10 m3 = 001 m3 =100

a4 m4 =11 m4 = 011 m4 =111

0 m1

1
0
m2 L’arbre du code 1

1 m3
0

1 m4
0
m1 1
1 m3
0
m2 1 m4 L’arbre du code 2
m1
0

L’arbre du code 3
0 m2
1
m3
0
1

1 m4

Figure2-3. Exemple des arbres des codes 1,2 et 3


Chapitre 2. Codage des sources discrètes sans mémoire

On constate que pour les codes1 et 3, qui sont préfixes, les mots de code sont exactement les
feuilles de l’arbre, alors que pour le code 2 qui n’est pas préfixe, les mots de code m1 et m2 sont
« à l’intérieur » de l’arbre.
Proposition : Un code est préfixe si et seulement si les feuilles de son arbre sont exactement
ses mots de code.
2.4. Premier théorème de Shannon
Pour toute source discrète sans mémoire, il existe un codage (injectif) permettant de coder la
source et dont l'efficacité est arbitrairement proche de 1. C’est -à- dire E  1.

2.5. Codage de Huffman et de Lempel-Ziv


a. Codage de Hoffman
L’idée du code de Huffman consiste à grouper les deux événements les moins probables en un
unique événement et à renouveler l’opération avec le nouvel ensemble d'événements ainsi
obtenu. L’algorithme de Huffmann est un algorithme qui enchaîne des procédures localement
optimales en vue d’un résultat global optimal. Cet algorithme construit un code instantané
optimal. En pratique, il conduit à des réductions de longueur de l’ordre de 20 à 90% et il peut
être associé à d'autres formes de codage.
Il modélise le code par une forêt composée d'arbres qui possèdent des noeuds dont le poids est
la somme des poids de leurs enfants (le poids d'un arbre est celui de sa racine).
Initialement, les arbres (à 1 seul nœud) sont les états de la source, le poids de chacun de ces
arbres est la probabilité de l'état associé. A chaque étape, l’algorithme groupe les deux arbres
de plus faibles poids en un arbre unique dont ils sont les enfants. Au final, l’algorithme produit
un arbre unique de poids 1.
Exemple de code de Huffman
On considere une variable aléatoire discrète X pouvant prendre 5 états 1 ; … ; 5 avec les
probabilités suivantes :
p1 = π15 = 0.25, p2 = π52 = 0.25, p3 = π35 = 0.2, p4 = π54 = 0.15, p5 = π55 = 0.15
Déterminons un code de Huffman binaire pour cette source
Pour cela, à chaque étape, les probabilités des arbres sont rangées par ordre décroissant dans
une colonne d’un tableau et ce jusqu'à l'obtention d’un arbre unique.
Etape 1. Initialement, le jeu de probabilités est
π5 = π15 = 0.25, π52 = 0.25, π35 = 0.2, π 54 = 0.15, π 55 = 0.15
On regroupe les deux états de probabilité π54 = 0.15 et π55 = 0.15 pour former un nouvel état de

probabilité π14 = 0.15 + 0.15 = 0.3 .


Chapitre 2. Codage des sources discrètes sans mémoire

Etape 2. Le jeu de probabilités est maintenant


π4 = π14 = 0.3, π42 = 0.25, π34 = 0.25, π 44 = 0.2
On regroupe les deux états de probabilité π44 = 0.2 et π34 = 0.25 pour former un nouvel état de

probabilité π13 = 0.2 + 0.25 = 0.45 .


Etape 3. Le jeu de probabilités est maintenant
π3 = π13 = 0.45, π32 = 0.3, π33 = 0.25
On regroupe les deux états de probabilité π 33 = 0.25 et π 32 = 0.3 pour former un nouvel état de

probabilité π12 = 0.3 + 0.25 = 0.55 .


Etape 4. Le jeu de probabilités est maintenant
π2 = π12 = 0.55, π22 = 0.45
On regroupe les deux derniers états de probabilité π12 = 0.55 et π 22 = 0.45 pour former un nouvel

état de probabilité π11 = 0.55 + 0.45 =1 .


Etape 5. Le jeu de probabilités est maintenant
π1 = π11 = 1
Ces 5 étapes sont résumées dans les 5 dernières colonnes du tableau suivant :

Finalement, les mots du code s'obtiennent en parcourant les chemins qui vont de la racine (état
unique de probabilité 1) à chacun des états de la source et en lisant la suite des transitions
(indexées par [0] ou [1]) lors des fusions d'états.

Fig. Arbre de l’algorithme de Huffman


Chapitre 2. Codage des sources discrètes sans mémoire

Il est également possible de représenter les étapes de la construction du code de


Huffman sous la forme d'un arbre binaire.

Dans ce schéma, les valeurs entre crochets désignent le caractère de mot de code par lequel un
nœud est attache à son père. Le code obtenu (lecture des mots de la racine à chacune des feuilles)
est bien le même que celui construit dans la table précédente.

Exercice d’application
On considère une variable aléatoire discrète X pouvant prendre 7 états x1 ; … ; x7 avec les
probabilités p1 = 0,49 ; p2 = 0,26 ; p3 = 0,12 ; p4 = 0,04 ; p5 = 0,04 ; p6 = 0,03 et p7 = 0,02.
a.Trouver un code de Huffman binaire.
b. Quelle est la compacité de ce code (longueur moyenne des mots du code).
c.Trouver un code de Huffman ternaire.

b. Codage de Lempel-Ziv
Elle consiste à coder une suite de caractères de la manière suivante :
La suite de caractère est découpée en phrases.
Chaque phrase est constituée d’une phrase rencontrée précédemment (la plus longue
possible) plus un caractère.
Les phrases sont numérotées (dans l’ordre où elles sont rencontrées) et chacune d’elle est codée
par le numéro de la phrase précédente sur laquelle elle est construite plus le caractère à
ajouter.
La phrase vide a pour numéro 0.
Voici un exemple :

Les caractères peuvent être codés par leur code ASCII mais on peut aussi considérer toutes les
variantes où les caractères sont codés sur 1 bit (alphabet à deux lettres), 2 bits (alphabet à 4
lettres), 3 bits (alphabet à 8 lettres), etc., 8 bits (alphabet à 256 lettres).
D’autre part, le nombre k de phrases déjà rencontrées est variable. Aussi pour économiser sur
la taille du codage des numéros de phrases, la phrase courante est codée par un caractère et le
numéro d’une des k phrases déjà rencontrées qui est codé sur [log k] bits.
Ainsi sur l’exemple ci-dessus avec l’alphabet A = {a, b}, on prend 0 comme code de a et 1
comme code de b. Dans ce cas, le texte codé de aaabbabaabaaabab devient (en marquant le
Chapitre 2. Codage des sources discrètes sans mémoire

code de la lettre en gras et en ajoutant des espaces blancs pour la lisibilité) 0 010 01110 1000
1010 1001. Remarquez que sur cet exemple, le codage est une expansion.

a. La compression
Pour que la compression soit rapide, il faut utiliser une structure de donnée arborescente appelée
« trie ». Le problème consiste en effet à trouver rapidement le numéro de la plus longue phrase
rencontrée précédemment qui se retrouve à la position courante de lecture dans le fichier. Un
trie répond à cette attente, il permet de stocker toutes les phrases rencontrées précédemment
sous forme d’arbre.

Chaque phrase correspond à un nœud de l’arbre. La phrase 0 qui représente la suite vide est la
racine de l’arbre. Les fils de chaque nœud sont numérotés par une lettre (on dit que cette lettre
est l’étiquette de l’arc entre le père et le fils). Un nœud de l’arbre correspond à la phrase obtenue
en lisant les étiquettes sur les arcs du chemin de la racine au nœud. Le numéro de la phrase est
stocké dans le nœud correspondant de l’arbre. (Un nœud peut avoir autant de fils qu’il y a de
lettres dans l’alphabet)

Le moyen le plus simple de comprendre cela est d’examiner le trie obtenu après la lecture du
texte de l’exemple vu plus haut.
0
a b
1 3
a
a
2
4
b
a
7
5

6
Fig. Le trie obtenu après lecture du texte « aaabbabaabaaabab ».

Le traitement de la phrase courante est le suivant. On lit les lettres du texte à partir de la position
courante une à une et on parcourt le trie en partant de la racine en même temps. Chaque fois
que le fils du nœud où l’on se trouve correspondant à la lettre lue existe, on se positionne à ce
nœud. Si le fils n’existe pas, on le créé et on s’arrête là, c’est le nœud qui correspond à la phrase
courante. On a donc lu une phrase de plus et on peut passer à la suivante.
Chapitre 2. Codage des sources discrètes sans mémoire

Par exemple, si le texte de la figure 1 se poursuit par «babbbaab», on ajoutera la phrase 8 «babb»
comme fils d’étiquette b du nœud 7 et la phrase 9 «baab» comme fils d’étiquette b du nœud 5.

Pour les gros fichiers, il ne faut pas saturer la mémoire avec un trop gros trie. Une stratégie
consiste à recommencer à zéro quand on a lu un certain nombre de caractères. Une autre consiste
à recommencer à zéro quand le trie atteint une certaine taille. Cette éventuelle optimisation doit
être prise en compte lors de la décompression. L’idéal étant de maintenir l’espace mémoire
utilisé par le programme en dessous d’un certain seuil, 1 Mo par exemple.

b. La décompression
Lors de la décompression, on stocke dans un tableau toutes les phrases déjà rencontrées pour
pouvoir décoder immédiatement la phrase courante. La décompression est très rapide et ceci
est un des points forts de la méthode de Ziv-Lempel
Chapitre 3. Codage de canal

Dans le codage de source, aucun élément extérieur ne vient modifier l’information. Au contraire
lorsque l’information transite dans un canal, elle est perturbée par un bruit. Le résultat principal
de ce chapitre est qu’il est possible de coder de l’information de façon à ce que la détérioration
soit négligeable.
3.1. Modélisation d’une chaine de communication numérique
La théorie des communications s’intéresse aux moyens de transmettre une information depuis
la source jusqu’à un utilisateur à travers un canal. La nature de la source peut être très variée. Il
peut s’agir par exemple d’une voix, d’un signal électromagnétique ou d’une séquence de
symboles binaires. Le canal peut être une ligne téléphonique, une liaison radio, un support
magnétique ou optique.

Source Codeur de Codeur de Canal


Modulateur
numérique source canal discret
Emetteur

Canal

Récepteur

Décodeur Décodeur
Ulilisateur Détecteur
de source de canal

Fig. Synoptique d’un système de transmission numérique


Le but du codeur de source est de représenter la sortie de la source en une séquence binaire, et
cela de façon la plus économique possible. Le but du codeur de canal et de son décodeur est de
reproduire le plus fidèlement possible cette séquence binaire malgré le passage à travers le canal
bruité.
3.2. Notion de canal
Pratiquement un "canal de transmission" est par exemple un milieu physique au travers duquel
il est possible de faire passer de l’information. La démarche adoptée ici ne se préoccupe en
aucun cas de l’origine physique des propriétés du canal, elle se contente d'en donner une
description purement probabiliste. Le canal est alors considéré comme un système probabiliste
qui accepte des symboles porteurs d'information en entrée et restitue en sortie d’autres
symboles. Les alphabets d'entrée et de sortie sont en général différents.

a. Canal discret sans mémoire et invariant


Chapitre 3. Codage de canal

Notons x1 ,...., x N  les N lettres de l’alphabet d'entrée du canal et y1 ,...., yM  les M lettres de

son alphabet de sortie.


En général, la séquence y j1,...., y jn observée en sortie d’un canal discret dépend de son entrée

x i1 ,...., x in et d'un état interne du canal. Du point de vue probabiliste, cela se traduit par le fait

que la loi de probabilité entrée-sortie est de la forme :


pn  y j1 ,...., y jn ; x i1 ,...., x in ;état 
où les yi appartiennent à l’alphabet de sortie du canal et les x i à l’alphabet d’entrée. Cette
relation signifie que le symbole présent à un instant donné en sortie du canal dépend de
l'ensemble de symboles présents à l’entrée et de l’état propre du canal avant l’application de la
première entrée x1 . Le canal est dit sans mémoire lorsque cette relation entrée-sortie peut être
réduite à :

Pn  y j1 ,...., y jn ; x i1 ,...., x in ;état   Pn  y j1 ,...., y jn ; x i1 ,...., x in 

  
= P1 y j1 x i1 ... Pn y jn x in 
La première égalité signifie que le canal ne possède pas d’état interne et la seconde que le
symbole observé en un indice donné en sortie ne dépend que de l’entrée au même indice. Dans
le cas d’un canal sans mémoire, le lien probabiliste entre l’entrée et la sortie est complètement

décrit par la donnée des jeux de probabilités de transition P y jk x ik , k = 1...n . Si les  


 
caractéristiques du canal sont invariantes, P y jk x ik ne dépend pas de k et ce jeu de probabilités

est représentable sous forme matricielle. La matrice de transition N×M d’un canal discret sans
mémoire est alors définie par :

 
Π =  Π ij  =  p y j x i  i  1...N
 
j  1...M
Remarques:
 Chaque P ligne de la matrice de transition  contient un jeu de probabilités, d’où

py 
M

j x i = 1 i  1,..., N . Ce n’est pas le cas pour les colonnes.


j=1

 La loi de probabilité de la sortie Y du canal s’obtient simplement à partir de celle de l’entrée


X et de la matrice de transition :
PY = ΠT PX
Chapitre 3. Codage de canal

Fig. Canal à bruit additif blanc gaussien.


A chaque utilisation de canal, la sortie yk est la somme de l’entrée Ck et d'une perturbation bk
distribuée selon une loi normale de moyenne nulle et de variance σ 2 . La suite des variables
aléatoires bk est i.i.d. le canal est sans mémoire.
b. Canaux élémentaires
Deux canaux très simples jouent un rôle fondamental : le canal binaire symétrique et le canal à
bruit additif gaussien.
1. Canal à bruit additif gaussien
Le canal gaussien (cf. figure ci-dessus) est à entrée réelle et à sortie réelle tel que :
 Le canal est sans mémoire : la sortie dépend uniquement de l'entrée actuelle.
 La sortie est la superposition de l'entrée et d'une variable aléatoire gaussienne centrée de
variance σ 2 (le bruit gaussien) de densité de probabilité

1  x2 
px = exp  - 2 
σ 2π  2σ 
 Les performances du canal sont complétement déterminées par un seul paramètre σ 2 .
Vraisemblance des observations en sortie de canal.
Si une valeur Ck est placée en entrée d’un canal gaussien, sa sortie yk suit une loi normale de
variance σ 2 centrée en Ck que nous pouvons noter p  yk Ck  :

 y -C 2

p  y k Ck  =
1
exp  - k 2 k

σ 2π  

 
Si maintenant, l’entrée est un message constitué d’une suite de n valeurs C1 ,..., Cn que nous

groupons dans un vecteur C = C1 ,...,Cn  .


T

La distance euclidienne entre le vecteur y =  y1 ,..., yn  composé des n valeurs observées en


T

sortie du canal et le vecteur C composé des valeurs placées en entrée est la somme des carrés
des erreurs entre ces deux vecteurs
n
d 2E  y, C  = y - C =  y j - C j
2

j=1

Lorsque la suite des perturbations bk est une suite de variables aléatoires indépendantes de
même loi, la vraisemblance des observations y s’écrit :
Chapitre 3. Codage de canal

 y -C 2 
 1 
n
p  y C =    j j 
 exp  - 2σ 2 
j=1  σ 2π 
 
 1 
n
 y-C 2

=  exp - 2

 σ 2π   2σ 
 d 2E  y, C  
n
 1 
=  exp - 
 σ 2π   2σ 2 
La fonction log étant monotone, maximiser le logarithme de la vraisemblance équivaut à
maximiser la vraisemblance elle-même et conduit à des calculs plus simples :
d 2  y, C 
log p  y C  = -n log  σ 2π  - E 2

Ainsi, maximiser la vraisemblance à variance connue est équivalent à minimiser la distance
euclidienne et il est possible d’estimer, au sens du maximum de vraisemblance (MV), l’entrée
C à partir des sorties y en minimisant une distance Euclidienne.
2. Le Canal Binaire Symétrique (CBS)
Le canal binaire symétrique (cf. figure ci-dessous) est à entrées binaires (notées par exemple 0
et 1, mais cela n'a pas d'importance, ce ne sont que des étiquettes) et à sorties binaires
(également notées 0 et 1) tel que:
P (Y/X)
X Y
1-p
0 0
p
p

1 1-p 1
Fig. Canal binaire symétrique
 Le canal est sans mémoire : la sortie en k dépend uniquement de l’entrée en k.
 Binaire : 2 entrées possibles (0, 1) et 2 sorties possibles (0, 1).
 Symétrique: les entrées 0 et1sont affectées de manière égale par les erreurs (probabilité
d’erreur p).
Les probabilités de transition, et donc les performances du canal, sont complètement
déterminées par un seul paramètre p :
p = Pr  y k = 1 C k = 0  = Pr  y k = 0 C k = 1
1- p = Pr  y k = 1 C k = 1 = Pr  y k = 0 C k = 0 
Chapitre 3. Codage de canal

 
La matrice de transition Π =  Π ij  =  P y j x i  , i, j  1, 2 d’un canal binaire symétrique est
 
une matrice 2× 2 donnée par :
1- p p 
Π=
p 1- p 
Vraisemblance des observations en sortie de canal.
Si l'entrée est un message constitue d’une suite de n valeurs binaires C1 ,..., Cn que nous

groupons dans un vecteur C, la distance de Hamming entre le vecteur y =  y1 ,..., yn  composé


T

des n valeurs binaires observées en sortie du canal et le vecteur C composé des valeurs binaires
placées en entrée est le nombre de positions qui diffèrent entre ces deux vecteurs

d H  y, C  =  j 0  j  n, y j  C j 
De même que pour le canal Gaussien, maximiser la vraisemblance des observations en sortie
de canal revient à minimiser une distance. La vraisemblance des observations y s'écrit :
d H  y;Crs 
 p 
p  y C rs  = 1- p  
n

 1- p 
d’où
 p 
log p  y C rs  = d H  y, C rs  log   + n log 1- p 
 1- p 
 p 
n log 1- p  est une constante et log    0 (car 0 < p < 1 2 ), ainsi maximiser la
 1- p 
vraisemblance revient à minimiser d H  y, Crs  .

Fig.-Un canal à bruit additif blanc gaussien à entrées binaires avec décisions binaires en sortie
est un canal binaire symétrique (CBS) de paramètre p = Q 1 σ  .

3. Le canal à effacement
Le canal à effacement est un canal dont les entrées sont des bits dans {0, 1} et les sorties des
symboles de l’alphabet {0, ∞, 1}. La matrice stochastique Π pour ce canal est
1- p - p p p 
Π=
p p 1- p - p 
Chapitre 3. Codage de canal

Certaines classes de canaux ont des propriétés remarquables. Soient A = {a1 , . . . a n } et


B = b1 ,..., b m .

- Un canal est dit sans perte si H(A | B) = 0 pour toutes les distributions en entrée. On

encore, on peut partitionner les sorties B en B1 , B2 , . . . , Bn de telle sorte que pour tout i,

 p(b | a ) = 1. L’entrée de ce canal est déterminée par la sortie.


bB
i

- Un canal est dit déterministe si p(b j | a i ) = 0 ou 1 pour tout i, j . Ou encore si H(B | A) = 0.

La sortie de canal est déterminée par l’entrée.


- Un canal est dit sans bruit s’il est déterministe et sans perte. Un canal est inutile si
I  A;B = 0 pour toutes les toutes les distributions en entrée. Ceci équivaut à avoir

H(A | B) = H  A  pour toutes probabilités pA . Ceci est équivaut encore à

p(b j | a i ) = p  b j  pour tout i, j .Les lignes de la matrice pour ce canal sont donc toutes

identiques. Ce canal mélange donc les entrées et la connaissance des sorties n’apporte
aucune information sur les entrées.
- Un canal est symétrique si chaque ligne de Π contient (à permutation près) les mêmes
valeurs p1 , . . . pm et chaque colonne de Π contient (à permutation près) les mêmes valeurs

q1 , . . . q n . Par exemple le canal donné par

1 1 1 1
3 3 6 6
 
1 1 1 1
 6 6 3 3 
est symétrique.

3.3. Capacité d’un canal

Définition:
La capacité d'un canal est la plus grande quantité d’information moyenne qu'il peut fournir sur
A.
C = max I  A; B 
PA

avec
  p a, b
I(A; B) =  p  a, b  log p  a  p  b 
aA,bB
2

I(A; B) = H(B) - H(B | A) = H(A) - H(A | B) = H(A) + H(B) - H(A, B).


Ici H  A, B  désigne l’entropie de l’espace joint considéré comme une source :
Chapitre 3. Codage de canal

H(A, B) = -  p  a, b  log 2 p  a, b 
aA ,bB

La capacité est donc un réel positif ou nul, inférieur ou égal au logarithme à base 2 du cardinal
de A et de B. Pour un canal symétrique, H(B | A) ne dépend pas de la distribution pA .

H(B | A) = -  p  a, b  log 2 p  b | a 
aA ,bB

= -  p  a  p  b | a  log 2 p  b | a 
aA ,bB

 
= - p  a    p  b | a  log 2 p  b | a  
aA  bB 
 m 
= - p  a    p  b | a  log 2 p  b | a  
aA  j=1 
m
= - p jlog 2 p j
j=1

La dernière égalité ne dépend plus de pA d’où la conclusion.

Comme I  A; B = H  B - H(B | A) et puisque H(B | A) ne dépend pas pA , il suffit de maximiser

H  B pour maximiser I  A; B . Ainsi, si on trouve une distribution pA en entrée telle que la loi

en sortie soit la loi uniforme, on aura réussi à calculer la capacité du canal. On va voir que la
loi uniforme en entrée va faire l’affaire. Supposons donc que pA est la loi uniforme en entrée.

La loi p B se calcule par


1
p  b  =  p  a, b  =  p  a  p  b | a  =  p b | a 
aA aA n aA
Or  aA p(b | a) est la somme des éléments de la colonne d’indice b de Π. Cette quantité est la
même pour toutes les colonnes et donc p B est la loi uniforme sur B. La capacité d’un canal
symétrique est donc
m
Csym = log 2 m +  p jlog 2 p j
j=1

Par exemple la capacité du canal binaire symétrique est


CBSC = 1 + p log 2 p + (1 - p) log 2 (1 - p).

Rendement d'un code


On considère des suites binaires sources qui sont des blocs de longueur fixe m de lettres de
l’alphabet A = {0, 1}. Chaque bloc est d’abord codé à l’aide d’un code binaire de longueur
constante égale à n, et de cardinal M ≤ 2m. Ce codage est appelé codage de canal par blocs. Les
blocs codés passent ensuite dans un canal discret sans mémoire (B, C, Π), où B est l’alphabet
Chapitre 3. Codage de canal

d’entrée du canal et C est son alphabet de sortie. On suppose ici que B = C = {0, 1}. Après le
passage dans le canal, on souhaite retrouver la suite binaire initiale. C’est le rôle joué par le
décodeur.
On définit le taux ou rendement d’un code binaire de cardinal M constitué par des mots de code
de longueur n par
log 2 M
R=
n
Un code aura un taux 1 lorsque M = 2n, c’est-à-dire lorsqu’aucune redondance n’aura été
ajoutée. Un code de taux 1/ 2 signifie que M = 2 n / 2 , c’est-à-dire que le code double la longueur
des séquences binaires de la source. En diminuant le rendement, on peut diminuer la probabilité
d’erreur autant que l’on veut.

3.4. Le deuxième théorème de Shannon


Théorème 1(Second théorème de Shannon) :
Soit un canal binaire symétrique de capacité C. Pour tout R < C, il existe une suite Cn de codes
de longueur n de taux Rn d’algorithme de décodage de taux d’erreur résiduel Pen telle que :
1. lim R n = R
n 

2. lim Pen  0
n 
Ce théorème signifie donc qu'il existe des codes en bloc permettant de réaliser un code dont le
taux est aussi proche qu'on le désire de la capacité du canal.
Il existe un autre résultat qui est la réciproque du second théorème de Shannon
Théorème 2 (Réciproque du second théorème de Shannon) :

Soit un code de rendement (taux) R > C, il existe une constante strictement positive K(R, C)
telle que la probabilité d’erreur en sortie soit supérieure à Pe > K(R, C).

Ce résultat nous indique qu'il est inutile de chercher des codes de taux supérieur à la capacité
du canal. La capacité C est donc bien le taux de codage maximal que l’on puisse atteindre pour
faire transiter une information dans un canal donné.
Chapitre 4. Codes correcteurs d’erreur

Tout codage canal repose sur la répétition. Celle-ci permet de rendre la détection fiable et l’on
sait, d’après le second théorème de Shannon, que cette fiabilité peut ne pas se faire au détriment
du rendement, elle impose seulement que les mots du code soient de longueur suffisante.
4.1. Notions de base
Lorsqu’un mot de code x i est transmis sur un canal bruité et que x̂ est finalement reçu, l’erreur
de transmission correspond à la différence entre x̂ et x i :
e = xˆ - x i .
L’idée-clé derrière le codage algébrique est d’ajouter une structure algébrique à l’ensemble des
mots de code de sorte que l’erreur de transmission puisse aisément être exprimée en termes des
opérations définissant cette structure algébrique (à commencer par l’opération « différence »
ci-dessus). Si on traite des codes binaires par exemple : 10011, la différence « naturelle » sur
les mots binaires est la différence bit par bit connue aussi sous le nom de « ou exclusif », c.-à-
d. la différence à chaque position telle qu’il y a un 0 si les deux bits correspondants sont les
mêmes et un 1 dans le cas contraire : 0 - 1 = 1 et, comme d’habitude, 0 - 0 = 0, 1 - 1 = 0,
1 - 0 = 1.
4.2. Distance de Hamming et poids d’un mot de code
a. Définition de la distance de Hamming
Soient A n l’ensemble des mots de longueur n sur A, x =  x 0 , x1 ,..., x n-1   A n et
y =  y0 , y1,..., y n-1   A n .
- La distance de Hamming entre x et y est
d H  x, y  = i 0  i  n -1, x i  yi 
Exemple :
Déterminer la distance de Hamming entre x =1010 et y = 0101

dH  x, y  = dH 1010,0101 = 4
b. Définition du poids de Hamming d’un mot de code
- Si A est un groupe, le poids de Hamming w H  x  d’un mot de code x  An est le nombre de
symboles non nuls qu’il contient
w H  x   d H  x,0 
Exemple :
Déterminer le poids de Hamming d’un mot de code x= 10110.
w H (x)  w H (10110) = 3
d H  x, 0  = d H 10110, 00000  = 3
 w H (10110) = d H 10110, 00000  = 3
Chapitre 4. Codes correcteurs d’erreur

4.3. Codes en bloc et codes linéaires


a. Codes par bloc
Définition: Un code en bloc binaire de longueur n est un sous-ensemble non vide de l’espace
vectoriel n-uplets An (c.-à-d. des mots binaires de même longueur n, considérés comme des «
vecteurs ligne »).

La répartition des 2k mots du code dans l’espace des séquences de longueur n, et plus
particulièrement la distribution des distances entre mots conditionnent les performances du
code. La distance minimale entre les mots (distance minimale du code) est particulièrement
importante.
On appelle distance minimale d’un code C sur A, l’entier


d  min d H  x, y  x, y  C, x  y ,
Si A est un groupe, on appelle poids minimal d’un code C, l’entier


w  min w H  x  x  C, x  0 ,
Exemple :
Pour le code à répétition n = 3 fois, le code compte 2k=1 = 2 mots (000) et (111) parmi les 2n=3
= 8 séquences possibles et le décodage au sens du maximum de vraisemblance s'effectue selon
la règle:
- (000), (001), (010), (100) : détection et correction vers (000)
- (111), (110), (101), (011) : détection et correction vers (111)
La distance minimale dmin de ce code vaut dmin = 3, c’est la distance de Hamming entre les
mots (000) et (111).
Les séquences (000), (001), (010), (100) sont détectées de manière exacte en (000), leur
distance de Hamming par rapport à (000) est inférieure ou égale à 1. Ce code corrige au plus
dmin -1 2 = 1erreur .

Il en est de même pour les séquences (111), (110), (101), (011) par rapport au mot (111),
leur distance de Hamming par rapport à (111) est inférieure ou égale à 1. Ce code au plus
dmin -1 2 = 1erreur .

b. Codes linéaires
Les codes linéaires sont des codes en bloc sur lesquels une structure algébrique a été ajoutée
pour aider au décodage: la structure d’espace vectoriel.
Définition: Un code en bloc est linéaire si les 2k mots du code forment un sous espace vectoriel
de An .Ce sous espace vectoriel est de dimension k dans An de dimension n.
Chapitre 4. Codes correcteurs d’erreur

On note C (n, k) un code linéaire en bloc avec des mots de longueur n construits à partir de k
bits informatifs.
Exemple :
Le code binaire {1101, 0110, 1110} n’est pas un code linéaire car le mot de code nul (0000)
n’en fait pas partie (il ne pourrait donc pas être un espace vectoriel).
Le code binaire {0000, 1101, 0110, 1011} est un code linéaire comme toute combinaison
linéaire binaire de mots de code est aussi un mot de code. Il est de plus un code linéaire
binaire (4, 2) lorsque sa dimension (c.-à-d. la dimension du sous-espace vectoriel) est de 2
et sa longueur de 4.
NB :
- Tout code linéaire contient le mot de code nul.
- Un code linéaire binaire (n, k) contient mots 2 k de code différents (le mot de code nul inclus).
- Le taux de transmission d’un code linéaire (n, k) est
k log 2 2k
R= =
n n
b.1. Codage avec des codes linéaires
L’accent doit maintenant être mis sur la relation liant les messages à coder aux mots de code
correspondants: il est temps de voir comment utiliser efficacement les codes linéaires pour
coder des messages.
Si les k mots de code choisis pour former une base d’un code linéaire (n, k) (espace vectoriel)
sont désignés par z1, ..., zk, alors tout mot de code zi peut être écrit comme
k
Zi =  u i, j  Z j
j=1

où ui, j est la composante de zi sur le vecteur de base zj.


De manière plus compacte, en utilisant l’algèbre linéaire, on a :
Zi =  ui,1 ,..., u i,k   G = u i  G
où ui est le vecteur ligne (ui, 1, ..., ui, k) et G la matrice dont les lignes sont Z1, ..., Zk.
Il est alors tout naturel de choisir de coder le message à k symboles par le mot de code Zi qui
résulte de la multiplication par la matrice G appelée matrice génératrice du code.
Matrice Génératrice
Définition: Une matrice k × n G est dite matrice génératrice d’un code linéaire (n, k) C si et
seulement si ses k vecteurs-ligne sont une base de l’espace vectoriel C. Le codage d’un message
u (de taille k) est alors effectué par Z = u · G.
Chapitre 4. Codes correcteurs d’erreur

Exemple sur la Matrice Génératrice


Soit le code linéaire (4, 2) binaire: {0000, 1101, 0110, 1011}. Ce code, ayant quatre mots de
code, peut coder quatre messages : les quatre mots binaires de deux bits: u0 =00, u1 =10, u2 =01,
u3 =11. Faisons ce codage en utilisant une matrice génératrice.
Une base pour ce code linéaire pourrait être Z1 = 1101, Z2 = 0110, ce qui donne
110 1 
G= 
011 0 

u1 est alors codé en


110 1 
u1  G = 10     = 1101 = Z1
011 0 
et de manière similaire u2 en Z2, u3 en 1011 et u0 en 0000.
Remarques :
- un code linéaire peut toujours coder le message nul avec le mot de code nul 0. Ceci est
précisément dû à l’aspect linéaire (c.-à-d. d’espace vectoriel) du code.
- L’utilisation d’une matrice génératrice rend le codage très facile à implémenter en pratique.
Dans le cas binaire par exemple, seuls quelques portes « ou »-exclusif (XOR) peuvent réaliser
le codage.
Forme systématique d’un code linéaire
Parmi toutes les matrices génératrices possibles, une d’entre elles est particulièrement
intéressante (si elle existe) : celle sous forme systématique.
Définition: Une matrice génératrice G d’un code linéaire (n, k) est dite sous forme systématique
si elle est de la forme :
1 0 . . . 0 p1,1 . . . p1,n-k 
0 1 . . . 0 p . . . p 2,n-k 
 2,1

. . . . . . . 
G =  Ik P =  
. . . . . . . 
. . . . . . . 
 
0 0 . . . 1 p k,1 . . . p k,n-k 
où Ik est la matrice-identité de taille k et P une matrice k × (n − k), souvent appelée « matrice
de parité ».
Remarque :
Un code linéaire utilisant une matrice génératrice sous forme systématique est appelé code
linéaire systématique.
Chapitre 4. Codes correcteurs d’erreur

Lorsqu’un code linéaire (n, k) utilise une matrice génératrice de forme systématique, les k
premiers symboles des n symboles d’un mot de code sont exactement les symboles du message
codé :
Zi =  ui,1 ui,2 ... ui,k zi,k+1 ... zi,n 
En d’autres termes, les codes systématiques envoient d’abord le message non codé puis (n-k)
symboles de codage utilisés pour la détection/correction d’erreurs.
Exemple :
Pour le code linéaire (4, 2) binaire: {0000, 1101, 0110, 1011}. Un autre choix pour les vecteurs
de la base aurait pu être Z1 = 1011, Z2 = 0110, ce qui donne
1 0 1 1 
G=   Ik P
0 1 1 0 

1 0  1 1 
I k =   et P = 
0 1 1 0 
qui est la matrice génératrice sous forme systématique pour ce code.
b.2. Décodage: Matrice de vérification
Supposons avoir trouvé une matrice F telle que, pour tout mot de code x, x · F = 0. Alors, si
une erreur (e) survient durant la transmission de x et x̂ = x +e est reçu, nous avons
x̂  F =  x + e   F = x  F + e  F = 0 + e  F  e  F
Ce denier résultat est très utile comme x̂  F est indépendant du mot de code z émis mais ne
dépend que de l’erreur e. Le résultat de cette erreur de transmission apparaît comme une
combinaison linéaire des lignes de F. Pour corriger/détecter l’erreur, les vecteurs de l’espace
vectoriel généré par les lignes de F doivent «simplement» correspondre au message de
correction (ou de détection) correspondant.
Pour de bonnes raisons mathématiques, l’équation ci-dessus Z·F = 0 est toujours donnée sous
la forme suivante :
x.H T = 0
où T est l’opérateur de transposition et H = FT .
Matrice de Vérification
Définition : Une matrice (n-k) × n H est une matrice de vérification pour un code linéaire
(n, k) binaire C si et seulement si
x  A n x .H T  0  x  C
En d’autres termes, une matrice de vérification pour un code C est une matrice dont le noyau
est C.
Chapitre 4. Codes correcteurs d’erreur

Théorème:
Pour un code linéaire (n, k) systématique dont la matrice génératrice sous forme systématique est
G =  I k P  la matrice H = -PT In-k  est une matrice de vérification.

Exemple :
Considérons le code systématique C, dont la matrice génératrice est
1 0 1 0 1  1 0 1
G  I2
0 1 1 1 1   1 1 1
alors (n = 5 et k = 2)

 T
 1 1 1 0 0 
H =  1 0 1 I3  = 0 1 0 1 0 
 
1 1 1
 1 1 0 0 1 
est une matrice de vérification possible pour C.
Exercices
1. Donnez une matrice de vérification pour le code linéaire dont la matrice de codage sous forme
systématique est
1 0 0 0 0 1 0 1 0 
0 1 0 0 0 1 1 0 0 
G = 0 0 1 0 0 0 1 0 1 
0 0 0 1 0 1 1 1 1 
0 0 0 0 1 0 0 1 1 
2. Le mot x =1001101 est-il un mot de code du code dont une matrice de vérification est
1 1 1 0 1 0 0 
H = 0 1 1 0 0 1 0 
 0 0 1 1 0 0 1 
b.3. Syndromes
Définition :
Le syndrome d’un mot x̂ relatif à une matrice de vérification H est le produit x̂  HT .
Si x est le mot de code transmis et une erreur e survient, le mot reçu est alors x̂ = x +e . Si H est
une matrice de vérification pour le code utilisé, alors
x̂  HT =  x + e   HT = x  HT + e  HT = 0 + e  HT  e  HT
Ceci illustre le fait important que x̂  HT ne dépend que du schéma d’erreur effectif e et
absolument pas du mot de code transmis x̂ . Pour cette raison, ce résultat x̂  HT est d’une
importance particulière pour le décodage.
Propriété :
Le syndrome S = xˆ  H T d’un mot reçu x̂ relatif à la matrice de vérification H d’un code C
dépend uniquement de l’erreur de transmission e  xˆ - x et non du mot de code xi (xi ∈ C)
transmis.
Chapitre 4. Codes correcteurs d’erreur

En outre, le schéma d’erreur e est décomposé en erreurs élémentaires ej (c.-à-d. faites d’une
seule erreur sur un seul symbole) : e = (e1, ..., en), alors
S  xˆ  = xˆ  H T = e  H T =  e jh j
j

où hj est la j-ème colonne de H : H = [h1, ..., hn].


Pour trouver le correcteur (c.-à-d. l’opposé de l’erreur), seuls les correcteurs correspondant aux
erreurs simples doivent être connus puis additionnés. La correction peut alors être effectuée
simplement en faisant correspondre les colonnes de H aux correcteurs (stockés dans une
mémoire) et en additionnant ceux qui correspondent aux positions non nulles du syndrome.
En pratique, le tableau de correspondance entre les syndromes et les erreurs est stocké dans une
mémoire, et le mécanisme général pour décoder (et corriger) un message reçu x̂ est le suivant :
1. Calculer le syndrome S  xˆ  = xˆ  HT ;
2. Obtenir la correction c = -e (c.-à-d. l’opposé de l’erreur) par la combinaison linéaire des
correcteurs stockés en mémoire;
3. Décoder x = xˆ +c .
Exemple de tableau de correction basée sur les syndromes
Supposons que
1 1 1 0 0 
H = 0 1 0 1 0 
1 1 0 0 1 
soit une matrice de vérification pour le code binaire utilisé.
Les correcteurs suivants peuvent alors être dérivés des colonnes de H :
Syndrome Correcteur
101 10000
111 01000
100 00100
010 00010
001 00001
Ce qui est simplement obtenu en listant les colonnes de H.
Exemple de décodage avec un Code Linéaire
Continuons avec le dernier exemple (exemple ci-dessus), dont la génératrice est

G = 1 0 1 0 1
0 1 1 1 1
Supposons devoir transmettre u = 10. Ce message est codé par x = 10101 avec le code linéaire
binaire (5, 2) ci-dessus. Supposons que x̂ = 00101 , c.-à-d. que le premier bit ait été corrompu.
Le calcul du syndrome donne S  xˆ  = xˆ  HT  101 , ce qui nous donne le correcteur e = 10000
(voir tableau des correcteurs donné dans l’exemple ci-dessus).
Chapitre 4. Codes correcteurs d’erreur

Le mot de code décodé est ainsi x̂ + e = 00101+10000 = 10101, ce qui nous donne le message
décodé (les deux premiers bits correspondant au message originel, un code systématique ayant
été utilisé) : 10, ce qui correspond au message originel.
Exercice
Quel était le message originel si vous recevez 101011001 et si la matrice de vérification du
code est
1 1 0 1 0 1 0 0 0
H = 0 1 1 1 0 0 1 0 0
1 0 0 1 1 0 0 1 0
 0 0 1 1 1 0 0 0 1 
b.4. Distance minimale et matrice de vérification
Théorème:
Si H est une matrice de vérification pour un code linéaire (n, k) binaire C (avec 1 ≤ k < n), alors
la distance minimale dmin(C) de ce code est égale au plus petit nombre de colonnes linéairement
dépendantes de H.
Démonstration
Pour tout vecteur x, x  HT est une combinaison linéaire de w(x) colonnes de H. x ∈ C si et
seulement si x  H T  0 . Ainsi, si x ∈ C, il existe alors w(x) colonnes de H qui sont linéairement
dépendantes ; et réciproquement, si q colonnes de H sont linéairement dépendantes, il existe un
mot de code de poids q. Donc wmin(C) est le nombre minimal de colonnes de H qui sont
linéairement dépendantes.
Pour un code linéaire binaire C avec un matrice de vérification H, ce résultat implique que
– Si H n’a pas de colonne nulle, dmin(C) > 1.
– Si H n’a en outre pas deux fois la même colonne, dmin(C) > 2.
4.4. Codes cycliques
Chapitre 5. Modulation numérique. Représentation spectrale. Récepteur
optimal
Chapitre 6. Représentation vectorielle. Réparation spectrale des
modulations numériques

Vous aimerez peut-être aussi