Vous êtes sur la page 1sur 67

Thorie de linformation et codage

(Notes de cours)

Marie-Pierre Bal Nicolas Sendrier

21 novembre 2012


Institut Gaspard Monge, Universit de Marne-la-Valle, 77454 Marne-la-Valle Cedex
2, France. beal@univ-mlv.fr.

INRIA Rocquencourt, B.P. 105 78153 Le Chesnay Cedex, France.
nicolas.sendrier@inria.fr.

1
2 M.-P. Bal et N. Sendrier
Table de matires 3

Table des matires


1 Introduction aux systmes de communication 5
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Sources et codage de source . . . . . . . . . . . . . . . . . . . 6
1.3 Entropie dune source discrte . . . . . . . . . . . . . . . . . . 7
1.4 Autres modles de source . . . . . . . . . . . . . . . . . . . . 8
1.5 Canaux et codage de canal . . . . . . . . . . . . . . . . . . . . 8
1.6 Canaux continus . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.7 Capacit du canal . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Mesure de linformation 11
2.1 Espace probabilis discret . . . . . . . . . . . . . . . . . . . . 11
2.2 Espace probabilis joint. Probabilits conditionnelles . . . . . 11
2.3 Incertitude et information . . . . . . . . . . . . . . . . . . . . 12
2.4 Information mutuelle. Information propre . . . . . . . . . . . 14
2.5 Information mutuelle moyenne. Entropie . . . . . . . . . . . . 16

3 Codage des sources discrtes 18


3.1 Code et codage . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3 Codage avec un code de longueur fixe . . . . . . . . . . . . . 20
3.4 Codage avec un code de longueur variable . . . . . . . . . . . 21
3.5 Le premier thorme de Shannon . . . . . . . . . . . . . . . . 24

4 Canaux discrets sans mmoire 28


4.1 Dfinitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 Capacit dun canal . . . . . . . . . . . . . . . . . . . . . . . 29

5 Codage de canal 32
5.1 Le deuxime thorme de Shannon . . . . . . . . . . . . . . . 32

6 Introduction au codage correcteur 34


6.1 Codage par registres dcalage . . . . . . . . . . . . . . . . . 34
6.2 Codage correcteur convolutif . . . . . . . . . . . . . . . . . . . 37
6.2.1 La mthode algbrique . . . . . . . . . . . . . . . . . . 38
6.2.2 La mthode automatique . . . . . . . . . . . . . . . . 40
6.2.3 Calcul de la distance libre . . . . . . . . . . . . . . . . 44
4 M.-P. Bal et N. Sendrier

7 Compression de texte sans perte 47


7.1 Le codage de Huffman statique . . . . . . . . . . . . . . . . . 47
7.1.1 Description du codage de Huffman statique . . . . . . 48
7.1.2 Efficacit du codage de Huffman . . . . . . . . . . . . 48
7.2 Codage de Huffman adaptatif . . . . . . . . . . . . . . . . . . 49
7.2.1 La compression . . . . . . . . . . . . . . . . . . . . . . 49
7.2.2 La dcompression . . . . . . . . . . . . . . . . . . . . . 50
7.3 Codage de Ziv-Lempel . . . . . . . . . . . . . . . . . . . . . . 51
7.3.1 La compression . . . . . . . . . . . . . . . . . . . . . . 51
7.3.2 La dcompression . . . . . . . . . . . . . . . . . . . . . 53
7.4 Compression de Burrows-Wheeler . . . . . . . . . . . . . . . . 53
7.4.1 La transformation de Burrows-Wheeler (BWT) . . . . 53
7.4.2 Dfinition de la transforme . . . . . . . . . . . . . . . 53
7.4.3 Rversibilit de la transformation . . . . . . . . . . . . 54
7.4.4 Intert de la transformation . . . . . . . . . . . . . . . 55
7.4.5 Le codage complet . . . . . . . . . . . . . . . . . . . . 55
7.4.6 Mise en uvre . . . . . . . . . . . . . . . . . . . . . . 56

8 Codage de canal contraint 59


8.1 Canal contraint . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.2 Capacit dun canal . . . . . . . . . . . . . . . . . . . . . . . 60
8.3 Codage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Introduction aux systmes de communication 5

1 Introduction aux systmes de communication


1.1 Introduction
La thorie des communications sintresse aux moyens de transmettre
une information depuis la source jusqu un utilisateur travers un canal.
La nature de la source peut tre trs varie. Il peut sagir par exemple dune
voix, dun signal lectromagntique ou dune squence de symboles binaires.
Le canal peut tre une ligne tlphonique, une liaison radio, un support
magntique ou optique. La transmission peut se faire dans lespace ou dans
le temps. Le codeur reprsente lensemble des oprations effectues sur la
sortie de la source avant la transmission. Ces oprations peuvent tre par
exemple la modulation, la compression, le brouillage, lajout de redondance
pour combattre les effets du bruit, ou encore ladaptation des contraintes
de spectre. Elles ont pour but de rendre la sortie de la source compatible
avec le canal. Enfin le dcodeur doit tre capable, partir de la sortie du
canal, de restituer de faon acceptable linformation fournie par la source.

bruit

source codeur canal decodeur recepteur

Figure 1 Un systme de communication

La thorie de linformation a t cre par C. E. Shannon dans les an-


nes 40. Il sagit dune thorie mathmatique qui dcrit les aspects les plus
fondamentaux des systmes de communication. Elle consiste en llaboration
et ltude de modles pour la source et le canal qui utilisent diffrents outils
comme les probabilits et les automates finis.
Dans ce cours, nous tudieront certains de ces modles qui, bien que
considrablement plus simples que les sources et les canaux physiques, per-
mettent de donner une bonne approximation de leur comportement.
Pour simplifier, on tudiera sparment les modles de sources et les
modles de canaux ainsi que leurs codages respectifs.
Le but du codeur de source est de reprsenter la sortie de la source en
une squence binaire, et cela de faon la plus conomique possible.
Le but du codeur de canal et de son dcodeur est de reproduire le plus
fidlement possible cette squence binaire malgr le passage travers
6 M.-P. Bal et N. Sendrier

le canal bruit.

codeur de codeur de
source source canal
canal bruit

recepteur decodeur decodeur


de source de canal

Figure 2 Codeur de source et codeur de canal

Cette sparation entre codage de source et codage de canal nimplique


en pratique aucune limitation sur les performances du systme complet.

1.2 Sources et codage de source


Parmi les classes possibles de modles de source, nous nous intresserons
plus particulirement aux sources discrtes sans mmoire.
La sortie dune telle source est une squence de lettres tires dans un
alphabet fini A = {a1 , . . . , an }. Chaque lettre de la squence est choisie
alatoirement daprs une loi de probabilit p indpendante du temps. Pour
toute lettre a, p(a) est la probabilit pour que P cette lettre soit choisie. Il
sagit dun rel compris entre 0 et 1. On a aA p(a) = 1. La donne de
p(a1 ), . . . , p(an ) dfinit la probabilit discrte p sur A.
Il peut sembler tonnant de modliser une source dinformation laide
dune variable alatoire. Nous allons donner un exemple qui permet de se
convaincre de lutilit de tels modles.
Exemple : Soit une source dinformation qui fournit comme information
lune des quatre lettres a1 , a2 , a3 , a4 . Supposons que le codage de source
transforme cette information discrte en symboles binaires. Nous donnons
deux exemples de codage diffrents.

Codage 1 Codage 2
a1 00 a1 0
a2 01 a2 10
a3 10 a3 110
a4 11 a4 111

Si les quatre lettres sont quiprobables, la premire mthode de codage est


meilleure. Elle ncessite en effet deux symboles par lettre en moyenne tandis
Introduction aux systmes de communication 7

que la deuxime mthode ncessite 41 +2 41 +3 41 +3 41 = 2, 25 symboles par


lettres. En revanche, si lon a une source dont la distribution de probabilits
est
1 1 1
p(a1 ) = , p(a2 ) = , p(a3 ) = p(a4 ) = ,
2 4 8
la longueur moyenne dun symbole cod par la premire mthode est tou-
jours 2 tandis que celle dun symbole cod par la deuxime mthode est
1 1 1 1
2 + 2 4 + 3 4 + 3 8 = 1, 75. Le deuxime codage russit donc co-
der quatre symboles avec moins de deux bits. Il a ralis une compression.
Pour coder correctement une source, il est donc important de connatre son
comportement statistique.

1.3 Entropie dune source discrte


Nous allons tablir un lien entre linformation fournie par une source
et la distribution de probabilit de la sortie de cette source. On considre
en effet que lapparition dun vnement peu probable apporte beaucoup
dinformation tandis que loccurrence dun vnement certain ne fournit au
contraire aucune information.
Si une lettre a a une probabilit p(a) dtre tire, son information propre
est dfinie par
I(a) = log2 p(a).

En particulier I(a) vaut zro si p(a) = 1. Le choix de la fonction log et de


sa base seront expliqus plus loin.
La valeur moyenne de linformation propre calcule sur lensemble de
lalphabet revt une grande importance. Il sagit donc de lesprance de la
variable alatoire I. Elle est appele entropie de la source et est note H(A) :
X
H(A) = p(a) log2 p(a).
aA

Si une source met n lettres quiprobables (ou encore avec une loi de pro-
babilit uniforme), son entropie est donc log2 n. Si n = 2r , son entropie est
alors r. Or pour reprsenter 2r lettres distinctes en binaires, r cases sont
ncessaires.
Lentropie dune source est quelquefois donne en bits/seconde. Si len-
tropie dune source discrte est H et si les lettres sont mises toutes les s
secondes, son entropie en bits/s est H/s .
8 M.-P. Bal et N. Sendrier

1.4 Autres modles de source


On peut galement distinguer, parmi les classes de modles de sources,
les sources discrtes avec mmoire, finie ou infinie. Une entropie peut tre
dfinie pour ces sources de faon analogue.
Enfin les sources non discrtes, ou sources continues, ont une grande im-
portance dans les applications. La sortie dune telle source sera une fonction
continue du temps, par exemple une tension quil faut coder par une squence
discrte binaire. La fonction continue doit tre dcrite le plus fidlement pos-
sible par la squence binaire gnre par le codeur de source. Le problme
dans ce cas consiste minimiser le nombre de symboles transmis pour un
niveau de distorsion donn.

1.5 Canaux et codage de canal


Pour modliser un canal de transmission, il est ncessaire de spcifier
lensemble des entres et lensemble des sorties possibles. La cas le plus simple
est celui du canal discret sans mmoire. Lentre est une lettre prise dans
un alphabet fini A = {a1 , . . . , an } et la sortie est est une lettre prise dans
un alphabet fini B = {b1 , . . . , bm } . Ces lettres sont mises en squence, et,
le canal est sans mmoire si chaque lettre de la squence reue ne dpend
statistiquement que de la lettre mise de mme position.
Ainsi un canal discret sans mmoire est entirement dcrit par la donne
des probabilits conditionnelles p(b|a) pour toutes les lettres a de lalphabet
dentre et toutes les lettres b de lalphabet de sortie. Nous allons revenir
dans la section suivante sur cette notion de probabilit conditionnelle.

1-p
0 0
p
p
1 1
1-p

Figure 3 Le canal binaire symtrique

Exemple canal discret sans mmoire : Le plus connu est le canal binaire
symtrique dfini par A = B = {0, 1} et dont les probabilits de transition
sont reprsentes Figure 3. La probabilit pour quun symbole soit inchang
est 1 p, o p est un rel compris entre 0 et 1, et la probabilit pour quil
soit chang est p.
Introduction aux systmes de communication 9

On peut galement considrer des canaux discrets mmoire dans les-


quels chaque lettre de la squence de sortie peut dpendre de plusieurs lettres
de la squence dentre.

1.6 Canaux continus


Il existe une classe de modles de canaux appels canaux continus, beau-
coup plus proches des canaux physiques. Lentre et la sortie sont alors des
fonctions continues du temps. Pour les canaux de cette classe, il est com-
mode de sparer le codeur et le dcodeur en deux parties, comme le montre
la figure 4. La premire partie du codeur, que nous appellerons codeur de

codeur de codeur de modulateur


source source canal discret
canal
continu
decodeur decodeur de
recepteur canal discret demodulateur
de source

canal discret

Figure 4 Canal continu

canal discret, transforme une squence binaire en une squence de lettres


dun alphabet fini A = {a1 , . . . , an }. La seconde partie du codeur, le mo-
dulateur de donnes digitales, envoie pendant un temps c sur le canal une
des fonctions de temps prdfinies s1 (t), . . . , sn (t). La dure c est lintervalle
de temps sparant lmission de deux lettres par le codeur de canal discret.
Lensemble de ces fonctions du temps mises bout bout est converti la
sortie du canal par le dmodulateur de donnes digitales en une squence de
lettres dun alphabet de sortie B = {b1 , . . . , bm } au rythme, l encore, dune
lettre toutes les c secondes.

1.7 Capacit du canal


Nous verrons que lun des paramtres les plus importants pour dcrire
un canal est sa capacit que nous dfinirons plus tard. On peut montrer que
lon peut transmettre de linformation travers un canal nimporte quel
taux de transmission infrieur la capacit avec une probabilit derreur
10 M.-P. Bal et N. Sendrier

arbitrairement faible. Le taux de transmission est le nombre de symboles


mis en entre divis par le nombre de symboles reus en sortie.
Mesure de linformation 11

2 Mesure de linformation
Nous allons donner une mesure de la quantit dinformation qui est adap-
te la description statistique des sources et des canaux. Les noncs qui en
rsultent font appel aux probabilits discrtes. Nous allons en rappeler les
notions principales.

2.1 Espace probabilis discret


Nous considrerons des ensembles finis munis dune probabilit discrte p.
Lespace probabilis est not (A, p). La loi de probabilit est dite uniforme
si p(a) = n1 , o n = card(A), pour toute lettre a de A. Une variable alatoire
de (A, p) est une fonction de A dans un ensemble quelconque. Une variable
alatoire est relle si lespace darrive est R. Lesprance dune variable
alatoire relle v est le rel
X
E(v) = p(a)v(a),
aA

encore appel moyenne de v.

2.2 Espace probabilis joint. Probabilits conditionnelles


Pour modliser un canal discret, nous considrons lespace A B produit
des deux ensembles A = {a1 , . . . , an } et B = {b1 , . . . , bm }. Le produit est
form des couples (a, b) avec a dans A et b dans B. On munit cet ensemble
dune loi de probabilit discrte, note pAB , appele loi de probabilit jointe
de A et B. Lespace de probabilit joint est aussi not AB.

A B
a i bj

La probabilit pAB (a, b) est la probabilit davoir simultanment a en entre


et b en sortie. On dfinit une loi de probabilit pA sur A par
X
pA (a) = pAB (a, b).
bB

On vrifie que cest bien une loi de probabilit sur A. On dfinit une proba-
bilit pB sur B de faon similaire. Les deux lois pA et pB sont appeles lois
marginales.
12 M.-P. Bal et N. Sendrier

Nous dfinissons maintenant les lois conditionnelles. Soit a une lettre


de A telle que p(a) > 0. La probabilit conditionnelle pour que lon ait b en
sortie sachant que lon a a en entre est dfinie par
pAB (a, b)
pB|A (b|a) = .
pA (a)
On dit galement quil sagit de la probabilit conditionnelle pour que lon
ait {B = b} sachant que {A = a}. Notez ici labus de notation car A et B
dsignent ici des variables alatoires. De faon symtrique, on a
pAB (a, b)
pA|B (a|b) = .
pB (b)
On dit que les vnements {A = a} et {B = b} sont statistiquement ind-
pendants si 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 indpendants.
On parle alors despace probabilis produit.
Lorsquil ny aura pas de confusion on notera p toutes les probabilits
ci-dessus. Ainsi on notera p(b|a) la probabilit conditionnelle pour que lon
ait {B = b} sachant que {A = a}, et p(a|b) la probabilit conditionnelle
pour que lon ait {A = a} sachant que {B = b}. Attention ces notations
car par exemple si A = B = {0, 1}, pA|B (0|1) peut trs bien tre diffrent de
pB|A (0|1).

2.3 Incertitude et information


Avant de donner la dfinition de la mesure de linformation propose par
Shannon, nous allons essayer de dcrire le concept dinformation. En suivant
le modle probabiliste, fournir une information un utilisateur consiste
choisir un vnement parmi plusieurs possibles. Qualitativement, fournir une
information consiste donc lever une incertitude sur lissue dune exprience
alatoire.
La notion dinformation est dj inhrente celle de probabilit condi-
tionnelle. Considrons les vnements {A = a} et {B = b}. La probabilit
p(a|b) peut tre interprte comme la modification apporte la probabilit
p(a) de lvnement {A = a} lorsque lon reoit linformation que lvne-
ment {B = b} sest ralis. Ainsi
si p(a|b) p(a), lincertitude sur a augmente,
si p(a|b) p(a), lincertitude sur a diminue.
Pour mesurer la variation de lincertitude, il faut choisir une fonction d-
croissante de la probabilit. On choisit galement une fonction continue. Le
Mesure de linformation 13

logarithme permet dexprimer commodment les variations dincertitude. On


notera I(a) lincertitude sur a, encore appele information propre de a :

I(a) = log2 p(a).

Ainsi linformation b est ralis diminue lincertitude sur a de la quantit :


p(a|b)
I(a) I(a|b) = log2 .
p(a)
Cette dernire quantit est appele information mutuelle de a et b. Le choix
de la fonction log nest cependant pas arbitraire. En effet il est souhaitable
que la mesure de linformation choisie soit additive. La quantit dinfor-
mation fournie par la ralisation de deux vnements a et b statistique-
ment indpendants doit tre gale la somme des quantits dinformation
fournies par les ralisations de a et b pris sparment. On doit donc avoir
I(a, b) = I(a) + I(b) et puisque p(a, b) = p(a)p(b) lorsque a et b sont ind-
pendants, il est naturel dutiliser le log. On peut mme montrer que si la
mesure de linformation vrifie 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 dpend de
lunit de dinformation choisie. Nous utiliserons le bit.
Un bit est gal la quantit dinformation fournie par le choix
dune alternative parmi deux quiprobables.
En clair, ceci signifie que si une lettre est choisie dans lalphabet A = {0, 1}
muni dune loi de probabilit uniforme, alors la quantit dinformation four-
nie par la ralisation de lvnement {A = a} est de un bit. On a ainsi
I(0) = log2 p(0) = log2 2 = 1. Donc = 1/ log2 2. Do

I(a) = log2 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 reprsenter une infor-
mation de n bits, il faut n symboles binaires.
Exemple : Soit A = {a0 , . . . , a15 } un alphabet de 16 lettres quiprobables.
1
Linformation propre dune lettre a quelconque est I(a) = log2 ( 16 ) = 4.
Dans ce cas particulier, linformation va consister choisir un entier i dans
{0, 1, . . . , 15} et pour reprsenter cette information il faut disposer de 4 bits.
Il faut prendre garde au fait que ceci nest vrai que parce que les lettres
sont quiprobables. En effet, si ce nest pas le cas, linformation propre dune
lettre sera gnralement diffrente de 4 et linformation propre moyenne peut
mme tre strictement infrieure 4.
14 M.-P. Bal et N. Sendrier

2.4 Information mutuelle. Information propre


On considre un espace probabilis joint AB o A = {a1 , . . . , an } et
B = {b1 , . . . , bm }.
Linformation mutuelle entre les vnements {A = a} et {B = b} est
dfinie par
p(a|b)
I(a; b) = log2 .
p(a)

Par dfinition p(a, b) = p(a|b)p(b) = p(b|a)p(a). Donc

p(a, b)
I(a; b) = I(b; a) = log2 .
p(a)p(b)

Nous allons discuter le signe de I(a; b).


I(a; b) > 0 signifie que si lun des deux vnements se ralise, alors la
probabilit de lautre augmente ;
I(a; b) < 0 signifie que si lun des deux vnements se ralise, alors la
probabilit de lautre diminue ;
I(a; b) = 0 signifie que les deux vnements sont statistiquement ind-
pendants.

1-p
a1 b1
p

p
a2 b2
1-p

Figure 5 Le canal binaire symtrique

Exemple : Considrons le canal binaire symtrique de probabilit de tran-


sition p avec des entres notes a1 , a2 quiprobables et des sorties b1 , b2 .
La matrice de transition, note = (ij ), est dfinie par ij = p(bj |ai ).
La matrice de transition du canal binaire symtrique est donc
 
1p p
= .
p 1p

Puisque les entres sont quiprobables, p(a1 ) = p(a2 ) = 12 . On en dduit la


Mesure de linformation 15

loi jointe :

1p
p(a1 , b1 ) = p(a2 , b2 ) =
2
p
p(a1 , b2 ) = p(a2 , b1 ) =
2

On en dduit la loi marginale sur B : p(b1 ) = p(b2 ) = 21 . Ceci permet de


calculer linformation mutuelle de chaque couple (ai , bj ).

I(a1 ; b1 ) = I(a2 ; b2 ) = log2 2(1 p) = 1 + log2 (1 p)


I(a1 ; b2 ) = I(a2 ; b1 ) = log2 2p = 1 + log2 p.

On constate que si p < 12 , I(a1 ; b1 ) est positif et I(a1 ; b2 ) est ngatif. Ceci
signifie que lorsque lon observe la lettre b1 la sortie du canal, la probabilit
pour que a1 ait t mise en entre augmente. Au contraire si b2 est observe,
la probabilit pour que la lettre a1 ait t mise diminue. Enfin lorsque p = 21 ,
toutes les informations mutuelles sont nulles et donc les alphabets dentre
et de sortie sont statistiquement indpendants, ce qui nest pas souhaitable.
Considrons un cas particulier intressant. Quelle est linformation mu-
tuelle entre lvnement {A = a} et lui-mme ? Rigoureusement, ceci consiste
calculer I(a; b) lorsque lvnement {B = b} spcifie de faon unique {A =
a}, cest--dire lorsque p(a|b) = 1. On a alors I(a; b) = log2 p(a|b) 1
p(a) = log2 p(a) .
Do I(a; b) = log2 p(a) = I(a). Il sagit en fait de la quantit maximale
dinformation que peut fournir {A = a}.
Linformation propre de lvnement {A = a} est I(a) = log2 p(a).
Linformation propre sinterprte comme la quantit dinformation fournie
par la ralisation de cet vnement. Notons que linformation propre est
toujours positive ou nulle et que, plus un vnement est improbable, plus
son information propre est grande. linverse, la ralisation dun vnement
certain napporte aucune information, ce qui semble conforme lintuition.
On peut galement dfinir dans lespace probabilis joint AB linformation
propre conditionnelle de a sachant b qui est la quantit dinformation fournie
par lvnement {A = a} sachant que lvnement {B = b} est ralis :

I(a|b) = log2 p(a|b).

Linformation mutuelle entre deux vnements est donc

I(a; b) = I(a) I(a|b).


16 M.-P. Bal et N. Sendrier

2.5 Information mutuelle moyenne. Entropie


Linformation mutuelle moyenne de A et B dans lespace probabilis joint
AB est dfinie par :
X
I(A; B) = p(a, b)I(a; b).
aA,bB

On a donc
X p(a, b)
I(A; B) = p(a, b) log2 .
p(a)p(b)
aA,bB

On peut galement dfinir la moyenne de linformation propre dun espace


probabilis A. Cette moyenne sappelle entropie de lespace A :
X X
H(A) = p(a)I(a) = p(a) log2 p(a).
aA aA

Enfin linformation propre conditionnelle est une variable alatoire relle


et nous pouvons dfinir sa moyenne appele entropie conditionnelle de A
sachant B. Elle est dfinie sur lespace de probabilit joint AB :
X
H(A|B) = p(a, b) log2 p(a|b).
aA,bB

On en dduit que I(A; B) = H(A) H(A|B).


Nous allons tablir quelques proprits de lentropie et de linformation
mutuelle moyenne. On utilisera dans certaines preuves une proprit trs
simple de la fonction logarithme nprien. Pour tout x > 0, on a

loge x x 1,

avec galit seulement pour x = 1.

Thorme 1 Soit (A, p) un espace probabilis discret de cardinal n. Alors


H(A) log2 n avec galit ssi la loi de probabilit p est uniforme sur A.

Preuve. Il suffit de montrer que He (A) loge n, o


X
He (A) = p(a) loge p(a).
aA
Mesure de linformation 17

Or
X X
He (A) loge n = p(a) loge p(a) p(a) log n
aA aA
X 1
= p(a) loge
np(a)
aA
X 1
p(a)( 1)
np(a)
aA
X1 X
= ( p(a))
n
aA aA
= 0,
1
avec galit ssi il y a galit tout au long du calcul, cest--dire ssi p(a) = n
pour tout a de A. 
Cette proposition dit que lentropie dun espace probabilis de taille 2r est
toujours infrieure ou gale r bits.

Proposition 2 Soit AB un espace probabilis joint. Linformation mutuelle


moyenne I(A; B) de A et B est toujours positive ou nulle. Elle est nulle ssi
A et B sont statistiquement indpendants.
Preuve. Montrons que I(A; B) 0.
X p(a)p(b)
I(A; B) = p(a, b) log2
p(a, b)
aA,bB
X p(a)p(b)
= K p(a, b) loge
p(a, b)
aA,bB
X p(a)p(b)
K p(a, b)( 1)
p(a, b)
aA,bB
X X
= K( p(a)p(b) p(a, b))
aA,bB aA,bB
= 0,
o K est une constante strictement positive pour le changement de base du
log et avec galit dans les ingalits ci-dessus ssi p(a, b) = p(a)p(b) pour
tout a de A et tout b de B. 
Ce rsultat signifie essentiellement que, en moyenne, le fait de connatre la
valeur de b dans B diminue toujours lincertitude sur A, sauf si A et B sont
indpendants auquel cas aucune information nest apporte.
18 M.-P. Bal et N. Sendrier

3 Codage des sources discrtes


3.1 Code et codage
Nous allons nous intresser au codage dune source discrte sans m-
moire en une squence binaire. Le dcodage devra permettre de retrouver la
squence de lettres mises par la source partir de la squence code binaire.
Nous verrons que le nombre minimal moyen de symboles binaires par lettre
est gal lentropie de la source.
Un exemple clbre et dsuet de tel codage est le code Morse. En Morse la
lettre e, trs frquente, est reprsente par le mot , tandis que la lettre q,
moins frquente est reprsente par un mot plus long . De tels codes
sont dits codes longueur variable. On les appelle aussi plus simplement
code.
Si A est un alphabet fini, on note A lensemble des mots sur lalphabet
A. On compte parmi eux le mot vide, encore not . La concatnation de
deux mots u et v est note uv. La taille dun mot u, note |u|, est le nombre
de lettres de u.
On appellera codage dune source discrte une application qui associe
chaque squence finie de lettres de la source une squence binaire finie. Il
sagit donc dune application de A dans {0, 1} , o A est lalphabet 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 dun 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 lensemble des codes possibles des lettres

C = {c(a) | a A}.

Lapplication c dfinit bien un codage si c est injective sur A , cest--dire si


c est injective sur A et si C est un code dchiffrage unique, au sens donn
plus bas. Attention cette distinction entre code et codage.
Lefficacit du code est dfinie par

H(A)
E= ,
m
o m est le nombre moyen de symboles binaires utiliss par lettre de la
source : X
m= p(a)|c(a)|.
aA
Codage des sources discrtes 19

Lefficacit du codage est

H(A)
lim mk
,
k
k

o mk est le nombre moyen de symboles binaires utiliss pour coder une


suite de longueur k de la source. On suppose ici que cette limite existe, sinon
on prend une limite suprieure. Comme la source est sans mmoire, on a
X
mk = p(u)|c(u)|
uA ,|u|=k
X X
= ... p(a1 ) . . . p(ak )(|c(a1 )| + . . . + |c(ak )|)
a1 A ak A
= km.

Lefficacit du codage est donc gale lefficacit du code.

3.2 Code
Nous rappelons ci-dessous la notion de code vue dans le cours sur les
automates.
Un ensemble de mots finis C sur un alphabet A est appel code, ou encore
plus prcisment code dchiffrage unique, ssi pour tous mots u1 , . . . , un ,
v1 , . . . , vm de C,
u1 . . . un = v 1 . . . v m

implique n = m et ui = vi pour tout 1 i n.


Un ensemble prfixe de mots, cest--dire un ensemble de mots tel que
aucun mot nest le dbut dun autre, est un code. On dit parfois que cest
un code prfixe. Un code prfixe admet une reprsentation naturelle sous
forme darbre k-aire si k est la taille de lalphabet du code. Cet arbre est
form de nuds que lon peut identifier un mot sur lalphabet du code. Le
pre du nud identifi a1 a2 . . . ak est le nud identifi a1 a2 . . . ak1 . La
racine de cet arbre est le mot vide. Les nuds qui nont pas de descendants
identifis un mot du code sont limins. Le code est prfixe ssi lensemble
des feuilles de larbre est le code.
Un ensemble de mots de mme longueur est un code. On dit que cest un
code de longueur fixe.
20 M.-P. Bal et N. Sendrier

3.3 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

log2 n m < 1 + log2 n.

Lefficacit E dun code de longueur m est gale H(A) m . Comme H(A)


log2 n, on a E 1 et E = 1 ssi
H(A) = log2 n, cest--dire les lettres de la source sont quiprobables,
m = log2 n, cest--dire le cardinal de la source est une puissance de 2.
Exemple : Soit une source dont lalphabet est A = {0, 1, . . . , 9} munie de la
loi de probabilit uniforme. On code cette source par une code en longueur
fixe de longueur 4. Par exemple, on peut prendre

lettre 0 1 2 3 4 5 6 7 8 9
mot 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001

Lefficacit du code est H(A)/4 = (log2 10)/4 0, 83. Ce code nest pas
optimal. Il est cependant possible damliorer son efficacit en considrant
non plus des chiffres isols 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 dune loi de probabilit uniforme et son entropie vaut
H(A2 ) = log2 100 = 2H(A).
La puissance de 2 immdiatement suprieure 100 est 27 = 128. Il existe
donc un code de longueur 7 pour coder cette source. Son efficacit est cette
fois H(A2 )/7 = (2 log2 10)/7 0, 95, ce qui est meilleur. En considrant la
source A3 , on obtiendra une efficacit de 0, 996. On amliore ainsi lefficacit.
Dune faon gnrale, il est possible de considrer la source Al munie de
la loi de probabilit produit, pour l entier positif. On a alors

H(Al ) = lH(A).

(La preuve est laisse en exercice).

Proposition 3 Soit A une source 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
ml 1
log2 n < + log2 n.
l l
Preuve. On sait quil existe un code de longueur ml pour Al qui vrifie

log2 nl ml < 1 + log2 nl ,


Codage des sources discrtes 21

do le rsultat. 

Pour tout entier positif l, on pose m = ml l , o ml est la longueur optimale


du code donn par la proposition prcdente. Lefficacit dun tel code est

H(Al ) lH(A) H(A)


El = = = .
ml ml m

Daprs la proposition prcdente,

lim m = log2 n.
l

Donc
H(A)
lim El = .
l log2 n
Ceci montre que si H(A) < log2 n, il est impossible de sapprocher dun
codage optimal avec un code de longueur fixe. Par contre, pour une source
munie dune loi de probabilit uniforme, lefficacit du codage peut tre ar-
bitrairement proche de 1.

3.4 Codage avec un code de longueur variable


Parmi les codes longueur variables possibles pour effectuer un codage
de source, nous allons considrer les codes prfixes.
Un rappelle quun arbre k-aire est un arbre tel que chaque nud a au
plus k fils. Il est dit k-aire complet si chaque nud a exactement k-fils et si
tout nud a au moins un descendant qui est une feuille.
La suite gnratrice des feuilles dun arbre est la suite (sn )n0 , o sn est
le nombre de feuilles de hauteur n, la hauteur tant la distance la racine.
Lorsque larbre est fini, tous les sn sont nuls partir dun certain
P rang. On
reprsente parfois la suite (sn )n0 par la srie formelle s(z) = n0 sn z n .
Le thorme de Kraft-McMillan donne une condition ncessaire et suffi-
sante lexistence dun arbre k-aire dont la srie gnratrice des feuilles est
donne. On dit quune suite s = (sn )n0 satisfait lingalit de Kraft pour
lentier k ssi X
sn k n 1,
n0

ou encore si la srie s(z) associe vrifie

s(1/k) 1.
22 M.-P. Bal et N. Sendrier

Thorme 4 Une suite s est la srie gnratrice des feuilles dun arbre
k-aire ssi elle satisfait lingalit de Kraft pour lentier k.
Preuve. Soit tout dabord T un arbre k-aire et s la suite gnratrice de
ses feuilles. Il suffit de montrer que, pour tout n 0, la suite (s0 , . . . , sn )
satisfait lingalit de Kraft. Cest la suite gnratrice des feuilles de larbre
fini obtenu par restriction de larbre T aux nuds de hauteur au plus n. On
peut donc supposer T fini. Si s0 = 1, alors si = 0 pour i > 0 et s vrifie
lingalit de Kraft. Sinon, on a

s(z) = zt1 (z) + . . . + ztk (z),

o t1 , . . . , tk sont les suites gnratrices des feuilles des sous-arbres (ven-


tuellement vides) enracins aux fils de la racine de T . Par rcurrence sur le
nombre de nuds, on a ti (1/k) 1 ce qui permet de conclure.
Rciproquement, on fait une rcurrence sur n pour prouver que quil
existe un arbre k-aire dont la suite gnratrice des feuilles est (s0 , . . . , sn ).
Pour n = 0, on a s0 1 et T est soit larbre vide, soit larbre rduit un
nud. Supposons par hypothse de rcurrence, que lon ait dj construit
un arbre T dont la suite gnratrice des feuilles est (s0 , s1 , . . . , sn1 ). On a
n
X
si k i 1,
i=0

donc
n
X
si k ni k n ,
i=0
et ainsi
n1
X
sn k n si k ni .
i=0
Ceci permet dajouter sn feuilles larbre T la hauteur n. 
Considrons le cas dgalit dans lingalit de Kraft. Si s(1/k) = 1, alors
nimporte quel arbre qui admet s pour srie gnratrice des feuilles est com-
plet. La rciproque nest pas vraie en gnral (voir [8, p. 231]). Mais lorsque T
est un arbre complet rgulier (cest--dire qui na quun nombre fini de sous-
arbres non isomorphes), sa srie gnratrice des feuilles satisfait s(1/k) = 1.
La preuve donne dans le thorme de Kraft-McMillan est constructive
pour les arbres finis.
Le rsultat ci-dessus montre que si C est un code prfixe sur un alphabet
k lettres dont la suite gnratrice est s = (si )i0 , o si est le nombre de
Codage des sources discrtes 23

mots de C de longueur i, alors s(1/k) 1. Si C est un code qui nest pas


prfixe, ce rsultat est encore vrai comme le montre le rsultat suivant :

Thorme 5 Si C est un code sur un alphabet k lettres de srie gnra-


trice s, s(1/k) 1.

Preuve. On note p la probabilit uniforme sur lalphabet k lettres. Le


rsultat serait encore valable avec une probabilit non uniforme. On dfinit
une mesure sur les mots sur lalphabet A partir de p de la faon suivante.
Si a est un lettre de A, si u, v sont des mots de A , on a

() = 1
(a) = p(a)
(uv) = (u)(v)
X
(L) = (u).
uL

On en dduit que X
(u) = (ua).
aA

On cherche montrer que (C) 1.


Montrons tout dabord que cette proprit est vraie pour un code fini. Si
C est un code fini, on a

C A A2 . . . Ar .

Do, pour tout entier positif n,

C n A A2 . . . Anr .

Donc (C n ) nr. Comme C est un code, (C n ) = (C)n , pour tout entier


positif n. En effet ,
X X
(C n ) = (u) = (c1 ) . . . (cn ) = (C)n .
uC n c1 ,...,cn C

Supposons (C) > 1, on peut poser (C) = 1 + , avec > 0. On a donc


(C)n = (1 + )n nr, ce qui est absurde. Donc (C) 1. Si C est un
code infini, on note Cn lensemble des mots de C de longueur infrieure ou
gale n. Cet ensemble est encore un code. On a donc (Cn ) 1. De plus
(C) = supn1 (Cn ) car est une mesure. Donc (C) 1. 
24 M.-P. Bal et N. Sendrier

La construction donne dans la preuve prcdente est encore valable avec


une mesure dfinie partir dune probabilit p sur les lettres qui nest pas
uniforme. La mesure est appele mesure de Bernoulli.
Exemple : Soit A = {a, b} et C = {a, ba, bb}. Cet ensemble est un code.
Soit p dfinie par p(a) = p et p(b) = q = 1 p. On a (C) = p + pq + q 2 = 1.

Proposition 6 Soit C un code sur un alphabet A. Sil existe une mesure


de Bernoulli sur A telle (a) > 0 pour toute lettre a de A et telle que
(C) = 1 alors C est un code maximal.

Preuve. Si C est strictement inclus dans un autre code C , soit u C C.


Alors (C ) (C) = 1 = 1 + (u). Ceci implique (u) = 0 ce qui est
impossible car est positive. 

Exemple : Soit A = {a, b} et C = {a, ab, ba}. Soit p dfinie par p(a) = p = 23
et p(b) = q = 1 p = 31 . On a (C) = q + 2pq = 10 9 > 1. Donc C nest pas
un code.

3.5 Le premier thorme de Shannon

On considre ici des sources discrtes sans mmoire.

Proposition 7 Pour toute source A dentropie H(A) code en binaire au


moyen dun code de longueur moyenne m dans , on a

H(A) m.

Pour toute source A dentropie H(A), il existe un code permettant de coder


la source et de longueur moyenne m telle que

H(A) m < H(A) + 1.

Preuve. Pour la premire partie, on montre que H(A) m 0, o A est la


source discrte sans mmoire. On note C le code et c(a) le mot codant la
Codage des sources discrtes 25

lettre a de A. On a
X X
H(A) m = p(a) log2 p(a) p(a)|c(a)|
aA aA
X 2|c(a)|
= p(a) log2
p(a)
aA
X 2|c(a)|
(log2 e)1 p(a)( 1)
p(a)
aA
X X
= (log2 e)1 ( 2|c(a)| p(a))
aA aA
0,

daprs le thorme 5.
Pour le deuxime point, on note ma lunique entier vrifiant

2ma p(a) < 2ma +1 .

Donc X X
2ma p(a) = 1.
aA aA

On utilise le thorme 4 pour construire un code prfixe que lon peut mettre
en bijection avec A et tel que le mot en bijection avec a a pour longueur ma .
Comme
ma log2 p(a) < ma + 1
La longueur moyenne de ce code m vrifie alors

m H(A) < m + 1.

ou encore
H(A) m < H(A) + 1.


Lefficacit E = H(A)
m dun code qui vrifie ces ingalits ne peut donc pas
excder 1. Pour que lefficacit sapproche de 1, on va considrer la source
Al forme des l-uplets de lettres de A.
Notons que lon a H(A) = m dans le thorme prcdent ssi p(a) = 2ma
pour toute lettre a de la source cest--dire si la distribution de probabilit
de la source nest forme que dinverses de puissances de 2.
26 M.-P. Bal et N. Sendrier

Proposition 8 Pour toute source A dentropie H(A), il existe un code per-


mettant de coder la source Al et de longueur moyenne Ml telle que

Ml 1
H(A) < H(A) + .
l l

Preuve. Daprs la proposition prcdente,

H(Al ) Ml < H(Al ) + 1.

Or H(Al ) = lH(A), donc

Ml 1
H(A) < H(A) + .
l l


Nous pouvons maintenant prouver le premier thorme de Shannon.

Thorme 9 Pour toute source discrte sans mmoire, il existe un codage


(injectif ) permettant de coder la source et dont lefficacit est arbitrairement
proche de 1.

Ceci scrit encore de la faon suivante : pour tout rel > 0, il existe
un codage permettant de coder la source et dont lefficacit est strictement
suprieure 1 .
Preuve. Nous allons dcrire un codage injectif pour un entier l fix. Pour
coder N = kl + r symboles de la source, o 0 r < l, on code les k premiers
l-uplets de lettres laide du code construit pour Al . Le bloc restant contient
r lettres. On le complte avec lr symboles alatoires tirs avec la probabilit
p sur A par exemple, et on code ce bloc avec le mme code. On transmet
galement, pour garantir linjectivit du codage, lcriture de r en binaire sur
log2 l bits. Si Ml est la longueur moyenne du code permettant de coder Al ,
on a
Ml 1
H(A) < H(A) + .
l l
Le codage dcrit ncessite donc en moyenne (k + 1)Ml + log2 l symboles
binaires pour N lettres de la source. La moyenne pour une lettre est donc

(k + 1)Ml + log2 l
.
kl + r
Codage des sources discrtes 27

Ml
Lorsque N tend vers linfini, cette moyenne converge vers m = l . Leffica-
cit du codage est E = H(A)
m . Do

1 1
<1+ .
E lH(A)
1 1 1
On choisit l tel que l > H(A) , on a alors E < 1 + . Do E > 1+ 1 .

28 M.-P. Bal et N. Sendrier

4 Canaux discrets sans mmoire


Dans le codage de source, aucun lment extrieur ne vient modifier
linformation. Au contraire lorsque linformation transite dans un canal, elle
est perturbe par un bruit.
Le rsultat principal de cette section est quil est possible de coder de
linformation de faon ce que la dtrioration soit ngligeable. Ceci se
fait au prix dune redondance de linformation ou encore dune vitesse de
transmission ou de capacits de stockage plus faibles.
Pour tout canal de transmission on dfinit une grandeur caractristique
appele capacit du canal et que lon peut interprter comme la quantit
maximale dinformation pouvant transiter travers le canal.

4.1 Dfinitions
Pour dfinir un canal de transmission, on dcrit lensemble des entres
et des sorties possibles du canal ainsi que la bruit qui peut perturber la
transmission.
Le canal discret est le plus simple des canaux de transmission. Lensemble
des entres et lensemble des sorties sont deux alphabets finis A et B. Le
canal est discret sans mmoire si le bruit se modlise comme une probabilit
conditionnelle de B sachant A indpendante du temps. Un canal discret sans
mmoire est donc dfini par
lalphabet dentre A,
lalphabet de sortie B,
la matrice de transition = (ij ) o ij = p(bj |ai ).
Par exemple, le canal binaire symtrique de probabilit derreur p avec
des entres notes a1 et a2 et des sorties notes b1 et b2 , est dfini par les
probabilits conditionnelles donnes par la matrice de transition :
 
1p p
= ,
p 1p

Le canal effacement est un canal dont les entres sont des bits dans
{0, 1} et les sorties des symboles de lalphabet {0, , 1}. La matrice stochas-
tique pour ce canal est
 
1 p p p p
= .
p p 1 p p

Certaines classes de canaux ont des proprits remarquables. Soient A =


{a1 , . . . an } et B = {b1 , . . . bm }.
Canaux discrets sans mmoire 29

Un canal est dit sans perte si H(A|B) = 0 pour toutes les distri-
butions en entre. On encore, on peut partitionner P les sorties B en
B1 , B2 , . . . , Bn de telle sorte que pour tout i, bBi p(b|ai ) = 1. Len-
tre de ce canal est dtermine par la sortie.
Un canal est dit dterministe si p(bj |ai ) = 0 ou 1 pour tout i, j. Ou
encore si H(B|A) = 0. La sortie de canal est dtermine par lentre.
Un canal est dit sans bruit sil est dterministe et sans perte.
Un canal est inutile si I(A; B) = 0 pour toutes les toutes les distribu-
tions en entre. Ceci quivaut avoir H(A|B) = H(A) pour toutes pro-
babilits pA . Ceci est quivaut encore p(bj |ai ) = p(bj ) pour tout i, j.
Les lignes de la matrice pour ce canal sont donc toutes identiques. Ce
canal mlange donc les entres et la connaissance des sorties napporte
aucune information sur les entres.
Un canal est symtrique si chaque ligne de contient ( permutation
prs) les mmes valeurs p1 , . . . pm et chaque colonne de contient (
permutation prs) les mmes valeurs q1 , . . . qn . Par exemple le canal
donn par  
1 1 1 1
= 3 3 6 6
1 1 1 1
6 6 3 3
est symtrique.

4.2 Capacit dun canal


On considre un canal discret sans mmoire donn par A, B, . On
rappelle que lentropie mutuelle jointe I(A; B) dpend aussi de la distribution
de probabilit pA sur A. Par dfinition
X p(a|b) X p(b|a)
I(A; B) = p(a, b) log2 = p(a, b) log2 .
p(a) p(b)
aA,bB aA,bB

On rappelle que lon a donc aussi


X p(a, b)
I(A; B) = p(a, b) log2 .
p(a)p(b)
aA,bB

Elle vrifie (voir feuille dexercice 1),


I(A; B) = H(B) H(B|A) = H(A) H(A|B) = H(A) + H(B) H(A, B).
Ici H(A, B) dsigne lentropie de lespace joint considr comme une source :
XX
H(A, B) = p(a, b) log2 p(a, b).
aA bB
30 M.-P. Bal et N. Sendrier

Lorsquon fait varier la distribution dentre pA , I(A; B) varie. La valeur


maximale que lon peut atteindre sappelle la capacit de Shannon du canal :

C = max I(A; B).


pA

La capacit est donc un rel positif ou nul, infrieur ou gal au log base
2 du cardinal de A et de B.
Nous allons calculer la capacit dun canal symtrique. Considrons donc
un canal symtrique dont les valeurs communes des lignes de sont p1 , . . . pm
et les valeurs communes des colonnes sont q1 , . . . qn .

Proposition 10 Pour un canal symtrique, H(B|A) ne dpend pas de la


distribution pA .

Preuve. Par dfinition,


XX
H(B|A) = p(a, b) log2 p(b|a)
aA bB
XX
= p(a) log2 p(b|a)p(b|a)
aA bB
X X
= p(a)( p(b|a) log2 p(b|a))
aA bB
X Xm
= p(a)( pj log2 pj )
aA j=1
Xm
= pj log2 pj .
j=1

La dernire galit ne dpend plus de pA do la conclusion. 

Comme I(A; B) = H(B) H(B|A) et puisque H(B|A) ne dpend pas


pA , il suffit de maximiser H(B) pour maximiser I(A; B). Daprs le thorme
1, H(B) log2 m avec galit si et seulement si pB est la loi uniforme. Ainsi,
si on trouve une distribution pA en entre telle que la loi en sortie soit la loi
uniforme, on aura russi calculer la capacit du canal. Nous allons voir que
la loi uniforme en entre va faire laffaire.
Supposons donc que pA est la loi uniforme en entre. La loi pB se calcule
par
X X 1X
p(b) = p(a, b) = p(b|a)p(a) = p(b|a).
n
aA aA aA
Canaux discrets sans mmoire 31

P
Or aA p(b|a) est la somme des lments de la colonne dindice b de .
Cette quantit est la mme pour toutes les colonnes et donc pB est la loi
uniforme sur B. La capacit dun canal symtrique est donc
m
X
Csym = log2 m + pj log2 pj .
j=1

Par exemple la capacit du canal binaire symtrique est

CBSC = 1 + p log2 p + (1 p) log2 (1 p) = 1 H(p, 1 p).


32 M.-P. Bal et N. Sendrier

5 Codage de canal
Nous considrons des suites binaires sources qui sont des blocs de lon-
gueur fixe m de lettres de lalphabet A = {0, 1}. Chaque bloc est dabord
cod laide dun code binaire de longueur constante gale n, et de car-
dinal M 2m . Ce codage est appel codage de canal par blocs. Les blocs
cods passent ensuite dans un canal discret sans mmoire (B, C, ), o B
est lalphabet dentre du canal et C est son alphabet de sortie. On suppose
ici que B = C = {0, 1}. Aprs le passage dans le canal, on souhaite retrou-
ver la suite binaire initiale. Cest le rle jou par le dcodeur. Le dcodage
transforme donc une suite de n lettres de C en une suite source de m lettres
de A.
On dfinit le taux ou rendement dun code binaire de cardinal M consti-
tu par des mots de longueur n par
log2 M
R= .
n
Un code aura un taux 1 lorsque M = 2n , cest--dire lorsquaucune re-
dondance naura t ajoute. Un code de taux 1/2 signifie que M = 2n/2 ,
cest--dire que le code double la longueur des squences binaires de la source.

5.1 Le deuxime thorme de Shannon


Nous allons expliquer sans le prouver le deuxime thorme de Shannon
pour le canal binaire symtrique. On rappelle que la capacit de ce canal est
CBSC = 1 + p log2 p + (1 p) log2 (1 p). Pour ce canal B = C = {0, 1}.
On note a un bloc source de longueur m, b un mot de longueur n du
code X = {c(a) | a Am } B n , et enfin c dsigne un mot de C n . Si est
un algorithme de dcodage, on note (c) le dcodage de c par .
Dfinition Le taux derreur rsiduel dun algorithme de dcodage est gal
la probabilit dun dcodage erron lorsque la loi dmission de la source
est uniforme.
Si pe est le taux derreur rsiduel, on a
X
pe = p(a, c)
aAm ,cC n |(c)6=a
X X p(c|b)
= p(c|a)p(a) = .
2m
aAm ,cC n |(c)6=a bX,cC n |c((c))6=b

Exemple Considrons le code binaire rptition de longueur n. Il est


constitu de deux mots de longueur n : 0 . . . 0 et 1 . . . 1. On a donc M = 2.
Codage de canal 33

On suppose que n est impair. On peut donc poser n = 2r + 1. Un algorithme


de dcodage possible pour ce code est le dcodage dit majoritaire. Une suite c
de longueur n est dcode en 0 si elle a une majorit de 0 et en 1 sinon.
La probabilit pour que le mot 0 . . . 0 soit dcode en 1 . . . 1 est gale
la probabilit pour que le nombre de symboles errons aprs passage dans le
canal soit suprieur ou gal r + 1, soit
n  
X n i
pe = p (1 p)ni .
i
i=r+1

Il est possible de montrer que pour une probabilit derreur p < 1/2, le taux
derreur rsiduel peut tre rendu arbitrairement petit.

Thorme 11 Soit un canal binaire symtrique de capacit C. Pour tout


rel positif R < C, il existe une suite Cn de codes binaires de longueur n,
de rendement Rn , avec des algorithmes de dcodage de taux derreur rsiduel
pe,n telle que
limn Rn = R,
limn pe,n = 0.
Ce thorme signifie donc quil existe des codes en bloc permettant de
raliser un code dont le taux de transmission est aussi proche quon le sou-
haite de la capacit du canal avec un taux derreur arbitrairement petit.
Le thorme suivant constitue une rciproque au thorme prcdent.

Thorme 12 Soit un canal binaire symtrique de capacit C. Pour tout


code de taux R > C, il existe une constante strictement positive KR,C ne
dpendant que de R et C telle que tout algorithme de dcodage de ce code est
tel que le taux derreur rsiduel vrifie pe > KR,C .
Ce rsultat indique quil est inutile de chercher des codes de taux sup-
rieur la capacit du canal. La capacit est donc bien le taux de codage
maximal que lon puisse atteindre pour faire transiter une information dans
un canal.
34 M.-P. Bal et N. Sendrier

6 Introduction au codage correcteur


6.1 Codage par registres dcalage
Nous donnons un exemple de codage correcteur derreurs qui simpl-
mente laide de circuits lectroniques trs simples appels registres dca-
lage.
Il sagit dun codage par blocs dit code de Hamming [7,4,3]. Les deux
premiers paramtres indiquent le taux de transmission ou rendement 4 : 7.
Le schma de codage est le suivant. On note m = a0 a1 a2 a3 le bloc de bits

a0 a 1 a 2 a 3

b 0 b1 b 2 b 3 b 4 b 5 b6
c

Figure 6 Un codage de taux 4 : 7

coder de longueur 4. On note c = b0 b1 b2 b3 b4 b5 b6 le bloc de bits cod de


longueur 7. m on associe le polynme m(x) = a0 + a1 x + a2 x2 + a3 x3 et
c on associe le polynme c(x) = b0 + b1 x + b2 x2 + . . . b6 x6 . On considre que
ces polynmes sont coefficients dans F2 , o F2 est le corps deux lments
Z/2Z. Dans F2 [x], on peut effectuer
des additions, par exemple

(1 + x + x2 ) + (x + x3 ) = 1 + x + x2 + x3 .

des multiplications, par exemple

(1 + x)2 = 1 + x2 .

des divisions, par exemple

(x3 + x2 + x) = (x2 + 1)(x + 1) + 1.

Plus gnralement, on peut diviser un polynme p(x) par un polynme d(x).


Il existe une dcomposition unique en

p(x) = q(x)d(x) + r(x),


Introduction au codage correcteur 35

o d(x) et r(x) sont des polynmes tels que le degr de r(x) est strictement
plus petit que le degr de d(x). Le polynme r(x) est appel reste de la
division de p(x) par d(x) et est not p(x) mod d(x). On dit que p(x) =
q(x) mod d(x) si et seulement si d(x) divise p(x) q(x).
Nous allons utiliser le polynme

g(x) = 1 + x + x3 .

On commence par calculer 1, x, x2 , x3 , . . . mod g(x).

1 x x2 x3 x4 x5 x6
1 1 0 0 1 0 1 1
x 0 1 0 1 1 1 0
x2 0 0 1 0 1 1 1

Le tableau ci-dessus signifie par exemple que x4 = x + x2 mod g(x). On note


n = 3 le degr de g. On remarque que les 2n 1 = 7 colonnes du tableau
n
sont toutes distinctes et non nulles. On en dduit que 1, x, x2 , x3 , . . . , x2 2
sont distincts et non nuls. Un tel polynme g est dit primitif.
Dfinition du codage
Le codage associe m(x) = a0 + a1 x + a2 x2 + a3 x3 c(x) dfini par

c(x) = m(x)x3 + (m(x)x3 mod g(x)).

1 x x 2 x3
m a0 a 1 a 2 a 3

.x3

c b 0 b 1 b 2 a 0 a1 a 2 a 3

Figure 7 Le codage

Sur la figure 7, b0 + b1 x + b2 x2 = m(x)x3 mod g(x). Les bits b0 b1 b2 sont


appels bits de correction et les bits a0 a1 a2 a3 sont appels bits dinformation.
Le calcul de c(x) = c0 + c1 x + + cn xn mod g(x) seffectue au moyen du
registre dcalage de la figure 8. Chaque dcalage droite correspond une
multiplication par x. Le polynme c(x) vrifie la proprit suivante :

c(x) = 0 mod g(x).


36 M.-P. Bal et N. Sendrier

1 x x2
c 0 c1 c 2 ... c n
+ +

"x 3 = 1 + x"

Figure 8 Un registre dcalage

Dfinition du dcodage
On va tout dabord supposer quune erreur au plus peut survenir sur un bloc
cod c de 7 bits. Le polynme dcoder est donc c(x) = c(x) + e(x), o
e(x) reprsente lerreur. Avec lhypothse, on a e(x) = xi o i est un entier
compris entre 0 et 6 qui est inconnu.
La correction dune erreur ventuelle se fait de la faon suivante. On
calcule c(x) mod g(x) avec le mme registre dcalage que celui utilis lors
du codage. Deux cas se prsentent alors
Si c(x) mod g(x) = 0, on conclut quil ny a pas eu derreurs.
Si c(x) mod g(x) = xi , on conclut quil y a eu une erreur sur le bit
numro i. En effet,

c(x) mod g(x) = (c(x) + e(x)) mod g(x) = e(x) mod g(x) = e(x).

Le calcul de i seffectue avec un circuit permettant de retrouver lindice


de la colonne du tableau des puissances de x modulo g(x) partir des
valeurs de cette colonne.
Aprs correction, on a c(x), donc c. On renvoie les quatre derniers bits de c
qui sont m.
Jusqu prsent, nous avons fait lhypothse que le canal ne produit
quune seule erreur au plus par bloc. En pratique, si lon prend le cas du
canal binaire symtrique, une erreur se produit de faon alatoire avec une
probabilit p. Si par exemple p = 103 , un bit sur mille en moyenne est faux.
Cela signifie, pour la transmission dun texte, environ une erreur toutes les
deux lignes. Avec le codage dcrit ci-dessus par le Hamming [7,4,3], la pro-
babilit de transmission correcte dun bloc de quatre bits est 1 pe , o pe
est le taux derreur rsiduel. Cette probabilit est donc, si q = 1 p,

q 7 + 7pq 6 = (1 + 6p)(1 p)6 = (1 + 6p)(1 6p + 15p2 + o(p2 )) 1 21.106 .

Tout se passe donc comme si la probabilit derreur sur un bit ntait plus
que de lordre de 105 . Sur un texte, cette probabilit donne moins dune
Codage correcteur convolutif 37

erreur sur cent lignes. La capacit du canal binaire symtrique avec p = 103
est 1 H(p, 1 p) = 0, 98859224.

Exemple
Le codage correcteur du Minitel a un taux 120 : 136. Le dernier octet (sur 17)
dun mot de code est un octet de validation. Il ne comporte que des zros.
Il dtecte des erreurs importantes comme celles provoques par la foudre
par exemple. Lorsquune partie du message a t perdue, cet octet contient
le dbut du message suivant et sert donc dtecter ce type derreurs. Les
16 premiers octets sont des mots dun code de Hamming obtenu avec le
polynme primitif g(x) = x7 + x3 + 1. Il contient 15 octets dinformation
et 7 bits de correction. Les 7 bits de correction sont complts dun bit de
parit qui en font un octet de correction. Un tel codage sappelle un codage
de Hamming tendu. Il permet de corriger une erreur et den dtecter deux.
Expliquer pourquoi.

6.2 Codage correcteur convolutif

Nous prsentons le principe du codage correcteur convolutif. Il sagit dun


codage dit fentre glissante. Il existe deux entiers m (pour mmoire) et a
(pour anticipation) tels que le symbole dindice n de la suite code ne dpend
que du bloc source fini compris entre les indices n m et n + a. La suite
code se calcule ainsi en promenant une fentre de taille borne le long de la
suite coder.
m a

Figure 9 Une fentre glissante

Nous prsentons le principe du codage convolutif sur un exemple. On


considre une source qui met une suite I0 = (i0 , i1 , . . . , in , . . .) de bits et
va traverser un canal bruit. Chaque bit in est cod par un bloc de deux
(0) (1)
bits (tn , tn ). Le taux de transmission de ce codage sera donc constant et
38 M.-P. Bal et N. Sendrier

gal 1 : 2. Ces bits sont calculs modulo 2 par les formules suivantes
t(0)
n = in2 + in
t(1)
n = in2 + in1 + in

z2 z 1
in-2 in-1 i n

Figure 10 Une fentre de codage

6.2.1 La mthode algbrique

+ T0

I0 i2 i1 i0

+ T1

Figure 11 Un codage de convolution

Nous allons tout dabord tenter de dcrire de faon algbrique le codage


et le dcodage. Pour ceci, il est commode de dcrire les suites binaires par
des sries formelles o les coefficients sont dans Z/2Z. On note ainsi
I0 (z) = i0 + i1 z + i2 z 2 + . . .
(0) (1)
On dfinit de mme T0 et T1 les sries correspondant (tn )n0 et (tn )n0 .
On dduit des dfinitions que
T0 (z) = (1 + z 2 )I0 (z),
T1 (z) = (1 + z + z 2 )I0 (z).
Codage correcteur convolutif 39

On pose T (z) = T0 (z 2 )+zT1 (z 2 ) et I(z) = I0 (z 2 ). La suite T (z) est une srie


formelle dont la suite des coefficients est la suite code de I0 . On obtient

T (z) = (1 + z 4 )I(z) + (1 + z 2 + z 4 )zI(z).

Do
T (z) = (1 + z + z 3 + z 4 + z 5 )I(z).
Donc T (z) = G(z)I(z). De cette formule provient le terme de codage de
convolution.
Nous allons maintenant dcrire le dcodage sans se proccuper pour lins-
tant des ventuelles erreurs survenues dans le canal. Il sagit de retrouver
I0 (z) partir de T0 (z) et T1 (z). Soit G0 (z) = 1 + z 2 et G1 (z) = 1 + z + z 2 .
Le pgcd de ces deux polynmes est 1. Donc daprs le thorme de Bzout,
il existe deux polynmes P0 et P1 tels que

P0 G0 + P1 G1 = 1.

Do
P0 T0 + P1 T1 = I0 .
On trouve ici P0 (z) = 1 + z et P1 (z) = z. Donc le dcodage est lui aussi
fentre glissante avec une fentre de longueur 2. On obtient
(0) (1)
in = tn1 + tn1 + t(0)
n .

On peut mme obtenir une fentre de longueur 1 avec dcalage de une unit
de temps sur les indices. En effet, sur cet exemple puisque

T0 (z) = (1 + z 2 )I0 (z),


T1 (z) = (1 + z + z 2 )I0 (z),
(0) (1)
on a, toujours modulo 2, T0 (z) + T1 (z) = zI0 (z) et donc in = tn+1 + tn+1 .
On dduit de ces calculs que si des erreurs surviennent sur la suite code,
ces erreurs ne se propagent pas au dcodage.
Nous allons maintenant gnraliser cet exemple. Un codage de convolu-
tion de taux 1 : k peut tre obtenu en codant chaque bit source de la suite
I0 par k bits de T0 , T1 , . . . , Tk1 respectivement, o

Ti (z) = Gi (z)I0 (z) 0 i k 1.

Deux cas sont alors possibles.


40 M.-P. Bal et N. Sendrier

Si les polynmes Gi sont premiers entre eux, ou si leur pgcd est une
puissance de z, il existe des polynmes Pi tels que

k1
X
Pi (z)Gi (z) = z r .
i=0

Donc
k1
X
Pi (z)Ti (z) = I0 (z)z r .
i=0

Donc le dcodage se fait dans ce cas laide dune fentre glissante le


long des suites Ti . Ce dcodage est sans propagation derreur.
Si le pgcd des polynmes Gi nest pas une puissance de z mais vaut
z r P (z) avec P (z) = 1 + Q(z), Q(0) = 0 et Q(z) 6= 0. Il existe des
polynmes Pi , premiers dans leur ensemble, tels que

k1
X
Pi (z)Gi (z) = P (z)z r ,
i=0

et
k1
X
Pi (z)Ti (z) = I0 (z)P (z)z r ,
i=0

Nous allons montrer quune erreur survenue sur la suite code peut
parfois se propager linfini. Un tel codage est dit catastrophique.
Supposons quune erreur survienne sur un bit de Ti , Ti (z) est chang
en Ti (z) = Ti (z)+z n pour un certain entier n. La suite T est dcode en
I0 tel que (I0 I0 )(z)P (z)z r = Pi (z)z n . Supposons que (I0 I0 )(z) est
un polynme, ce qui signifie que lerreur ne se propage pas linfini lors
du dcodage. Alors P (z) = 1 + Q(z), avec Q(0) = 0, divise Pi (z)z n .
Donc P (z) divise Pi (z). Pour que le dcodage soit sans propagation
derreur quel que soit le bit sur lequel survient lerreur, il faut donc
que P (z) divise Pi (z) pour tout i, ce qui contredit le fait que les Pi
sont premiers dans leur ensemble. Dans ce cas, aucun dcodage ne peut
tre fentre glissante.

6.2.2 La mthode automatique


Pour pouvoir corriger des erreurs, cest une autre mthode de dcodage
qui est utilise en pratique. Il sagit dun dcodage dit en treillis.
Codage correcteur convolutif 41

0|00

00
0|11 1|11

1|00

10 01

0|01

0|10 1|10
11

1|01

Figure 12 Transducteur de codage.

On reprsente tout dabord le codeur laide dun transducteur. Il sagit


dun automate fini dont les flches ont des entres et des sorties. Lautomate
dentre du transducteur est obtenu en masquant les sorties et lautomate
de sortie est obtenu en masquant les entres. En gnral il y a une lettre en
entre et une lettre en sortie, chaque lettre pouvant elle-mme reprsenter
un bloc de plusieurs bits. Le codage dcrit ci-dessus est reprsent par le
transducteur de la figure 12 dont les tats sont des blocs de deux bits source
reprsentant la mmoire de lentre, et dont les flches sont dfinies par

(0) (1)
in |tn tn
(in2 in1 ) (in1 in ).

En recodant les sorties par

a = 00
b = 01
c = 10
d = 11

on obtient le transducteur de la figure 13.


42 M.-P. Bal et N. Sendrier

0|a

00
0|d 1|d

1|a

10 01

0|b

0|c 1|c
11

1|b

Figure 13 Transducteur de codage lettre lettre.

Nous donnons maintenant quelques dfinitions plus techniques sur les


automates. La plus importante est la notion de localit qui traduit des pro-
prits de synchronisation trs fortes dun automate fini.
Un chemin bi-infini dans lautomate est parfois not ((pi , ai , pi+1 ))iZ .
Un chemin fini de longueur n sera not ((pi , ai , pi+1 ))0i<n . Dans les deux
cas, pi est appel tat de passage linstant i.
Un automate est dit non-ambigu, ou sans diamant, si deux chemins qui
partent dun mme tat, arrivent sur un mme tat et ont mme tiquette,
sont gaux.
Un automate dterministe admet au plus une flche partant dun tat
donn avec une tiquette donne. Il est dit dterministe complet pour un
certain alphabet si de chaque tat part exactement une flche dtiquette
donne dans lalphabet.
Soient m et a deux entiers positifs ou nuls. Un automate est dit (m, a)-
local, ou (m, a)-dfini, si chaque fois que lon a deux chemins de longueur
m+a, ((pi , ai , pi+1 ))0i<(m+a) et ((pi , ai , pi+1 ))0i<(m+a) , de mme tiquette,
alors pm = pm . Il sagit dune proprit de confluence des chemins un
instant donn. On remarquera que cette notion est non oriente. Un automate
est local, ou dfini, sil est (m, a)-local pour deux entiers positifs ou nuls m
et a (m est po ur mmoire et a pour anticipation). Lorsque lautomate est
Codage correcteur convolutif 43

dterministe local, la proprit est satisfaite avec une anticipation nulle. La


plus petite valeur de m + a telle quun automate local est (m, a)-local est
parfois appele dlai de synchronisation de lautomate.
Le transducteur de la figure 13 est dterministe en entre et local en
sortie. Sur cet exemple, le transducteur est mme dterministe local en sortie.
Lalgorithme utilis pour le codage est le suivant. On choisit un tat de
dpart, on lit la suite coder sur lentre de lautomate. On produit le mot
lu en sortie. La suite coder peut tre suppose infiniment longue en thorie.
Il ne sagit donc pas dun codage par blocs. En pratique, les suites coder
sont finies mais elles sont trs longues.
Lalgorithme utilis pour le dcodage sappelle lalgorithme de Viterbi.
Il sagit dun algorithme de programmation dynamique. On part de ltat
de dpart fix lors du codage. Le principe est le suivant. On veut trouver
le chemin de lautomate issu de ltat de dpart dont ltiquette de sortie a
la mme longueur que la suite dcoder et est la plus proche possible de
la suite dcoder. La notion de proximit peut varier. On considrera tout
dabord la distance dite de Hamming pour laquelle deux suites sont dautant
plus proche que leur nombre de bits diffrents est petit.
On appelle distance de Hamming entre deux suites de mme longueur,
finies ou infinies, le nombre de bits diffrents entre les deux suites. Par-
fois, dautres distances sont prises en compte. On note d(u, v) la distance
entre deux suites u et v. Si les sorties ont t recodes, on tient compte
du nombre de bits distincts quelles reprsentent. Ainsi d(aaa, bbb) = 3 et
d(aaa, ddd) = 6.
On note Q lensemble des tats du transducteur. Ltat correspondant
un bloc de 0 est not 0. On choisit cet tat comme tat de dpart au moment
du codage.

Description de lalgorithme de Viterbi


Soit t = t1 . . . tN la suite dcoder, on effectue N tapes de la faon suivante.
Le cot dun chemin de longueur i est la distance de Hamming entre
son tiquette de sortie et le prfixe de la suite dcoder t1 t2 . . . ti .
ltape i (1 i N ), et pour chaque tat q de lautomate, on
mmorise un unique chemin, not c(q, i) de longueur i, dorigine ltat
de dpart 0 et darrive ltat q, et de cot minimal parmi tous ces
chemins. On note ce cot w(q, i). chaque tape, le nombre de chemins
mmoriss est donc born par le nombre dtats du transducteur.
Lalgorithme de calcul des cots et chemins est le suivant. On note
le prdcesseur dun sommet sur un chemin.
Viterbi(automate de sortie du codeur, suite t)
44 M.-P. Bal et N. Sendrier

pour i allant de 0 N et tout tat q faire


w(q, i)
w(0, 0) 0
pour i allant de 1 N faire
pour toute flche (p, a, q) de lautomate faire
si (w(p, i 1) + dH (a, ti ) < w(q, i)) alors
w(q, i) w(p, i 1) + dH (a, ti )
(q, i) = (p, i 1)
return (p, N ) tel que w(p, N ) = minqQ w(q, N ).
Lorsque plusieurs couples (p, N ) minimisent les w(q, N ), on en choisit un
alatoirement. La complexit en temps et espace est donc O(|A| |Q| N ),
o A est lalphabet recod en sortie.
Ce dcodage sappelle aussi dcodage en treillis. La figure 14 illustre le
calcul lorsque ltat de dpart du codeur est ltat 00 et lorsque la suite
dcoder est la suite
acd = 001011.
La suite est donc corrige ici en aad = 000011. Un bit a t corrig.

a c d
0 1 2 3
a a a
00
d w=0 d w=1 d w=3

01
c c w=1
w=2 w=1
b b
11
w=2 w=2

10
w=4 w=2

Figure 14 Lalgorithme de Viterbi

6.2.3 Calcul de la distance libre


Nous allons valuer la performance de ce dcodage. Le principe de lalgo-
rithme de Viterbi repose sur le fait que la recherche dun chemin dtiquette
de sortie la plus proche de la suite code permet de retrouver le chemin utilis
lors du codage, et ainsi la suite qui a t code. Lorsque la suite sest altre
dans le canal, lalgorithme peut conduire un mauvais chemin. On cherche
Codage correcteur convolutif 45

donc calculer le taux derreur rsiduel pour cet algorithme de codage et


dcodage. Plus prcisment, si p est le paramtre derreur du canal binaire
symtrique, on cherche valuer la probabilit pour quun symbole 0 ou 1
de la suite dcode soit faux. Le paramtre adapt pour lapprciation de la
qualit du dcodage de Viterbi sappelle la distance libre.
La distance libre dun automate est la distance (de Hamming) minimale
entre deux mots bi-infinis qui sont tiquettes de deux chemins bi-infinis dis-
tincts. On note la distance libre df .

Proposition 13 La distance libre dun automate est non nulle si et seule-


ment si cet automate est local. Dans ce cas, elle est aussi la plus petite dis-
tance de Hamming entre les tiquettes de deux chemins finis distincts de
mme origine et de mme arrive.
Preuve. Exercice. 

Proposition 14 La sortie du transducteur est un automate local si et seule-


ment si le pgcd des polynmes Gi utiliss dans le codage de convolution est
une puissance de z.
Preuve. Exercice. 
Dans la suite nous considrerons uniquement des codages de convolution
tels que la sortie du transducteur est un automate local, lautre cas corres-
pondant aux codes catastrophiques.
Dans le cas dun code de convolution, on a un codage dit linaire : si T et
T sont deux suites infinies codes alors T + T aussi. En effet, on a T (z) =
G(z)I(z), T (z) = G(z)I (z) et donc T (z) + T (z) = G(z)(I(z) + I (z)).
La distance minimale entre deux suites codes infinies est donc aussi dans
ce cas la distance minimale entre une suite code infinie et la suite nulle
infinie. Cest encore le poids minimal dune suite code infinie non nulle. Ce
poids est le poids minimal de ltiquette non nulle dun chemin de la sortie du
transducteur allant de 0 0. Il sagit donc de la distance libre de lautomate.
La distance libre de lautomate de sortie du transducteur de la figure 13
est df = 5.
La distance libre de lautomate de sortie du transducteur permet dva-
luer le taux derreur rsiduel par bit du dcodage de Viterbi. On peut en effet
montrer que la probabilit pour quun bit quelconque de la suite dcode soit
erron est majore par
df  
X df i
Pdf ,p = p (1 p)df i ,
i
i=m
46 M.-P. Bal et N. Sendrier

d 1 d
avec m = f2 si df est impair et m = 2f si m est pair. On a Pdf ,p Kpdf /2 ,
o K est un constante positive (sur lexemple, on a Pdf ,p 15p2 ). Cette
probabilit est dautant meilleure que df est grand.
Calcul de la distance libre
si la sortie du transducteur nest pas locale, df = 0.
sinon, on modifie lautomate de sortie du codeur de la faon suivante.
On limine pour cela la boucle dtiquette 0 sur ltat 0. On duplique
cet tat en 01 et 02 de telle sorte que les flches qui sortaient de 0
sortent de 01 et les flches qui arrivaient sur 0 arrivent sur 02 . On
calcule par lalgorithme de Dijkstra (voir le cours dalgorithmique) un
plus court chemin allant de ltat 01 ltat 02 . Le cot de ce chemin
est la distance libre du codage.
Le temps de calcul est donc O(|Q| log |Q|).
Sur lexemple, on obtient lautomate modifi sur la figure 15 et un plus
court chemin de cot 5 reprsent sur la figure 16.

02 01
d d

a
10 01
b

c c
11

Figure 15 Automate modifi.


Compression de texte sans perte 47

02 01
2 2

0
10 01
1

1 1
11

Figure 16 Calcul de la distance libre : df = 5.

7 Compression de texte sans perte

La compression dun texte sans perte est un codage de source. Tous les
codages tendent sapprocher de la borne donn par le premier thorme de
Shannon. Il est a noter que tout codage (injectif) ne peut comprimer tous les
textes. En effet supposons quun codage c transforme tout texte de longueur
n sur un alphabet A en un texte de longueur infrieure ou gale n sur ce
mme alphabet, et quil transforme au moins un texte de longueur n en un
texte strictement plus court. Il ralise alors une fonction de An dans An
priv dun mot. Un tel codage ne peut tre injectif.
Nous prsentons trois mthodes de compression de texte sans perte. Ces
trois mthodes admettent diverses variantes.

7.1 Le codage de Huffman statique

Le codage de Huffman a t dcrit dans le cours dalgorithmique. Nous en


rappelons brivement le principe et nous renvoyons au cours dalgorithmique
pour une tude de la complexit et de limplantation.
48 M.-P. Bal et N. Sendrier

7.1.1 Description du codage de Huffman statique


Un code de Huffman est un code prfixe binaire associ une source
discrte sans mmoire (A, p) de cardinal n. On le construit par rcurrence
sur n.
Pour n = 1, le code est form du mot vide.
Pour n = 2, le code est lensemble {0, 1}.
Pour n > 2, soient a1 et a2 deux lettres de A de plus petits poids, o le
poids est donn par la distribution p. Soit B = A {a1 , a2 } + {b}, o b
nappartient pas A. Le nouvel alphabet B est muni de la distribution
p en dfinissant p(b) = p(a1 ) + p(a2 ). Soit C un code de Huffman pour
lalphabet B, de cardinal n 1, associ B par c. On dfinit le code
C associ A par c de la faon suivante. On a

c (a) = c(a) pour a 6= a1 , a2 ,


c (a1 ) = c(b)0
c (a2 ) = c(b)1.

Un code est dit optimal pour une source discrte sans mmoire sil mini-
mise la longueur moyenne du code dune lettre parmi tous les codes possibles
pour cette source. Comme on ne considre pas des blocs sources de taille l
avec l > 1, on dit quil sagit dun codage dordre 0.

Proposition 15 Un code de Huffman pour une source discrte sans m-


moire est optimal parmi tous les codes possibles pour cette source.

7.1.2 Efficacit du codage de Huffman


On considre que le codage est appliqu sur une source sans mmoire A
de cardinal k de distribution de probabilit p.
Lefficacit du codage est

H(A)
E= ,
m
o m est la longueur moyenne dun mot du code. On a
X
H(A) = p(a) log p(a)
aA
X
m = p(a)|c(a)|,
aA
Compression de texte sans perte 49

o |c(a)| est la longueur du mot du code associ la lettre a.


On sait (voir le calcul de H(A) m pour le 1er thorme de Shannon) que
E 1. On sait galement (voir toujours le 1er thorme de Shannon) que
cette efficacit nest gale 1 que si p(a) = 2|c(a)| ce qui nest pas toujours
le cas puisque les probabilits ne sont pas toujours des inverses de puissance
de 2. Le codage de Huffman nest donc pas optimal.

7.2 Codage de Huffman adaptatif


Une variante de la mthode que nous prsentons a donn lieu la com-
mande Unix compact.
Le codage de Huffman dynamique, ou adaptatif, fonctionne en transfor-
mant successivement un arbre correspondant la partie du texte dj trait.
Les arbres construits sont dun type un peu spcial et dits arbre de Huff-
man volutifs. Ce sont, par dfinition, des arbres binaires complets pondrs
par une fonction p dont les valeurs sont des entiers strictement positifs (sauf
ventuellement une qui est nulle) et qui vrifie la condition suivante : les
noeuds peuvent tre ordonns en une suite (x1 , x2 , . . . , x2n1 ), o n est le
nombre de feuilles de telle sorte que :
1. la suite des poids (p(x1 ), p(x2 ), . . . , p(x2n1 )) est croissante.
2. pour tout i, 1 i n, les noeuds x2i1 et x2i sont frres.

7.2.1 La compression
Supposons dj construit larbre de Huffman volutif H(T ) correspon-
dant au texte T et examinons le calcul de larbre H(T a) correspondant
lajout au texte T de la lettre suivante a. Deux cas se prsentent :
1. La lettre a est dj apparue dans le texte T .
La traduction de a est dans ce cas le mot binaire reprsentant le chemin
de la racine la feuille reprsentant a dans H(T ). On augmente dune
unit le poids de la feuille xi correspondant la lettre a. Si la proprit
1 de la dfinition des arbres de Huffman adaptatifs nest plus vrifie,
on change xi avec le noeud xj o j est le plus grand indice tel que
p(xi ) > p(xj ), sauf si xj est le pre de xi . On rpte cette opration avec
le pre de xi jusqu atteindre la racine. Lorsquon change les noeuds,
les sous-arbres enracins en ces noeuds sont galement changs.
2. La lettre a na pas encore t rencontre dans le texte T .
On maintient dans larbre une feuille de poids nul destine accueillir
les nouvelles lettres. On code a par le chemin correspondant cette
50 M.-P. Bal et N. Sendrier

4 5
7 9
a:2 2 a:2 3
5 6 7 8

1 b:1 b:1 2
3 4 5 6

0 r:1 1 r:1
1 2 3 4

0 c:1

1 2
c

Figure 17 Le passage de H(abra) H(abrac)

feuille suivi du code de dpart de la lettre (son code ASCII). Elle est
ensuite remplace par une arbre pondr deux feuilles. La premire
est la nouvelle feuille de poids nul. La seconde, de poids 1, est associe
la lettre a. On rpte les oprations de mise jour de larbre partir
du pre de ces feuilles comme ci-dessus en 1.

7.2.2 La dcompression

Il nest pas ncessaire de transmettre larbre, comme dans le cas du code


de Huffman non volutif, pour pouvoir dcoder. Si une suite binaire w cor-
respondant un texte T a dj t dcode, lalgorithme dispose dun arbre
H(T ). On regarde quelle feuille de H(T ) correspondent les bits suivants
dcoder. On dduit de cette feuille et de ces bits de quelle lettre a il sagit.
On a ainsi dcod la suite correspondant au texte T a et on construit H(T a)
pour continuer le dcodage.
Par exemple, si T = abra, le passage de larbre H(abra) larbre H(abrac)
est reprsent sur la figure 17. On a indique en dessous de chaque sommet
son indice dans la suite xi , ainsi que le chanage des suivants dans cette suite
(en rouge).
Compression de texte sans perte 51

7.3 Codage de Ziv-Lempel


Nous prsentons maintenant la mthode de Lempel et Ziv (LZ78) dont
une variante est utilise dans la commande unix compress.
Elle consiste coder une suite de caractres de la manire suivante : cette
suite est dcoupe en phrases. Chaque phrase est constitue dune phrase
rencontre prcdemment (la plus longue possible) plus un caractre. Les
phrases sont numrotes (dans lordre o elles sont rencontres) et chacune
delle est code par le numro de la phrase prcdente sur laquelle elle est
construite plus le caractre ajouter. La phrase vide a pour numro 0.
Voici un exemple :

texte initial : aaabbabaabaaabab


phrases : a aa b ba baa baaa bab
numro de phrase : 1 2 3 4 5 6 7
texte cod : (0, a) (1, a) (0, b) (3, a) (4, a) (5, a) (4, b)

Les caractres peuvent tre cods par leur code ASCII mais on peut aussi
considrer toutes les variantes o les caractres sont cods sur 1 bit (alphabet
deux lettres), 2 bits (alphabet 4 lettres), 3 bits (alphabet 8 lettres),
etc. , 8 bits (alphabet 256 lettres).
Dautre part, le nombre k de phrases dj rencontres est variable. Aussi
pour conomiser sur la taille du codage des numros de phrases, la phrase
courante est code par un caractre et le numro dune des k phrases dj
rencontres qui est cod sur log k bits.
Ainsi sur lexemple ci-dessus avec lalphabet 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 code de la lettre en gras et en ajoutant des espaces


blancs pour la lisibilit)

00 10 001 110 1000 1010 1001.

Remarquez que sur cet exemple, le codage est une expansion !

7.3.1 La compression
Pour que la compression soit rapide, il faut utiliser une structure de
donne arborescente appele trie . Le problme consiste en effet trouver
rapidement le numro de la plus longue phrase rencontre prcdemment
52 M.-P. Bal et N. Sendrier

qui se retrouve la position courante de lecture dans le fichier. Un trie


rpond cette attente, il permet de stocker toutes les phrases rencontres
prcdemment sous forme darbre.
Chaque phrase correspond un nud de larbre. La phrase 0 qui re-
prsente la suite vide est la racine de larbre. Les fils de chaque nud sont
numrots par une lettre (on dit que cette lettre est ltiquette de larc entre
le pre et le fils). Un nud de larbre correspond la phrase obtenue en
lisant les tiquettes sur les arcs du chemin de la racine au nud. Le numro
de la phrase est stock dans le nud correspondant de larbre. (Un nud
peut avoir autant de fils quil y a de lettres dans lalphabet.)
Le moyen le plus simple de comprendre cela est dexaminer le trie obtenu
aprs la lecture du texte de lexemple vu plus haut (voir la figure 1).

a b

1 3

a a

2 4

a b

5 7

Figure 18 Le trie obtenu aprs 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 mme temps. Chaque fois que le fils du nud o lon
se trouve correspondant la lettre lue existe, on se positionne ce nud. Si
le fils nexiste pas, on le cr et on sarrte l, cest le nud qui correspond
la phrase courante. On a donc lu une phrase de plus et on peut passer la
suivante.
Par exemple, si le texte de la figure 1 se poursuit par babbbaab ,
Compression de texte sans perte 53

on ajoutera la phrase 8 babb comme fils dtiquette b du nud 7 et la


phrase 9 baab comme fils dtiquette b du nud 5.
Pour les gros fichiers, il ne faut pas saturer la mmoire avec un trop gros
trie. Une stratgie consiste recommencer zro quand on a lu un certain
nombre de caractres. Une autre consiste recommencer zro quand le trie
atteint une certaine taille. Cette ventuelle optimisation doit tre prise en
compte lors de la dcompression. Lidal tant de maintenir lespace mmoire
utilis par le programme en dessous dun certain seuil, 1 Mo par exemple.

7.3.2 La dcompression

Lors de la dcompression, on stocke dans un tableau toutes les phrases


dj rencontres pour pouvoir dcoder immdiatement la phrase courante.
La dcompression est trs rapide et ceci est un des points forts de la mthode
de Ziv-Lempel.

7.4 Compression de Burrows-Wheeler

La compression de Burrows-Wheeler utilise une transformation, dite trans-


formation de Burrows-Wheeler (BWT) [5]. Des compresseurs base de cette
mthode sont implments dans les commandes bzip2 (see [13]),szip. Ce
sont les meilleurs compresseurs de texte sans perte actuels.
Lide est de changer la suite de lettres w compresser par une permu-
tation BWT(w) de w de telle sorte que cette permutation soit plus facile
compresser.

7.4.1 La transformation de Burrows-Wheeler (BWT)

7.4.2 Dfinition de la transforme

Soit w = w0 w1 . . . wn1 le mot comprimer. Sa transforme BWT(w)


est obtenue de la faon suivante :
On construit tous les dcalages circulaires du mot w.
On trie ces mots suivant lordre lexicographique et on les crit dans
lordre comme les lignes dans une matrice.
BWT(w) est la dernire colonne de cette matrice.
La sortie de la transformation de Burrows-Wheeler est le mot BWT(w)
et lindice I de la ligne de la matrice qui contient w.
54 M.-P. Bal et N. Sendrier

F L

1 a a b r a c
I 2 a b r a c a
3 a c a a b r
4 b r a c a a
5 c a a b r a
6 r a c a a b
Sur lexemple ci-dessus, BWT(w) est caraab et I = 2 puisque le mot
original apparat en deuxime ligne. On remarque que la premire colonne,
note F , contient la suite des lettres de w dans lordre lexicographique.

7.4.3 Rversibilit de la transformation


La transforme de Burrows-Wheeler est rversible. Connaissant BWT(w)
et I, il est possible de retrouver w. Nous montrons comment retrouver w sur
lexemple ci-dessus. On note L la dernire colonne de la matrice et F la
premire. La proprit fondamentale qui est utilise est la suivante : si Fi
(resp. Li ) designe la ime lettre de F (resp. de L), Fi est le symbole qui suit
Li dans w pour tout i 6= I.

F L

1 a3 a1 b r a2 c
I 2 a1 b r a2 c a3
3 a2 c a3 a1 b r
4 b r a2 c a3 a1
5 c a3 a1 b r a2
6 r a2 c a3 a1 b
Cette proprit permet de retrouver w partir de L et I.
Le dernier symbole de w est LI . Sur lexemple, il sagit dun a.
Ce a se retrouve en colonne F . De quel a sagit-il ? En fait, si ce a est le
premier a apparatre dans L, ce sera aussi le premier a apparatre
dans F . En effet lordre dans lequel les a apparaissent dans F et L est le
mme. Lordre des a dans F est dtermin par lordre lexicographique
du contexte droit de a de taille |w|1 dans ww, ici abrac, braca, caabr.
Or lordre des a dans L est dtermin par lordre lexicographique du
contexte droit du a de taille |w| 1 dans ww galement. Ce contexte
apparat gauche du a sur la mme ligne. Il sagit donc sur lexemple
Compression de texte sans perte 55

du premier a de F (le troisime a de w). La lettre qui prcde est donc


la dernire lettre de ligne 1, cest un c.
Le c apparat comme tant F5 . Donc la lettre qui prcde ce c est L5 ,
soit un a (not a2 ). Cest le troisime a de F , soit F3 . Le lettre de w
qui prcde ce a est L3 = r. Lettre r est en F6 . Donc L6 = b prcde
r. Comme F4 = b, L4 = a prcde ce b dans w. Enfin ce a apparat en
position 2 dans L et le processus sarrte car I = 2.
Le mot obtenu est bien abraca.

7.4.4 Intert de la transformation

Le mot obtenu BWT(w) a la proprit remarquable suivante : pour


chaque facteur x de w, les caractres qui prcdent x dans w sont regroups
dans BWT(w). Pour un facteur x assez grand, ces caractres sont presque
toujours la mme lettre et ainsi le mot BWT(w) est localement homogne,
cest--dire, il consiste en la concatnation de plusieurs facteurs ayant peu
de lettres distinctes. Cest pour cette raison que le mot BWT(w) est ensuite
plus facile compresser.

7.4.5 Le codage complet

Burrows et Wheeler ont suggr de coder ensuite BWT(w) laide du


codage dit Move-To-Front (MTF).
Dans le codage MTF, un symbole a et cod par un entier gal au nombre
de symboles distincts rencontrs depuis la dernire occurrence de a. Le codeur
maintient une liste de symboles ordonns en fonction de la date de leur
dernire apparition. Quand le symbole suivant arrive, le codeur renvoie sa
position dans la liste et le met en tte de liste. Cette opration est galement
rversible.
Une suite sur lalphabet A = {a1 , a2 , . . . , ak } est transforme en une suite
sur lalphabet {0, . . . , k 1}.
Par exemple, si BWT(w) = caraab et si lalphabet a trois lettres a, b, c, r,
on part dune liste dordre arbitraire l = a, b, c, r et les positions de chaque
lettre dans la liste sont comptes partir de 0. Le codage de chaque lettre
56 M.-P. Bal et N. Sendrier

de BWT(w) est donn ci-dessous avec la nouvelle liste des positions.

c 2 l = c, a, b, r
a 1 l = a, c, b, r
r 3 l = r, a, c, b
a 1 l = a, r, c, b
a 0 l = a, r, c, b
b 3 l = a, b, r, c

La suite MTW(BWT(w)) est donc 213103.


Ansi la suite
b = MTF(BWT(w))
w

a la mme taille que la suite w, mais cette suite est trs fortement compres-
sible car elle va contenir beaucoup de petit entiers, principalement des 0 et
des 1. Par exemple, sur un texte en anglais, elle contient 50% de 0.
Pour compresser cette dernire suite, on peut utiliser un compresseur
simple comme Huffman statique, ou encore un codage arithmtique 1 .
Le codeur se rsume donc

w Huffman(MTF(BWT(w))).

Cette transformation est reversible car chacune des trois tapes lest.

7.4.6 Mise en uvre

La compression se fait en dcoupant le texte source en blocs de taille fixe.


La taille dun bloc se situe en pratique entre 100Kb et 900Kb.
Pour un calcul plus rapide de la transforme de Burrows-Wheeler, on
calcule en fait la transforme du mot w$, o $ est un symbole qui nappartient
pas lalphabet et que lon suppose infrieur tous les autres pour lordre
alphabtique.
La transforme de abraca$ est BWT(abraca$) = ac$raab. On renvoie
acraab et lindice I = 3. Le symbole $ est en position I dans ac$raab.

1. non dcrit dans ce cours


Compression de texte sans perte 57

F L

1 $ a b r a c a
2 a $ a b r a c
I 3 a b r a c a $
4 a c a $ a b r
5 b r a c a $ a
6 c a $ a b r a
7 r a c a $ a b
Lintrt de lajout du symbole $ rside dans le fait que les permutations
circulaires de w$ sont donnes par lordre lexicographique des suffixes de w$.
Or il existe plusieurs structures, toutes calculables en temps linaire, pour
reprsenter les suffixes dun mot dans lordre lexicographique, lautomate
dterministe des suffixes, lautomate compact des suffixes, le trie compact
des suffixes. On peut aussi calculer une table des suffixes en temps O(n) si
n = |w| lorsque la taille de laphabebet nest pas trop importante. Cest le
cas pour lorsque lalphabet correspond au code ASCII par exemple. Cette
dernire structure (la table des suffixes) est la moins coteuse en place.
Les suffixes non vides de w = abraca$ dans lordre lexicographique sont

$
a$
abraca$
aca$
braca$
ca$
raca$

Si le mot est indic partir de 0 :

0 1 2 3 4 5 6
,
a b r a c a $

la table des suffixes est un tableau A tel que A[i] est lindice dans w$ du
dbut du ime suffixe non vide pour lordre lexicographique.

A= 6 5 0 3 1 4 2 .

On peut calculer immdiatement BWT(w$) partir de w et de la table


A des suffixes de w$. En effet, la ime lettre du mot cod est la lettre qui
58 M.-P. Bal et N. Sendrier

prcde le ime suffixe non vide dans w$, cest--dire la lettre en position
A[i] 1, o $ si A[i] = 0.
Pour calculer la table de suffixes, nous renvoyons [6] (voir aussi [7]),
o est prsent lalgorithme linaire de calcul de la table des suffixes d
Krkkinen et Sanders [9].
Codage de canal contraint 59

8 Codage de canal contraint


8.1 Canal contraint
Un canal contraint est un ensemble de suites de symboles caractris par
des contraintes sur ces suites. Ces contraintes sont en gnral lautorisation
ou linterdiction de blocs particuliers (contraintes de spectre).
On appelle canal sofique ou canal rgulier un canal dfini comme len-
semble des suites tiquettes dun chemin dun automate fini. On notera par S
lensemble de suites bi-infinies tiquettes de chemins bi-infinis de lautomate.
Tous les tats sont alors initiaux et terminaux dans cet automate.
Exemple : Le canal de la partie droite de la figure 19 est appel canal du
nombre dor. Il reprsente les suites qui ont un nombre pair de 0 entre deux
1. Le canal de la partie gauche est dit canal sans contrainte. Il reprsente
toutes les suites sur lalphabet {0, 1}.

1
0
0 1 1 1 2
0

Figure 19 Canaux sofiques

On appelle canal de type fini lensemble des suites qui ne comportent


pas de blocs appartenant une liste finie de blocs interdits. Considrons par
exemple la liste de blocs interdits I = {11}, les suites bi-infinies autorises
sont celles qui sont reconnues par lautomate de la figure 20.

1
1 1 2
0

Figure 20 Canal de type fini

Un exemple trs courant de contraintes rencontres est celui des contraintes


dites [d, k]. Les suites qui satisfont cette contrainte doivent comporter un mi-
nimum de d symboles 0 entre deux symboles 1 et un maximum de k symboles
0 conscutifs. Ces contraintes sont de type fini. En effet un ensemble fini pos-
60 M.-P. Bal et N. Sendrier

sible de blocs interdits pour la contrainte [d, k] est


11
101
1001
..
.
d1
z }| {
1001
k+1
z }| {
00 . . . 00
Le canal [2, 7] est reprsent sur la figure 21. Cette contrainte modlise
le canal du disque IBM 3380. Les CD audio utilise un canal [2, 10].
0 0 0 0 0 0 0
0 1 2 3 4 5 6 7

Figure 21 La contrainte [2, 7].

La proposition suivante indique que les systmes de type fini sont ceux
qui peuvent tre reconnu par un automate local.

Proposition 16 Un systme de type fini peut tre reconnu par un automate


local. Inversement un systme qui est reconnu par un automate local est de
type fini.
Preuve. Exercice. 
Le canal du nombre dor par exemple nest pas de type fini. On ne peut pas
le caractriser par une liste finie de blocs interdits.

8.2 Capacit dun canal


La notion de capacit que nous allons utiliser dans les codages pour
canaux contraints est la suivante. tant donn un canal S, sa capacit est
dfinie par
1
cap(S) = lim sup log2 card Bn ,
n n
o Bn est lensemble des blocs finis (ou facteurs) pouvant apparatre dans
une suite (bi-infinie) du canal.
Codage de canal contraint 61

Nous allons considrer des canaux sofiques irrductibles, cest--dire qui


peuvent tre reconnu par un automate fini dterministe de graphe fortement
connexe.

Proposition 17 Pour tous les entiers positifs n, m,

card Bn+m card Bn card Bm .

Preuve. Laiss en exercice. 

Pour ces canaux, on peut dduire de la proposition 17 que la limite


suprieure ci-dessus est une limite simple et on peut calculer facilement la
capacit du canal avec le thorme suivant dont on admettra la preuve.
Si G est un graphe, sa matrice dadjacence est une matrice carre telle
que le coefficient dindice p, q est le nombre de flches de p vers q.

Proposition 18 Soit S un canal sofique reconnu par un automate dtermi-


niste. La capacit de S est gale au logarithme en base deux de la plus grande
valeur propre de la matrice dadjacence du graphe de lautomate.

Exemple : Considrons le canal S sans contrainte sur lalphabet {0, 1}. On


a card Bn = 2n , donc cap(S) = log2 2 = 1.
Exemple : Considrons le canal du nombre dor S de la figure 19. On peut
dmontrer que les matrices coefficients positifs ont une valeur propre relle
suprieure ou gale au module de chacune des autres valeurs propres (tho-
rme de Perron-Frobnius). On la nomme rayon spectral. La capacit de S
est alors log , o est le rayon spectral de la matrice
 
1 1
M= .
1 0

Le polynme caractristique de M est X 2 X 1. Donc = 1+2 5 .
tant donns un systme sofique S reconnu par un automate A = (Q, F )
sur lalphabet A, o Q est lensemble des tats et F lensemble des flches, et
un entier positif r, on note S r le systme sofique reconnu par lautomate Ar =
(Q, F ) sur lalphabet Ar , tel quil existe une flche de p q dtiquette u
dans Ar si et seulement sil existe un chemin de p q dtiquette u dans A.

Proposition 19 Si S est un systme sofique et r un entier positif, on a

cap(S r ) = r cap(S).
62 M.-P. Bal et N. Sendrier

Le rsultat est galement vrai si S nest pas sofique.


Preuve. Si M est la matrice dadjacence de A, M r est la matrice dadjacence
Ar . Si est la plus grande valeur propre de M , alors r est la plus grande
valeur propre de M r , do le rsultat. 

8.3 Codage
Le codage pour canaux contraints consiste transformer une suite sans
contraintes en une suite qui satisfait une contrainte.
On a le rsultat de codage pour canaux contraints suivant.

Thorme 20 Soit S un canal de type fini irrductible de capacit stricte-


ment suprieure log2 k, o k est un entier positif. Il existe un transducteur
dont lentre est un automate dterministe complet reconnaissant une source
sans contrainte sur un alphabet k lettres et dont la sortie est un automate
local reconnaissant un systme de type fini inclus dans S.
Pour coder une source sur k symboles dans ce canal, on utilise le trans-
ducteur comme dans un codage de Viterbi. Pour dcoder, on utilise un dco-
dage fentre glissante. Le dcodage ne permet pas de corriger des erreurs
ventuelles mais vite la propagation des erreurs linfini.
Prenons lexemple le canal S de la contrainte [2, 7], sa capacit est stric-
tement plus petite que 1 mais est plus grande que 1/2. On ne peut donc pas
coder une source binaire avec un taux de transmission 1 : 1 dans le canal S.
Comme la capacit de S 2 est strictement suprieure 1, on va pouvoir coder
une source binaire sans contrainte dans le canal S 2 avec un taux de transmis-
sion 1 : 1, ce qui revient coder une source sans contrainte dans le canal S
avec un taux de transmission constant gal 1 : 2. Lorsquun tel systme de
codage est utilis pour stocker des donnes sur un support, la capacit de
stockage est donc rduite de moiti.
La canal S 2 est reprsent sur la figure 22 avec a = 00, b = 01, c = 10.
Le codeur utilis dans le disque IBM pour la contrainte [2, 7] est le sui-
vant. La figure 24 reprsente le dcodeur que lon peut implmenter avec une
fentre glissante de longueur 4 seulement.
Nous allons illustrer la construction sur un exemple plus simple. Soit S
le canal reconnu par lautomate A de la figure 25.
Sa capacit est suprieure 1. Pour construire le codeur, on choisit un
tat, par exemple ltat 1 et on slectionne des chemins de premier retour
sur ltat 1 tels que lensemble de leurs tiquettes est un code fini C dont la
distribution de longueur satisfait lgalit de Kraft pour lentier k = 2. On
construit un code prfixe P sur un alphabet deux lettres {0, 1} de mme
Codage de canal contraint 63

a a a a a a

0 1 2 3 4 5 6 7

Figure 22 La contrainte [2, 7] au carr.

5
0|a 0|c
0|a
0|b

1| b 0|a 1| a
1 2 3 4
1| c

0|c 1| a
1| a
6 1| a

Figure 23 Le codage de Franaszek.

a c a

Figure 24 Le dcodage fentre glissante de longueur 4.


64 M.-P. Bal et N. Sendrier

1
a b

c a
2 3
b

Figure 25 Canal de type fini S

distribution de longueur. On associe bijectivement un mot de C un mot de


P de mme longueur. On forme ainsi des couples (p, c), o p P et c C.
Le code C est un code circulaire fini (voir la feuille de travaux dirigs
numro 2). Son automate en ptales est dans ce cas un automate local.
On construit alors lautomate en ptales de ces couples de mots. On
obtient un transducteur qui nest pas dterministe mais qui est dterministe
avec un certain dlai fini. La sortie du transducteur est un automate local.
Sur lexemple, on peut prendre

C P
a 0
ba 10
ca 11

Le transducteur obtenu est donn sur la figure 26.


On peut ensuite transformer ce transducteur pour avoir un transduc-
teur qui a les mmes proprits et est dterministe en entre. On obtient le
transducteur de la figure 27.
Dans le codage de Franaszek pour la contrainte [2, 7], les codes utiliss
sont les codes ci-dessous. Le code C reprsente des mots pouvant tre lus
en partant de ltat 2 ou de ltat 3 dans lautomate de la figure 22, et en
Codage de canal contraint 65

0|a

1
1|a 1|b

1|c 0|a
2 3

Figure 26 Codeur pour le canal S.

1|a

0|a 1 2

0|b

1|c

Figure 27 Codeur dterministe pour le canal S.


66 M.-P. Bal

arrivant sur lun de ces deux tats. Ce code est encore un code circulaire.
C P
ba 10
ca 11
aba 000
cba 010
aca 011
acba 0010
aaca 0011

Codes de Franaszek.

Bibliographie
[1] R. B. Ash, Information Theory, Dover Publications, Inc, New-York,
1990.
[2] G. Battail, Thorie de lInformation. Application aux techniques de
comunication, Masson, 1997.
[3] M.-P. Bal, Codage Symbolique, Masson, 1993.
[4] R. E. Blahut, Digital Transmission of Information, Addison Wesley,
1990.
[5] M. Burrows and D. J. Wheeler, A block sorting lossless data com-
pression algorithm, Tech. Rep. 124, Digital Equipment Corporation,
Paolo Alto, California, 1994.
[6] M. Crochemore, C. Hancart, and T. Lecroq, Algorithms on
strings, Cambridge University Press, Cambridge, 2007. Translated from
the 2001 French original.
[7] M. Crochemore, C. Hancart, and Th. Lecroq, Algorithmique du
Texte, Vuibert, Paris, 2001.
[8] S. Eilenberg, Automata, Languages and Machines, vol. A, Academic
Press, 1974.
[9] J. Krkkinen and P. Sanders, Simple linear work suffix array
construction, in ICALP, 2003, pp. 943955.
[10] D. A. Lind and B. H. Marcus, An Introduction to Symbolic Dyna-
mics and Coding, Cambridge, 1995.
[11] F. M. Reza, An Introduction to Information Theory, Dover Publica-
tions, Inc, New-York, 1994.
Bibliographie 67

[12] N. Sendrier, Thorie de lInformation. communication personnelle.


[13] J. Seward, The BZIP2 home page. http ://www.bzip.org, 1997.