Académique Documents
Professionnel Documents
Culture Documents
Eric Wegrzynowski
Caroline Fontaine
11 octobre 2002
Introduction
Linformatique est la science du traitement automatique de linformation. Ceci implique :
1. un traitement : interpretation des donnees, calcul (manipulation formelle), communication (transport dinformation : reseau, satellite, telephone portable, mais
aussi CD) ;
2. automatique : sans intervention humaine ;
3. une representation adequate de linformation : par des symboles (lettres alphabets latin et arabe et chiffres arabes et romains par exemple).
Cette representation est communement appelee codage, mais ses objectifs sont
differents selon les contextes :
codage de source : son but est doptimiser la place prise par les donnees, et debouche
sur la notion de compression ;
codes correcteurs derreurs : leur but est de permettre la restitution des donnees
apr`es leur transmission (au sens large), et ce malgre les modifications quelles
ont pu subir pendant cette transmission ; ils detectent et corrigent les erreurs.
cryptographie : confidentialite, authentification, signature . . .
On sinteressera ici aux deux premiers points seulement.
Chapitre 1
Representation des nombres
On regardera dans un premier temps le codage des nombres.
II
1) Syst`eme decimal
Cest celui auquel on est le plus habitues : il utilise un alphabet de 10 chiffres et
prend en compte la position de ces chiffres.
Exemple 1.2 Le mot 2387 designe le nombre 2 103 + 3 102 + 8 10 + 7.
Tous les entiers naturels (positifs ou nuls) peuvent secrire de cette facon. Si, de
plus, on sinterdit le chiffre 0 a` gauche, alors tout entier naturel a une e criture unique.
5
CHAPITRE 1. REPRESENTATION
DES NOMBRES
p
X
ak bk = ap bp + ap1 bp1 + . . . + a2 b2 + a1 b + a0 .
k=0
tels que q =
p
X
a0k bk .
k=0
On a alors
0
n+1=b
p
X
a0k bk
k=0
+r =
p
X
p0 +1
a0k bk+1
+r =
k=0
a0k1 bk + r
k=1
On pose ensuite p = p0 + 1 et
a0 = r
ak = a0k1 pour tout 1 k p
On a alors la decomposition
n+1=
p
X
ak b k
k=0
II. ENTIERS NATURELS : BASES DE NUMERATION
2
67
a1 = 1
2
33
a2 = 1
2
16
a3 = 0
2
8
a4 = 0
2
4
a5 = 0
2
2
2
a6 = 0 1 < 2
CHAPITRE 1. REPRESENTATION
DES NOMBRES
preuve : Tous les entiers n compris entre bp (inclus) et bp+1 (exclus) sont representes
a` laide dexactement p + 1 chiffres. Ceci signifie :
n, bp n < bp+1 |n|b = p + 1
(1.1)
Or on a e galement :
n, bp n < bp+1 p ln b ln n < (p + 1) ln b
ln n
p
<p+1
ln b
n
Puisque logb n = ln
, on a
ln b
ln n
< p + 1 = p = blogb nc
ln b
Des points (1.1) et (1.2) on deduit que |n|b = blogb nc + 1.
p
puisque b > 1
(1.2)
III
1)
Le principe en est tr`es simple : chaque chiffre decimal est represente en binaire sur
4 bits :
chiffre
decimal
0
1
2
3
4
5
6
7
8
9
codage binaire
sur 4 bits
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
IV. REPRESENTATION
DES AUTRES NOMBRES
CHAPITRE 1. REPRESENTATION
DES NOMBRES
10
b)
Complement a` b
2)
a)
Virgule flottante
On represente les nombres de la mani`ere suivante :
n = M BE
o`u M (mantisse) et E (exposant) sont des entiers, et B (base) est un entier strictement
positif.
IV. REPRESENTATION
DES AUTRES NOMBRES
11
simple precision :
SM 1 bits
E
8 bits
32 bits
M
23 bits
128 .. 127
0 .. 223 1
double precision :
SM 1 bits
E
11 bits
64 bits
M
52 bits
1024 .. 1023
0 .. 252 1
12
CHAPITRE 1. REPRESENTATION
DES NOMBRES
Chapitre 2
Codes, codages et decodages
Apr`es la representation des nombres, nous nous interessons ici a` la notion de codage, au sens general du terme : nous allons voir comment representer un suite de
symboles de mani`ere adequate, selon lutilisation que lon souhaite en faire.
En effet, on peut vouloir la coder pour :
la transmettre directement a` quelquun dautre : on choisira alors une representation
utilisant les lettres de lalphabet usuel, dans une langue commune (comme par
exemple le francais ou langlais) ;
la stocker sur un ordinateur : on essaiera de minimiser la place necessaire a` ce
stockage ;
la transmettre dun ordinateur a` un autre : on essaiera alors de minimiser les
risques de perte dinformation lors de cette transmission, en introduisant de la
redondance.
Ces cas ont un point commun : ils reposent tous sur la donnee dun alphabet A. On
definit ensuite un code qui permet de representer linformation a` laide des lettres (au
sens large) de lalphabet A.
Voici, a` titre dexemples, quelques codes cel`ebres :
1837 : code Morse pour le telegraphe ; alphabet {, , silence}
A : B : C : D : E : etc
S :
etc
1917 : code Baudot pour le telex, reseau telegraphique commute (CCITT n 2) ; code
sur 5 bits 32 mots binaires ; mais 2 jeux de caract`eres sont codes a` la fois
(lettre, figure), et on dispose de 2 caract`eres permettant de commuter entre les
deux types de caract`eres ; on peut donc coder au total 60 caract`eres differents.
A et : 00011, B et ? : 11001, . . .
1963 : code ASCII (American Standard Code for Information Interchange) (ISO 646,
CCITT n 5) ; code sur 7 bits 128 caract`eres
A : 1000001, B : 1000010, C : 1000011, . . .
Le code ASCII a e te e tendu a` plusieurs codes sur 8 bits 256 caract`eres. Par
exemple ISO8859 : A : 0100001, . . .
13
CHAPITRE 2. CODES, CODAGES ET DECODAGES
14
Alphabets et mots
1)
Alphabet
Definition 2.1 Un alphabet est un ensemble fini non vide. Ses e lements sont nommes
lettres ou symboles.
Exemples :
1. Lalphabet latin compose des 26 lettres usuelles A = {a, b, c, . . . , z}.
2. Lalphabet des 10 chiffres decimaux A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.
3. Lalphabet des deux symboles binaires A = {0, 1}.
4. Lalphabet des 16 chiffres hexadecimaux A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }.
5. Lalphabet des chiffres romains A = {I, V, X, L, C, D, M }.
6. Lalphabet du Morse A = {., , silence} 2 .
2)
Mots
Les lettres dun alphabet permettent de construire des mots.
Definition 2.2 On appelle mot sur un alphabet A toute suite finie de lettres de A. Le
mot nayant aucune lettre est nomme mot vide, et note .
Exemples :
1. codage et qwixusd sont deux mots construits avec les lettres de lalphabet
latin.
2. Lecriture decimale dun nombre entier est un mot construit avec les chiffres
decimaux. 2002 est un mot.
1
2
http ://www.unicode.org
Pourquoi fautil considerer quil y a un troisi`eme symbole (souvent oublie) dans le Morse ?
15
I. ALPHABETS ET MOTS
4)
n1
An
et
A =
An = A+
n0
{}
Representation arborescente de A : On peut donner une representation arborescente dun ensemble de mots, bien utile par la suite. La figure 2.1 montre une telle
representation dans le cas o`u lalphabet na quune seule lettre a (figure de gauche) et
dans le cas o`u il a deux lettres 0,1 (figure de droite).
a
aa
aaa
P
PP
PP
PP
P 1
0
"b
Q
"
b
Q
"
b
Q
"
b
b 11
Q 01
00
10"
T
A
A
A
T
A
A
A
A101
A
A
T
L
000
001
010 011
100
110 111
L
L1011
10110
CHAPITRE 2. CODES, CODAGES ET DECODAGES
16
Nombre de mots : Le nombre de mots sur un alphabet est e videmment infini. Mais
pour une longueur donnee, on se convainc aisement que pour un alphabet A ayant q
lettres on a
card(An ) = q n
Ainsi, il y a 2n mots sur un alphabet binaire.
5) Langages
6)
Operation de concatenation
On peut definir une operation de concatenation sur les mots. Cette operation consiste
a` mettre bout a` bout les deux mots.
Definition 2.6 Etant donnes deux mots u et v sur un alphabet A, on definit le mot
concatene, note u.v, par
u.v = a1 . . . ap b1 . . . bq
si les deux mots u et v secrivent
u = a1 . . . ap ai A
v = b1 . . . bq bj A
Exemples
1. si u = timo et v = leon, alors u.v = timoleon.
2. si u = 10 et v = 110, alors u.v = 10110.
Definition 2.7 Lorsquun mot u peut secrire sous forme dune concatenation de mots
ui (u = u1 .u2 . . . . .un ), on dit que les ui sont des facteurs de u et que u1 .u2 . . . . .un est
une factorisation de u.
Proprietes de loperation de concatenation
associativite : u, v, w A , (u.v).w = u.(v.w)
e lement neutre : u A , .u = u. = u
longueur : u, v A , |u.v| = |u| + |v|
Remarque : Loperation de concatenation conf`ere a` lensemble des mots sur un alphabet une structure algebrique nommee monode.
7)
Definition 2.8 On dit que v est un prefixe (ou facteur gauche) de u sil existe un mot
w tel que u = v.w ; on designe par P re(u) lensembe des prefixes de u.
17
II. CODAGE
Exemple :
Lensemble des prefixes dun mot est lensemble des mots que lon rencontre le
long de la branche de larbre des mots menant de la racine au mot considere.
On remarquera que lon a toujours card(P re(u)) = |u| + 1.
II
Codage
Abordons maintenant la notion centrale de ce chapitre, celle de codage. Intuitivement un codage est lassociation de chaque symbole dun alphabet de depart ou
alphabet source a` un mot dun alphabet cible.
On notera dans tout ce qui suit S lalphabet source, et A lalphabet cible.
Exemples :
1. le code Morse associe a` chaque lettre de lalphabet latin (S) un mot construit sur
lalphabet A = {., , silence}.
2. le code ASCII associe a` chaque caract`ere ASCII un mot binaire de 8 bits.
Mais il ne suffit pas de convenit dune association dun mot sur lalphabet cible a`
chaque lettre de lalphabet source pour obtenir un codage.
Exemple
vantes :
c1 (x)
1
00
01
01
c2 (x)
1
00
01
10
Il est e vident que lassociation c1 ne peut convenir pour un codage e tant donne
quaux deux lettres s3 et s4 est associe un meme mot : 01.
Moins e vident est le cas de lassociation c2 . Neanmoins, on peut facilement verifier
que les deux mots s1 s2 s1 et s4 s3 seraient codes en le meme mot : 1001. Comment
alors decoder ce mot ? Par consequent c2 ne peut convenir pour un codage.
1) Morphisme
Dans le dernier exemple cidessus, il a e te implicitement admis quune fois e tablis
les mots u1 et u2 associes a` deux lettres x1 et x2 , alors le mot associe au mot x1 x2
est u1 .u2 . Cela nous am`ene a` considerer une classe particuli`ere de transformations de
mots constituee des morphismes.
CHAPITRE 2. CODES, CODAGES ET DECODAGES
18
c(u.v) = c(u).c(v)
Autrement dit un morphisme est une application qui conserve loperation de concatenation :
limage de la concatenee de deux mots est la concatenee de leurs images.
Un morphisme est enti`erement determine si on connat limage de chacune des
lettres de lalphabet source.
2)
c(si ) = ui
Codage
Definition 2.10 Un codage des mots sur un alphabet source S en des mots dun alphabet cible A est un morphisme c : S A injectif. Cest`adire
u, v S
u 6= v c(u) 6= c(v)
19
3) Decodage
Coder un mot u, cest donc trouver le mot v = c(u) qui lui est associe par un
codage c.
Inversement, decoder un mot v, cest retrouver le mot de depart u, i.e. son antecedant
par le codage c. Pour cela il suffit de trouver une factorisation de v avec des mots du
code C = c(S). Deux cas peuvent se presenter :
v se factorise et alors cette factorisation est unique, puisque C est un code.
v ne se factorise pas dans C. Cela signifie que v nest pas un mot obtenu par
codage dun autre mot.
Loperation de decodage est une operation plus ou moins simple selon la nature
des codes utilises.
III
On la vu, nimporte quel langage nest pas un code. La question naturelle qui se
pose est alors : existe-t-il un algorithme qui permet de decider si oui ou non un langage
est un code ?
Lalgorithme de Sardinas-Patterson donne une reponse affirmative a` cette question,
comme nous le verrons plus loin.
Pour linstant nous allons examiner quelques cas particuliers de codes facilement
identifiables.
2) Codes a` virgule
Considerons le langage binaire C4 = {0, 01, 011, 0111}. Ces quatre mots partagent la propriete remarquable de tous commencer par la lettre 0, et de ne la contenir
qune seule fois. Ils ne se distinguent que par le nombre de 1 qui suivent. Il sensuit que
CHAPITRE 2. CODES, CODAGES ET DECODAGES
20
toute concatenation de ces quatre mots ne peut e tre obtenue que dune seule mani`ere,
et donc C3 est un code.
Pour les memes raisons le langage C40 {0, 10, 110, 1110} est un code.
Dans ces deux exemples, le role joue par la lettre 0 est celui dun delimiteur : soit
un marqueur de debut, soit un marqueur de fin de mot du code.
De mani`ere generale, on peut transformer tout langage en un code en rajoutant
en tete ou en queue de chaque mot une nouvelle lettre napparaissant dans aucun des
mots.
Proposition 2.2 Soient A un alphabet, ] une lettre nappartenant pas a` A et A0 =
A {]}. Pour tout langage C A , C.] est un code sur lalphabet A0 .
De tels codes sont appeles codes a` virgule.
Exemples :
1. C2 ] = {1], 00], 10], 01]} est un code.
2. le Morse est un code a` virgule, les silences en faisant office.
3)
Codes prefixes
Etudions
maintenant le langage C5 = {0, 11, 100, 101}. Il nest ni de longueur
fixe, et aucun symbole ne sert de delimiteur.
Pourtant il jouit dune bonne propriete : aucun mot nest un prefixe dun autre mot
de lensemble. De tels ensembles sont qualifies de prefixes.
Definition 2.12 Un langage C A est dit prefixe sil satisfait a` la condition (dite
du prefixe) :
u, v C, u 6= v, u 6 P re(v) et v 6 P re(u)
Exemple 2.1 C5 est prefixe.
Proposition 2.3 Tout langage prefixe de mots est un code.
preuve : Il suffit de prouver quun langage qui nest pas un code ne peut pas e tre
prefixe.
Considerons donc un langage C qui nest pas un code et un mot w A ayant
deux factorisations dans C :
w = u1 .u2 . . . up
= v1 .v2 . . . vq
avec u1 , . . . , up C
avec v1 , . . . , vq C
On peut ici supposer sans perte de generalite que u1 6= v1 (si ce nest pas le cas,
soit ` le premier indice pour lequel u` 6= v` ; on supprime des deux factorisations les
premiers termes u1 = v1 , . . ., u`1 = v`1 ).
21
On peut remarquer que la reciproque de cette proposition nest pas vraie (voir le
code C4 ).
IV
Algorithme de Sardinas-Patterson
Il existe des codes qui ne sont pas de longueur fixe, a` virgule ou prefixe. Il en
est ainsi de C6 = {00, 01, 110, 001}. Ce langage nentre pas dans lune des trois
categories citees, et pourtant cest un code. Sil ne letait pas, on pourrait trouver un
mot w ayant deux factorisations avec des mots de C6 :
w = u1 .u2 . . . . un = v1 .v2 . . . . vm
o`u n et m sont deux entiers (non nuls) et les ui et vi des mots de C.
Si u1 6= v1 , alors necessairement lun des deux est un prefixe de lautre. Supposons
que cest u1 qui est un prefixe de v1 . En observant les mots de C6 , on trouve alors que
u1 = 00 et v1 = 001.
La derni`ere lettre de v1 e tant un 1, u2 doit commencer par cette lettre et donc
u2 = 110. Finalement, le mot v2 doit commencer par 10 et C6 ne contient pas de tel
mot.
En consequence les deux mots u1 et v1 sont necessairement e gaux. De la meme
mani`ere on doit avoir n = m et ui = vi pour tout i, ce qui prouve que w ne peut pas
avoir deux factorisations distinctes.
Il nest pas toujours aussi facile de traiter `a la main lanalyse dun langage pour
decider sil est ou non un code. La suite de cette section e tablit un algorithme pour le
faire.
1) Residuel
Definition 2.13 Soit L A un langage et u A un mot. On appelle langage
residuel a` gauche de L par u, le langage note u1 .L defini par
u1 .L = {v A | w L tq w = u.v}
Le residuel (`a gauche) dun langage L par u est donc constitue des mots de L dont
u est un prefixe, et desquels on a supprime ce prefixe.
CHAPITRE 2. CODES, CODAGES ET DECODAGES
22
Exemples :
1. u1
1 .L = car aucun mot de L ne commence par u1 .
2. u1
ebut des deux mots 1001 et 1011.
2 .L = {01, 11} car u2 est le d
3. u1
ebut des trois mots 1, 1001 et 1001.
3 .L = {, 001, 011} car u3 est le d
Remarques :
1. u1 .L u L
2. si u nest le prefixe daucun mot de L, u1 .L est vide.
2)
Langage quotient
u1 .L
uM
Autrement dit M 1 .L est la reunion de tous les residuels a` gauche de L par les mots
de M . M 1 .L designe donc en quelque sorte les suffixes (la fin) des mots de L qui ont
comme prefixe un mot de M .
Exemple : en reprenant lexemple precedent, et en posant M = {u1 , u2 , u3 }, on a
M 1 .L = {, 01, 11, 001, 011}
Remarques :
1. M 1 .L est vide si et seulement si aucun mot de M nest un prefixe dun mot de
L. En particulier, si L est un langage prefixe, L1 .L est vide.
2. M 1 .L si et seulement si L et M contiennent un meme mot. En particulier,
pour tout langage non vide L, on a L1 .L.
3)
Lalgorithme
donn
ees :
but :
23
= L
= L1 .L \ {}
= L1 .Ln1 L1
n1 .L
pour n 2
jusqu`a ce que lon retombe sur un Ln dej`a calcule precedemment, ou que le mot vide
appartienne au Ln que lon vient de calculer.
Si appartient a` lun des Li , alors le code nest pas decodable de mani`ere unique,
sinon cest que le code est decodable de mani`ere unique.
Cet algorithme sarrete, car le nombre densembles Li distincts que lon peut calculer est fini (chacun deux est une partie de lensemble des suffixes de L, qui lui-meme
est fini).
Exemples : Considerons lalphabet A = {0, 1}.
1. Prenons le langage C2 defini precedemment :
L = C2 = {1, 00, 01, 10}
On a :
=
=
=
=
=
=
CHAPITRE 2. CODES, CODAGES ET DECODAGES
24
Inegalite de Kraft
La longueur des mots dun code peutelle e tre arbitrairement petite ? Evidemment
non. Un code ne peut pas contenir trop de petits mots. Par exemple, un code ne
peut pas contenir toutes les mots dune lettre et dautres mots.
Les deux theor`emes qui suivent donnent une reponse precise a` cette question.
1)
Un code prefixe est representable par un arbre dont les feuilles sont les mots du
code.
Exemples :
1. le code prefixe C5 est represente par larbre suivant :
@
@
@
0
10
@
@
@
11
@
@
@
100
101
V. INEGALIT
E DE KRAFT
25
0
@
@
@
01
@
@
@
011
@
@
@
0111
2) Inegalite de Kraft
Theor`eme 2.1 (Inegalite de Kraft) Soit un alphabet A de q lettres et n un entier naturel non nul. Il existe un code prefixe contenant n mots de A , de longueurs respectives `1 , `2 , . . . , `n , si et seulement si linegalite suivante, appelee inegalite de Kraft,
est verifiee :
n
X
q `i 1
i=1
preuve : on peut supposer sans perte de generalite (quitte a` les considerer dans un
autre ordre) que `1 `2 . . . `n .
1 - Condition necessaire : il existe un code prefixe inegalite.
Le mot le plus long est de longueur `n . Larbre de tous les mots de A de longueur
`n a une hauteur `n , et contient q `n feuilles.
Soit C un code prefixe. Les mots de C sont des nuds de cet arbre.
Comme C est prefixe, il ny a pas deux mots de C sur la meme branche de larbre.
Ainsi, quand on a situe un mot de C dans larbre, on sait que tous les feuilles situees
dessous ne feront pas partie de larbre de C. Si ce mot est de longueur `i ,P
on supprime
ainsi q `N `i feuilles de larbre global. Au total, on en e limine donc ainsi ni=1 q `N `i .
Ce nombre de feuilles e liminees ne peut pas e tre plus grand que le nombre total de
feuilles, q `N . Ceci signifie quon a forcement
n
X
q `N `i q `N
i=1
q `i 1
i=1
CHAPITRE 2. CODES, CODAGES ET DECODAGES
26
Ce resultat donne une condition necessaire et suffisante pour lexistence dun code
prefixe, mais il faut e tre prudent : ce nest pas parce que les longueurs des mots dun
ensemble donne satisfont linegalite de Kraft que cet ensemble verifie la propriete
detre prefixe.
La CNS e noncee est en fait une CNS pour lexistence dun code (non necessairement
prefixe) de n mots de longueurs `1 , `2 , . . . , `N . Ce resultat sera admis ici et a e te formule par Mac Millan :
Theor`eme 2.2 (MacMillan) Soit un alphabet A de q lettres et n un entier naturel non
nul. Il existe un code contenant n mots de A , de longueurs respectives `1 , `2 , . . . , `n ,
si et seulement si linegalite suivante est verifiee :
n
X
q `i 1
i=1
q `i =
1 1
1
1
1
1
61
+ +
+
+
+
=
<1
2 4 16 16 16 64
64
V. INEGALIT
E DE KRAFT
27
Par consequent, L nest pas un code. On peut voir, en analysant le deroulement de cet
algorithme que lambigute concerne des suites de lettres du type 101101 . . .
28
Chapitre 3
Codage optimal
Nous allons nous interesser ici a` lotimisation de lespace occupe par les donnees
codees. Nous allons donc e tudier la longueur des mots de code, et comprendre comment construire des codes efficaces (qui minimisent la longueur moyenne de ces mots).
Dans ce chapitre, et dans toute la suite du cours, on ne sinteressera quaux codes
decodables. En effet, quel est linteret dutiliser un codage non decodable ? On peut
dailleurs remarquer que dans la litterature la notion de code sous-entend decodable.
Une premi`ere remarque, a` la lecture du theor`eme de MacMillan, est que si on utilise
des mots de code longs, linegalite est plus facilement verifiee ; donc, il y a plus de
chance quun code decodable de mani`ere unique existe si lon autorise lutilisation de
mots de code longs. Dun autre cote, si on utilise trop de mots longs, alors la longueur
du message code va e tre tr`es grande, et son stockage ne sera pas aise. On sent donc
quil faut trouver un compromis : utiliser des mots longs, mais pas trop.
Mais comment faire pour e valuer ce compromis, et le realiser au mieux ? On remarque que les symboles de la source napparaissent pas tous avec la meme frequence
pour un ensemble donne de messages (par exemple si on consid`ere les textes e crits
en francais). On est donc tente dutiliser des mots de code courts pour coder les symboles les plus frequents, diminuant ainsi la longueur moyenne des mots de code, et
ameliorant lefficacite du code.
Nous allons ici construire une certaine classe de codes optimaux.
I Longueur moyenne
On associe a` chaque symbole de la source S une frequence dapparition dans un
message source. Il sagit en fait dune probabilite dapparition.
Definition 3.1 Une mesure de probabilite, ou distribution de frequences, est une application de la forme
f : S [0, 1] R
x 7 f (x)
29
30
f (x) = 1 .
xS
Remarquons quen toute rigueur cette longueur moyenne depend du code considere
et de la distribution des frequences de la source ; on devrait donc utiliser une notation
du type nC,f . Cependant, on utilise en general une notation allegee lorsquil ny a pas
dambigute au sujet du code ou de la distribution des freqences consideres.
Exemple 3.1 Soit la source S = {s1 , s2 , s3 , s4 }, avec la distribution de frequences
suivante :
x f (x)
s1 0, 3
s2 0, 3
s3 0, 25
s4 0, 15
On a de mani`ere generale pour un codage C defini sur S :
n = 0, 3 |C(s1 )| + 0, 3 |C(s2 )| + 0, 25 |C(s3 )| + 0, 15 |C(s4 )|.
Reprenons maintenant trois des codages binaires definis precedemment :
x
s1
s2
s3
s4
C2 (x)
1
00
01
10
C3 (x)
0
11
100
101
C5 (x)
00
01
001
110
31
I. LONGUEUR MOYENNE
Code de Huffman
111
110
1011
1010
1001
0110
1000
0101
0011
0001
0000
01110
01001
01000
00101
001000
0111110
0111101
0111100
0010011
0010010
01111110
011111110
0111111111
01111111101
011111111001
011111111000
longueur fixe : si on souhaite coder ces symbole a` laide dun code de longueur fixe
n, la plus petite longueur n envisageable est 5 car Card(S) = 27 et
24 < 27 25 . La longueur moyenne est ici n = 5.
code virgule : ce type de code consiste en lutilisation dun symbole de separation
entre les mots, ce qui l`eve toute ambigute lors du decodage. Lexemple presente
ici nous donne n = 6, 3034. Ce code nest pas tr`es efficace ici car les probabilites dapparitions des symboles de la source sont assez proches les unes des
32
II
Definition 3.3 Un codage C de S est dit optimal au regard de la distribution f sil est
decodable de mani`ere unique et quil nexiste auncun autre codage decodable C 0 tel
que nC 0 < nC .
On va donc e tudier quelles proprietes verifie un tel codage existe, et comment en
construire.
Une premi`ere remarque est quun code optimal nest, a priori, pas unique.
Exemple 3.3 Voici par exemple deux codes optimaux pour une source composee de
trois symboles de meme frequence :
s f (s) C1 (s) C2 (s)
1
s1
1
0
3
1
s2
00
10
3
1
01
11
s3
3
Proposition 3.1 Soit S une source, et f la distribution des frequences de ses symboles.
Soit C un codage optimal pour la distribution f . Alors il existe un codage prefixe C 0
qui est optimal pour f et tel que pour tout symbole x de la source : |C 0 (x)| = |C(x)|.
preuve : Ceci provient du theor`eme de MacMillan et de linegalite de Kraft. Supposons quil existe un codage optimal ; ses param`etres (longueur des mots, . . .) satisfont
linegalite de Kraft (cf. MacMillan). Et donc il existe un codage prefixe ayant ces
memes param`etres (cf. Kraft).
Ce resultat implique quon peut restreindre letude aux codes prefixes ; on sera
alors certains de travailler sur des codes decodables.
Proposition 3.2 La longueur des codes des lettres dans un codage optimal
C : S A est une fonction decroissante de leur frequence :
x, y S, f (x) > f (y) = |C(x)| |C(y)|.
ES
33
preuve : Nous allons demontrer la contraposee : sil existe deux symboles x et y tels
que f (x) > f (y) et |C(x)| > |C(y)| alors C nest pas un codage optimal.
On suppose donc quil existe deux symboles x et y tels que f (x) > f (y) et
|C(x)| > |C(y)|. Soit C 0 le codage defini par
C 0 : S A
0
C (z) = C(z)
C 0 (y) = C(x)
z 7
0
C (x) = C(y)
si z 6= x, y
Attention, la reciproque nest pas vraie : ce nest pas parce quun code verifie cette
propriete des longueurs de mots quil est optimal.
Exemple 3.4 Voici par exemple deux codes pour une source composee de trois symboles de meme frequence :
s f (s) C1 (s) C2 (s)
1
s1
00
0
3
1
s2
01
10
3
1
s3
10
11
3
Le code C1 verifie
x, y S, f (x) > f (y) = |C(x)| |C(y)|
mais nest pas optimal : nC1 = 2 > nC2 = 53 .
Ce resultat confirme lidee que les symboles les plus frequents sont codes par les
mots les plus courts.
Desormais, on se restreint aux codages binaires : A = {0, 1}.
Proposition 3.3 Soit C : (S, f ) {0, 1} un codage binaire prefixe optimal pour la
distribution f . Larbre de C est alors complet : chaque nud (interne) de larbre de C
a exactement deux fils. Autrement dit, pour tout x S, tous les prefixes de C(x) autres
que lui-meme sont prefixes dautres mots du code.
34
preuve : Raisonnons par labsurde : on suppose quil existe un code binaire prefixe
optimal dont larbre nest pas complet. Il existe dans cet arbre un nud qui na
quun seul fils. Le code e tant prefixe, ses mots sont des feuilles de larbre ; donc si
on remplace le nud par le sous-arbre quil gen`ere (on remonte ce sous-arbre dun
cran : voir le schema), on obtient larbre dun autre code prefixe, dont les mots sont
plus courts. C nest alors pas optimal, ce qui contredit lhypoth`ese de depart.
Q
A
A
A
00
01
Q
Q
Q
A
A
A
devient
Q
Q
Q
Q
A
A
A
A
A
A
00
01
10
11
100 101
On peut formaliser ce raisonnement de la mani`ere suivante : on suppose que le
code prefixe optimal C est tel quil existe un x S tel quun de ses prefixes, disons u,
nest prefixe daucun C(y), y S, y 6= x. Soit C 0 un deuxi`eme code defini par :
C 0 : S {0, 1}
C(y)
y 7 C 0 (y) =
u v0
Comme C est prefixe, C 0 lest aussi. De plus, on a nC 0 < nC (puisque |C 0 (y)| < |C(y)|
d`es que u est prefixe de C(y), et |C 0 (y)| = |C(y)| pour les autres). Ceci rentre en
contradiction avec le fait que C est un code optimal.
Corollaire 3.1 Soit C : (S, f ) {0, 1} un codage binaire prefixe. Alors les deux
symboles les moins frequents de S sont codes par deux mots de meme longueur qui ne
diff`erent que par leur dernier bit.
Pour les codages binaires optimaux, linegalite de Kraft devient une e galite.
Proposition 3.4 Soit C un codage binaire optimal de la source (S, f ), et soient n1 , . . . , nN
les longueurs respectives des mots de code. Alors linegalite de Kraft devient une
e galite :
N
X
2ni = 1
i=1
Attention, un code satisfaisant legalite nest pas forcement optimal : il faut prendre
en compte lassociation des symboles de la source aux mots de code (si on associe un
mot long a` un symbole frequent, le codage ne sera pas optimal).
35
III
On se restreint dans tout ce qui va suivre aux codages binaires : A = {0, 1}.
A
A
A
@
@
@
A
A
A
H
2)
@
@
@
HH
H
H
A
A
A
01
HH
HH
H
@
@
@
10
11
000 001
1
2k
36
f (s1 ) =
f (s2 ) = . . . = f (s6 ) =
f (s7 ) = f (s8 ) =
1
8
1
16
s1
s2
s3
s4
s5
s6
s7
s8
1
4
1
8
1
8
1
8
1
8
1
8
1
16
1
16
1
2
1
4
1
4
1
4
1
4
1
4
1
8
1
8
0
1
1
2
1
2
1
2
1
2
1
2
1
4
1
4
0
1
1
1
0
1
1
1
0
1
1
2
1
2
0
1
1
1
37
Un codage construit par la methode de Fano est optimal si les frequences sont de
la forme 21k .
On peut remarquer que cette technique peut e galement sappliquer meme lorsque
les frequences ne sont pas de la forme 21k ; on separe alors les symboles en deux ensembles les plus equitables possible (pour ce qui est des frequences). Le codage
obtenu nest alors pas forcement optimal.
3)
Proposition 3.6 Soit une source S = {s1 , . . . , sN } munie de la distribution des frequences
f ; on suppose que les symboles sont ordonnes de la mani`ere suivante : f (s1 ) . . .
f (sN ) ; soit une deuxi`eme source
S 0 = S \ {sN 1 , sN } {sN 1,N }
munie de la distribution des frequences donnee par
f 0 (s)
= f (s)
0
f (sN 1,N ) = f (sN 1 ) + f (sN )
si s 6= sN 1,N
C : S {0,
1}
= C 0 (s)
C(s)
C(sN 1 ) = C 0 (sN 1,N ) 0
s 7
C(sN )
= C 0 (sN 1,N ) 1
si s 6= sN 1 , sN
Lidee proposee par Huffman est donc de tirer parti de cette propriete et de construire
un codage optimal en considerant les deux symboles de plus basse frequence de S, en
leur attribuant a` chacun les lettres 0 et 1, puis en considerant ces symboles comme un
seul symbole de la source S 0 . On recommence en considerant S 0 comme la nouvelle
source S. Cette construction peut se faire sous forme darbre (voir les transparents du
cours) ou de tableau (voir lexemple page suivante).
Proposition 3.7 Un code obtenu par la methode de Huffman est optimal.
On dispose ainsi dune technique permettant de construire, pour toute source (S, f ),
un codage optimal. On peut donc e noncer le resultat suivant :
Theor`eme 3.1 Pour toute source S et distribution f il existe un codage optimal.
38
s1
0, 4
s2
0, 15
s1
0, 4
s2
0, 15
s1
0, 4
s2
0, 15
s1
0, 4
s5678
0, 2
s1
0, 4
s34
0, 25
s1
0, 4
s25678
0, 35
0
s1
0, 4
1
s2345678
0, 6
0
s3
0, 15
s4
0, 1
s5
s6
s7
s8
0, 1 0, 06 0, 02 0, 02
0
1
s3
s4
s5
s6
s78
0, 15 0, 1 0, 1 0, 06 0, 04
0
1
s3
s4
s5 s678
0, 15 0, 1 0, 1 0, 1
0
1
s2
s3
s4
0, 15 0, 15 0, 1
0
1
s5678 s2
0, 2 0, 15
0
1
s34
0, 25
1
s2345678
s1
0
1
s1
s25678 s34
1
00
01
s1
s34 s5678 s2
1
01
000 0001
s1
s5678
s2
s3
s4
1
000 001 010 011
s1
s2
s3
s4
s5
s678
1
001 010 011 0000 0001
s1
s2
s3
s4
s5
s6
s78
1
001 010 011 0000 00010 00011
s1
s2
s3
s4
s5
s6
s7
s8
1
001 010 011 0000 00010 000110 000111
39
IV Notion dentropie
Les resultats presentes ci-dessus restent cibles (alphabet binaire, . . .). Il est neanmoins
interessant de comprendre sur quel concepts ils reposent. La theorie de linformation,
qui a pour objet detudier le codage de linformation en toute generalite (tout type
dinformation, mais aussi tout type dutilisation de cette information : stockage, transmission . . .) a e te fondee par Claude Shannon en 1948. Elle repose sur la theorie des
probabilites. Sans rentrer dans les details mathematiques de cette theorie, il est important de degager les idees matresses de Shannon.
1) Quantite dinformation
Si un matin, en prenant votre petit dejeuner, vous lisez dans le journal : le soleil
se couchera ce soir, vous napprendrez pas grand chose. En revanche, si vous lisez :
il fera nuit ce midi, vous aurez appris quelque chose. La quantite dinformation est
nulle dans le premier cas, elle est tr`es grande dans le second.
Intuitivement une information est dautant plus importante quelle rev`ele quelque
chose dexceptionnel, cest`adire de peu frequent.
Cest cela (plus dautres arguments que nous ne developperons pas) qui a conduit
Claude Shannon a` poser la definition suivante :
Definition 3.4 Soit une source S avec une distribution de frequences f . On appelle
quantite dinformation du symbole x S le nombre :
I(x) = log2
1
= log2 f (x)
f (x)
40
xS
N
X
i=1
X
1
1
fi log2
fi log2
fi
ri
i=1
Proposition 3.8 Pour toute source S ayant N symboles, et toute distribution de frequences
f , on a
0 H(S, f ) log2 N
Legalite H(S, f ) = 0 nayant lieu que si S contient un symbole de frequence 1, et
legalite H(S, f ) = log2 N nayant lieu que si la distribution f est uniforme.
preuve : Linegalite 0 H(S, f ) est immediate.
Lautre decoule du lemme precedent avec en prenant ri = 1/N pour tout i.
41
ri 1
i=1
N
X
i=1
fi log2
1
ri
Compte tenu de la definition des ri , la somme du membre droit de cette inegalite vaut :
N
X
li
f (xi ) log2 2 =
i=1
N
X
i=1
f (xi ) li log2 2 =
N
X
f (xi ) li = nC
i=1
Corollaire 3.2 La longueur moyenne dun codage binaire optimal ne peut pas e tre
inferieure a` lentropie de la source.
Proposition 3.9 Soit une source S de distribution f . Il existe un codage binaire prefixe
C tel que :
H(S, f ) nC < H(S, f ) + 1.
La theorie de linformation permet detudier divers types de sources : independantes
(comme ici : chaque symbole est considere separement), markoviennes (on prend en
compte les suites de symboles qui sont tr`es frequentes, exploitant linformation mutuelle entre les symboles).
42
Chapitre 4
Codes correcteurs
Nous nous interesserons dans ce chapitre aux erreurs qui peuvent survenir lors
du stockage ou de la transmission des donnees. Nous nous placerons uniquemement
dans le contexte binaire : A = {0, 1}. Nous aborderons leur detection ainsi que leur
e ventuelle correction.
Contexte et motivations
Les donnees peuvent e tre alterees lors de leur stockage (influence des champs
e lectromagnetiques sur les disques durs, CD raye, . . .) ou de leur transmission (telephone,
television, reseau, satellites, . . .). On represente ces perturbations de la mani`ere suivante :
PP
AA
information
- information - decodage - donnees
source - codage - transmise -@
recue
@
@ CANAL @
P
XXX
P
De telles erreurs arrivent tr`es frequemment, et il est essentiel de pouvoir les detecter
et dessayer de les corriger. Lors de la relecteur ou de la reception de donnees, plusieurs
cas de figure peuvent se presenter :
1. les donnees sont indecodables : il y a clairement un probl`eme ;
2. les donnees sont decodables, mais on se rend compte quil y a eu un probl`eme :
il sagit par exemple dun texte et on voit que certaines lettres sont incoherentes ;
3. tout a lair normal : on decode correctement et les donnees obtenues ont un sens :
on ne sait pas sil y a eu des erreurs ou non (une erreur peut passer inapercue, par
exemple lorsquun nombre est remplace par un autre dans une somme a` payer).
Dans tous ces cas, il faut pouvoir decider o`u se situent les e ventuelles erreurs, pour
pouvoir rectifier les donnees.
43
44
II
Le mod`ele
La situation se modelise plus precisement de la mani`ere suivante :
source
utilisation
des donnees
Q
A Q
........................................................... ...........................................................
A Q
..
.. ..
..
A
Q
..
.. ..
..
Q
..
..
.. ..
Q
A
codage
codage
.... .... -
..
.
.
.
de source
de canal
.. ..
..
..
.. ..
..
..
.
.
.
..
.. ..
..
@
..
.. ..
..
canal
@
..
.. ..
..
..
.. ..
..
@
..
.. ..
..
@
..
.. ..
..
..
.. ..
..
..
.
.
.
decodage . .
decodage .
..
.. ..
..
de source
de canal
..
.. ..
..
HHH
..
.. ..
..
H
..
. .
.
......................................................... ..........................................................
optimisation
detection et
de lespace
correction des erreurs
1p
*
HH
p HH
HH p
HH
H
j
H
HH
1p
`
II. LE MODELE
45
P (x) = 1 .
xX
46
III
La personne qui recoit les donnees observe un train binaire, autrement dit une
suite de bits. Elle doit pouvoir la decouper en mots puis essayer de voir si ces mots
sont valides, cest-`a-dire si ce sont des mots du code. Ainsi lutilisation des codes
de longueur variable est tr`es hasardeuse, puisquune erreur dans le train binaire peut
totalement desynchroniser le decoupage en mots.
Exemple 4.3 Considerons par exemple le code de Huffman defini pour le codage des
textes en francais (exemple 3.2 du chapitre precedent). On code le message CETTE :
0100111001100110110
Lors de la transmission, une erreur se produit au 4`eme bit ; le destinateur recoit :
0101111001100110110
et lors du decodage il obtient R UUT, ce qui est tr`es different du message de depart.
On peut remarquer quil se rendra peut-etre compte quil y a un probl`eme car ce
message na pas de sens, mais il peut se produire des cas o`u le message concerve un
sens, qui nest pas le bon (par exemple si les donnees sont numeriques).
III. DETECTION
ET CORRECTION DES ERREURS : PRINCIPES
47
Ainsi, on utilise plutot des codes de longueur fixe car ils nous assurent un bon
decoupage. Il reste ensuite le probl`eme de la detection et de la correction des erreurs,
mais on pourra traiter chacun des mots separement.
On supposera dans la suite que me message a` coder est binaire (cest souvent dans
la pratique le resultat dun codage de Huffman binaire de la source) et on considerera
uniquement les codages binaires de longueur fixe, e galement connus sous le nom de
codes en blocs.
La procedure de codage est :
1. on decoupe le message en blocs de k bits ;
2. chacun des blocs de k bits est code separement en un bloc de n bits ;
3. on concat`ene les blocs de n bits ainsi obtenus pour former le message qui sera
transmis.
Et la procedure de decodage :
1. on decoupe le message recu en blocs de n bits ;
2. pour chacun de ces blocs de n bits, on cherche le mot du code le plus proche
(cette notion est developpee plus loin), et on extrait les k bits dinformation (on
retrouve le bloc de k bits qui est lantecedent du mot de code en question) ;
3. on concat`ene les blocs de k bits ainsi obtenus pour reconstituer le message.
Definition 4.2 Un code en blocs binaire de longueur n transforme chacun des 2k blocs
de k bits en des blocs de n bits. La quantite k designe le nombre de bits dinformation, et n k correspond a` la redondance ajoutee. Le rendement du code, ou taux
dinformation est donne par le quotient k/n.
Exemple 4.4 Si on code 1000 bits avec un code dont les param`etres sont k = 5 et
n = 8, la taille du message transmis sera 1000 8/5 = 1600.
Voici maintenant quelques exemples e lementaires de codes en blocs :
Exemple 4.5 (le bit de parite) Le principe en est tr`es simple : on rajoute a` chaque
bloc de taille k un bit, dit de parite, de sorte que sur le nouveau bloc (de taille k + 1)
le nombre de 1 est pair.
Considerons par exemple k = 4. Lensemble des mots de k bits est
0000
0100
1000
1100
0001
0101
1001
1101
0010
0110
1010
1110
0011
0111
1011
1111
A chacun dentre eux on associe un mot de code de k + 1 = 5 bits ; ces mots sont :
0000 0
0100 1
1000 1
1100 0
0001 1
0101 0
1001 0
1101 1
0010 1
0110 0
1010 0
1110 1
0011 0
0111 1
1011 1
1111 0
48
0000 0000 1111 0000 1111 0000 1111 1111 0000 1111 0000 1111 0000 0000 0000 1111
Le message transmis est donc constitue de 4 16 = 64 bits :
0000000011110000111100001111111100001111000011110000000000001111.
Ce type de codage permet de detecter et de corriger, pour chaque bloc de n bits
erreurs si n est impair, et n2
si n est pair ; au-del`a, et jusqu`a n 1
jusqu`a n1
2
2
erreurs par blocs, on va detecter les erreurs, mais on ne les corrigera pas.
IV
Metrique de Hamming
Lensemble des objets manipules ici et dans la suite est constitue des mots binaires de longueur n, et doperations definies sur ces mots : distance, addition, . . .En
mathematiques, la rigueur necessite de definir proprement ceci, selon des notions
algebriques de groupes, anneaux, corps, espaces vectoriels1 . On ninsistera pas ici sur
ces notions, et on introduira seulement les operations et proprietes utilisees dans la
suite.
Lidee principale de la correction des erreurs est, pour chaque bloc de n bits du
message recu, de retrouver le mot de code qui en est le plus proche. Reste a` definir
cette notion de proche. On utilisera ici une distance, introduite par Hamming :
1
pour chaque ensemble dobjets, on peut definir des operations ; ce sont les proprietes verifiees par
ces operations qui engendrent ces structures ; a` titre dexemples, Z muni de laddition standard des
entiers est un groupe, Z muni des addition et multiplication standard sur les entiers est un anneau, R
muni des addition et multiplication standard est un corps, Rn est un espace vectoriel
IV. METRIQUE
DE HAMMING
49
Definition 4.3 La distance de Hamming entre deux mots binaires de longueur n est le
nombre de composantes pour lesquelles ces mots diff`erent :
u, v {0, 1}n , d(u, v) = Card({i, ui 6= vi })
Exemple 4.7 Soit n = 5 ; d(01001, 01011) = 1, d(01111, 01001) = 2.
Notons que toute application de la forme d : {0, 1}n {0, 1}n R nest pas
necessairement une distance ; elle doit verifier un certain nombre de proprietes :
pour tout u, v {0, 1}n , d(u, v) = 0 u = v ;
pour tous u, v {0, 1}n , d(u, v) = d(v, u) ;
inegalite triangulaire : pour tous u, v, w {0, 1}n , d(u, v) d(u, w) + d(v, w).
Lapplication definie plus haut satisfait ces conditions et peut, a` juste titre, e tre appelee
distance. Elle definit une metrique sur lensemble des mots binaires de longueur n.
Definition 4.4 Soit C un code de longueur n, et u {0, 1}n . On definit la distance de
u a` C comme la plus petite distance entre u et un mot de C :
d(u, C) = min d(u, v)
vC
Definition 4.5 Soit u {0, 1}n , la boule de centre u et rayon r designe lensemble
des mots binaires qui sont a` une distance au plus r de u :
B(u, r) = {v {0, 1}n , d(u, v) r}.
Exemple 4.8 Soit n = 4 ; on a :
B(1001, 0)
B(1001, 1)
B(1001, 2)
B(1001, 3)
B(1001, 4)
=
=
=
=
=
{1001}
B(1001, 0) {0001, 1101, 1011, 1000}
B(1001, 1) {0101, 1111, 1010, 0000, 0011, 1100}
B(1001, 2) {0111, 1110, 0010, 0100}
B(1001, 3) {0110} = {0, 1}4
=
=
=
=
0
0
1
1
50
i = 1, . . . , n
Ainsi, u v poss`ede des 1 l`a o`u u et v diff`erent, et des 0 l`a o`u u et v concident.
Les remarques concernant laddition de deux bits setendent a` laddition de deux
mots binaires :
commutativite : pour tous u, v {0, 1}n , u v = v u ;
associativite : pour tous u, v, w {0, 1}n , (u v) w = u (v w) ;
existence dun e lement neutre e tel que pour tout u {0, 1}n , ue = eu = u ;
cet e lement est 0000 . . . 000 ; on le notera 0 ;
opposes : tout u {0, 1}n admet un oppose, lui-meme : u u = 0.
Il en decoule que, pour tous u, v, w {0, 1}n ,
u v = w u w = v v w = u
Definition 4.8 Soit u {0, 1}n ; on appelle poids de u le nombre de ses composantes
non nulles :
wt(u) = d(u, 0).
Cette notion peut, comme les precedentes, e tre definie pour tout alphabet ; dans le
cas binaire, le poids dun mot est le nombre de 1 dans ce mot. On a de plus la
propriete suivante :
u, v {0, 1}n ,
On peut maintenant preciser ce que lon entend par erreur lors de la transmission
dun mot u : on dira que u a subi des erreurs si le mot recu v est different de u. Cette
difference peut e tre exprimee comme un mot non nul e tel que v = u e ; wt(e) = t
designe le nombre derreurs. Supposons maintenant que u est un mot dun code C, le
mot v se trouve alors a` une distance inferieure ou e gale a` t de C.
2
V. DETECTION
ET CORRECTION DES ERREURS : RESULTATS
51
min
d(u, v)
u, v C
u 6= v
min
u, v C
u 6= v
wt(u v)
Definition 4.10 Soit C un code de longueur n, et soit v {0, 1}n ; on dit que C
detecte v si v 6 C. C est dit t-detecteur sil peut detecter tous les mots comportant de
1 a` t erreurs, cest-`a-dire tous les mots situes a` une distance non nulle inferieure ou
e gale a` t de C.
Proposition 4.2 Pour quun code de distance minimale d soit t-detecteur, il faut et il
suffit que d > t.
preuve : Un code C est t-detecteur si et seulement si pour tout mot u C aucune
des versions erronees de u, situee a` une distance au plus t de C, nest un mot de C,
autrement dit si et seulement si
u C,
B(u, t) C = {u}.
Ainsi, si on consid`ere toutes les boules de rayon t centrees en les mots de C, chacune ne
contient quun seul mot de C, son centre (dautres mots peuvent appartenir a` plusieurs
boules, mais ce ne seront pas des mots de C).
Soit C un code t-detecteur ; si u et v sont des mots de C tels que d(u, v) = d, ces
deux mots ne peuvent appartenir a` une meme boule : d(u, v) > t : on a donc d > t.
La reciproque est e vidente : si u et v sont des mots de C tels que d(u, v) = d, et
si d > t, alors d(u, v) > t. Comme pour tous les autres couples (u0 , v 0 ) de mots de
C, d(u0 , v 0 ) d(u, v), on a d(u0 , v 0 ) > t et les boules centrees en les mots de C ne
contiennent chacune quun seul mot de C : C est bien t-detecteur.
52
Definition 4.12 Un code est dit t-correcteur sil peut corriger tous les mots ayant subi
de 1 a` t erreurs, cest-`a-dire tous les mots situes a` une distance non nulle inferieure ou
e gale a` t de C.
On peut remarquer que pour quun code soit t-correcteur, il est necessaire quil soit
t-detecteur, et donc que sa distance minimale soit superieure a` t.
Proposition 4.3 Soit C un code t-correcteur. Alors toutes les boules de rayon t, centrees
en les mots de C sont disjointes.
preuve : On va montrer que si deux boules de rayon t, centrees en deux mots distincts
u1 et u2 de C, ne sont pas disjointes, alors C nest pas t-correcteur.
#
#
u
u
1
2
"!
"!
Appelons d la distance separant u1 de u2 : d = d(u1 , u2 ). Remarquons quen vertu
de linegalite triangulaire, d 2t, et que compte tenu de la remarque ci-dessus, on
peut supposer d > t.
Il existe une suite de mots v1 = u1 , v2 , v3 , . . . , vd+1 = u2 tels que la distance de
d(vi , vi+1 ) = 1 (comme il y a d + 1 mots, cela signifie que d(vi , u1 ) + d(vi , u2 ) = d).
Le mot vt se trouve a` une distance t de u1 , et a` une distance d t de u2 .
On distingue deux cas :
si d < 2t, alors d t < t et vt est plus proche de u2 que de u1 ;
si d = 2t, alros d t = t et vt est a` e gale distance de u1 et u2 . On distingue deux
cas :
soit u1 et u2 sont les mots du code les plus proches de vt ;
soit il existe un mot du code plus proche encore de vt .
Dans tous ces cas, C ne peut pas corriger vt . C nest donc pas t-correcteur.
Corollaire 4.1 Pour quun code de distance minimale d soit t-correcteur, il faut et il
suffit que d 2t + 1.
preuve : laissee en exercice.
VI. CODES LINEAIRES
53
VI Codes lineaires
Nous allons nous interesser ici a` une famille de codes : les codes lineaires (binaires).
u v C.
Exemple 4.9 Les codes suivants sont lineaires : {0} (le mot 0 de longueur n : cest
le plus petit code lineaire de longueur n), {0, 1}n (lespace tout entier : cest le plus
grand code lineaire de longueur n), le code obtenu par ajout dun bit de parite est
lineaire, le code a` repetition, . . .
Proposition 4.6 Soit C un code lineaire. Sa distance minimale satisfait
d = min wt(u)
uC
u 6= 0
54
Remarque : on peut en deduire que si u 6 C, alors u C nest pas un code lineaire (il
ne contient pas le mot nul).
VI. CODES LINEAIRES
55
2) Constructions
Lelement de base de la construction dun code lineaire est laddition des mots.
Regardons sur quelques exemples ce que cela implique quant a` la representation du
code.
Exemple 4.10 Soit C = {0000, 0011, 0101, 1001, 0110, 1100, 1010, 1111} le code de
parite de longueur 4, qui est un code lineaire. On va le reconstruire petit a` petit, en
ajoutant un par un des mots et en completant par addition. Considerons lensemble
E = {}
On va reconstruire le code C a` partir de cet ensemble : prenons un mot de C qui nest
pas dans E, par exemple 0011, et rajoutons-le : E = {0011}. Comme on veut que E
soit un code lineaire, on rajoute automatiquement aussi les mots obtenus par addition ;
on a donc finalement :
E = {0000, 0011}
Prenons maintenant un autre mot de C qui nest pas dans E, par exemple 0101, et
rajoutons-le, ainsi que les mots obtenus par addition de 0101 avec les mots de E ; on
obtient :
E = {0000, 0011, 0101, 0110}
Prenons maintenant un autre mot de C qui nest pas dans E, par exemple 1100, et
rajoutons-le, ainsi que les mots obtenus par addition de 1100 avec les mots de E ; on
obtient :
E = {0000, 0011, 0101, 0110, 1100, 1111, 1001, 1010}
On a enti`erement reconstitue le code C en ajoutant 0011, 0101, 1100 et en completant
a` chaque par addition. Ceci signifie que le code paut e tre defini enti`erement par ces 3
mots-l`a.
Cet exemple nous montre quon peut essayer de repesenter un code lineaire par un
sous-ensemble de ses mots.
Definition 4.15 Soit C un code lineaire. On appelle partie generatrice de C tout ensemble de mots de C qui, lorsquon le compl`ete par addition, redonne le code tout
entier. On dit quelle est minimale si lorsauon lui enl`eve un e lement elle nest plus
generatrice du code.
Une premi`ere remarque simpose ici : tout code lineaire C poss`ede au moins une
partie generatrice, lui-meme. La question que lon peut alors se poser est : peut-on
trouver une partie generatrice plus petite ?
56
Exemple 4.11 Soit C = {0000, 0011, 0101, 1001, 0110, 1100, 1010, 1111} le code de
parite de longueur 4, qui est un code lineaire. Soit
E = {0000, 0011, 0101, 1001, 0110, 1100, 1010, 1111}
On va essayer de reduire E tout en conservant la propriete que les mots de E engendrent bien tout le code C. Commencons par enlever 0000, qui peut e tre obtenu
avec nimporter quel mot (en ladditionnant a` lui-meme) :
E = {0011, 0101, 1001, 0110, 1100, 1010, 1111}
Essayons maintenant de supprimer 1111 ; on obtient alors
E = {0011, 0101, 1001, 0110, 1100, 1010}
Cet ensemble engendre bien C, puisque 00111100 = 1111. On continue, et on enl`eve
1010 ; on obtient
E = {0011, 0101, 1001, 0110, 1100}
Cet ensemble engendre bien C, puisque 0110 1100 = 1010 et 0011 1100 = 1111.
On continue, et on enl`eve 1100 ; on obtient
E = {0011, 0101, 1001, 0110}
Cet ensemble engendre bien C, puique 0101 1001 = 1100, 0110 1100 = 1010 et
0011 1100 = 1111. On continue, et on enl`eve 0110 ; on obtient
E = {0011, 0101, 1001}
Cet ensemble engendre bien C, puisque 0011 0101 = 0110, 0101 1001 = 1100,
0110 1100 = 1010 et 0011 1100 = 1111. On continue, et on enl`eve 1001 ; on
obtient
E = {0011, 0101}
Cet ensemble engendre {0011, 0101, 0110, 0000} =
6 C. Donc on ne peut pas enlever
1001. On essaie alors denlever 0101 :
E = {0011, 1001}
Cet ensemble engendre {0011, 1001, 1010, 0000} =
6 C. Donc on ne peut pas enlever
0101. On essaie alors denlever 0011 :
E = {0101, 1001}
Cet ensemble engendre {0101, 1001, 1100, 0000} =
6 C. Donc on ne peut pas enlever
0011. On ne peut pas reduire
E = {0011, 0101, 1001}
On a trouve une partie de 3 mots qui engendre C.
VI. CODES LINEAIRES
57
choisir u E2
E1 = E1 Etemp
E2 = E2 \ Etemp
taille = 2 taille
(voir les propositions 4.7 et 4.8)
Ce procede sarretera forcement puisque C ne contient quun nombre fini delements ;
ce nombre sera la valeur de taille a` la fin et sera bien de la forme 2k , o`u k sera le
nombre de mots u quon aura rajoutes.
58
5
5
5
5
6
7
8
8
8
9
9
9
10
13
14
14
14
15
15
16
16
16
17
17
18
19
19
19
19
59
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
`
TABLE DES MATIERES
60
IV
3)
Codes prefixes . . . . . . . . . . . . . . .
Algorithme de Sardinas-Patterson . . . . . . . . .
1)
Residuel . . . . . . . . . . . . . . . . . .
2)
Langage quotient . . . . . . . . . . . . . .
3)
Lalgorithme . . . . . . . . . . . . . . . .
Inegalite de Kraft . . . . . . . . . . . . . . . . . .
1)
Representation graphique dun code prefixe
2)
Inegalite de Kraft . . . . . . . . . . . . . .
Codage optimal
I
Longueur moyenne . . . . . . . . . . . . . . . .
II
Codage optimal : definitions et proprietes . . . .
III Codage optimal : constructions . . . . . . . . . .
1)
Cas de la distribution uniforme . . . . . .
2)
Cas dune distribution de la forme f (x) =
3)
Cas general : codage de Huffman . . . .
IV Notion dentropie . . . . . . . . . . . . . . . . .
1)
Quantite dinformation . . . . . . . . . .
2)
Entropie dune source . . . . . . . . . .
3)
Theor`eme du codage sans bruit . . . . . .
Codes correcteurs
I
Contexte et motivations . . . . . . . . . . . .
II
Le mod`ele . . . . . . . . . . . . . . . . . . .
III Detection et correction des erreurs : principes
IV Metrique de Hamming . . . . . . . . . . . .
V
Detection et correction des erreurs : resultats .
VI Codes lineaires . . . . . . . . . . . . . . . .
1)
Definition et premi`eres proprietes . .
2)
Constructions . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2k
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
21
21
22
22
24
24
25
.
.
.
.
.
.
.
.
.
.
29
29
32
35
35
35
37
39
39
39
40
.
.
.
.
.
.
.
.
43
43
44
46
48
51
53
53
55