Anda di halaman 1dari 28

Codage entropique longueur variable

Olivier RIOUL
ENST/COMELEC
rioul@comelec.enst.fr
1 Description dun systme de codage lon-
gueur variable
On se donne une source discrte (donnes, chier, . . . ) dont chaque sym-
bole x prend une parmi M valeurs possibles x
1
, x
2
, . . . , x
M
. On appelle cela
une source M-aire X.
Une distribution de probabilit p(x) caractrise les statistiques de cette
source, on la suppose connue (ou estime) sous la forme p
1
, p
2
, . . . , p
M
, o
p
i
est la probabilit doccurrence du symbole x
i
.
Le schma de codage est illustr par la gure suivante :
Source X
-
Codeur
-
Code
C
-
Dcodeur
-
X
Le codeur code chaque symbole de source x
i
par un mot de code c
i
.
Le code est, par dnition, lensemble des mots de codes ( = c
1
, . . . , c
M
.
Un code longueur variable (VLC : Variable-Length Code) est tel
que les dirents mots de code nont pas ncessairement la mme longueur,
en bits. On note l
i
la longueur en bits du mot de code c
i
. La distribution
des longueurs du code est donc l
1
, l
2
, . . . , l
M
.
Voici un exemple de code VLC pour M = 4 :
x
i
p
i
l
i
c
i
0 1/2 1 0
1 1/4 2 10
2 1/8 3 110
3 1/8 3 111
1
Le dcodeur reconstruit les symboles de source partir de la squence
binaire des mots de codes. Le taux de codage (coding rate) R est le
nombre moyen de bits cods par symbole de source, cest dire
R =
M

i=1
p
i
l
i
.
On peut interprter, si on veut, R comme une moyenne de la longueur L
dun mot de code (selon la loi de probabilit de X) :
R = E(L).
Pour lexemple ci-dessus, on a
R =
1
2
+
2
4
+
3
8
+
3
8
= 1.75 bits/symbole.
Quoi quil en soit, un code est donc dautant plus ecace en compression
que R est petit. Trouver le meilleur code, optimiser le systme, cest
donc dterminer le (ou les) code(s) qui rendent R minimal pour une source
donne, et donc pour une distribution de probabilit p
1
, p
2
, . . . , p
M
xe.
Noter que les performances des codes ne dpendent que des distributions de
longueurs.
2 Codes uniquement dcodables
Le but du codage de source sans pertes est de comprimer les donnes
de telle faon que lon puisse reconstruire parfaitement (sans pertes, sans
erreur) la source au destinaaire.
Pour cela, il faut que le dcodage ait lieu sans ambigut, cest dire
quune squence code donne doit tre interprtable de faon unique comme
une succession (concatnation) de mots de codes dtermins. Un code per-
mettant un tel dcodage (sans ambigut) est quali duniquement dco-
dable (u.d.).
Formellement, cela signie que si on a deux squences de mots de code
concatns identiques :
c
1
c
2
c
k
= c

1
c

2
c

l
o les c
i
et c

j
appartiennent au code (, alors les mots de code sont un un
identiques :
k = l et c
i
= c

i
, i = 1, . . . , k.
Voici quatre exemples de codes : lesquels sont u.d. ?
2
x
i
code 1 code 2 code 3 code 4
0 0 0 10 0
1 0 10 00 10
2 1 100 11 110
3 1 101 110 111
Le premier code est trs performant (R = 1 !) mais videmment inutili-
sable, car ambigu : pour tre u.d., le code doit tre inversible , cest dire
que les mots de code doivent tre distincts. Ceci montre quil y a forcment
une limite infrieure sur le taux R : dans cet exemple, la valeur R = 1 nest
pas atteignable.
Le deuxime code est bien inversible mais pas u.d. : par exemple, la
squence code C = 101010 . . . peut se dcoder X = 130 . . . ou X = 301 . . ..
Un tel code est donc galement inutilisable.
Le troisime code est plus intressant : malgr les apparences, il est u.d. !
En eet, on peut imaginer un dcodeur qui examine la parit du nombre
de zros qui suit la premire squence 11 ; ce nest quaprs avoir re-lu
un 1 quil peut correctement dcouper la squence code et fournir les
symboles de source. Cet exemple montre que certains codes u.d. peuvent
ncessiter une implantation complexe du dcodeur, qui doit lire la squence
code binaire susamment loin lavance pour dcoder un symbole de source.
3 Codes instantans et condition du prxe
Le quatrime code donn ci-dessus est, par contre, trs simple dcoder ;
De tels codes sont appels codes instantans, car le dcodeur na besoin de
lire que les l
i
premiers bits dune squence code pour pouvoir linterprter
instantanment et de manire unique comme tant le mot de code c
i
,
reprsentant le symbole x
i
.
Un code instantan est caractris par la condition du pr-
xe : Aucun mot de code nest le prxe dun autre mot de code
(cest dire aucun c
i
ne dbute un c
j
, j ,= i).
Preuve: Il est facile de dmontrer que la condition du prxe caractrise bien
un code instantan : cette condition est dabord clairement susante, sinon
un c
i
dbuterait un autre c
j
et il y aurait ambigut lorsque le dcodeur lit
c
i
, de sorte quil ne pourrait pas conclure instantanment. Rciproquement,
avec la condition du prxe le dcodage est clairement instantan, car ds
quun mot de code c
i
est lu, il peut tre dcod sans ambigut.
Un code instantan est aussi appel code prxe (prex code) dans
la littrature. Pour rsumer le vocabulaire vu jusquici on a les ensembles
3
embots suivants :
codes VLC codes inversibles codes u.d. codes instantans.
4 Ingalit de Kraft-McMillan
Pour trouver le meilleur code pour une source donne, il faut minimiser le
taux R sous la contrainte que le code soit u.d. An de raliser cette optimi-
sation, on caractrise dabord le fait quun code soit u.d. sur la distribution
des longueurs :
[McMillan, 1956] Tout code u.d. vrie lingalit :
M

i=1
2
l
i
1
appele ingalit de Kraft-McMillan.
Preuve: Pour un code u.d., toute squence de l bits peut se dcomposer
dau plus une faon comme concatnation de mots de codes c
i
1
c
i
2
c
i
k
o
l
i
1
+l
i
2
+ +l
i
k
= l. Cela vient directement de la dnition dun code u.d.
Le nombre total N
l
(k) de concatnations possibles de k mots de codes
donnant une squence code de longueur totale l bits ne peut donc pas d-
passer le nombre total de squences de l bits, qui est 2
l
. (Sinon, il y aurait
forcment ambigut.) On a donc lingalit : N
l
(k) 2
l
.
Mais par ailleurs, si on dveloppe la puissance kime (produit de k fac-
teurs identiques)
(
M

i=1
x
l
i
)
k
=

i
1
,i
2
,...,i
k
x
l
i
1
+l
i
2
++l
i
k
et si on regroupe les termes de mme puissance l = l
i
1
+ l
i
2
+ + l
i
k
on
trouve prcisment N
l
(k) puissances x
l
pour chaque l. Ainsi :
(
M

i=1
x
l
i
)
k
=

l
N
l
(k)x
l
La somme au second membre va de l = kl
min
l = kl
max
o l
min
et l
max
dsignent les longueurs minimale et maximale dun mot de code.
On conclut facilement en faisant x = 1/2 et k : on voit par exemple
que
M

i=1
2
l
i

k(l
max
l
min
) + 1 1
quand k .
4
5 Algorithme de Kraft
Pour linstant lingalit de Kraft-McMillan nest quune condition nces-
saire pour quun code soit u.d. Mais il y a une rciproque :
[Kraft, 1949] Si lingalit de Kraft-McMillan est vrie,
alors il existe un code u.d., et mme instantan, qui admette
l
1
, l
2
, . . . , l
M
comme distribution de longueurs.
Voici une preuve dont lintrt est de fournir un algorithme simple qui
donne un code instantan c
1
, . . . , c
M
partir dune distribution de lon-
gueurs l
1
, l
2
, . . . , l
M
vriant lingalit de Kraft-McMillan. (Il y a dautres
preuves classiques, quon trouve dans la littrature, qui utilisent la notion
darbre binaire.)
Preuve: On se donne une distribution de longueurs l
1
l
2
. . . l
M
vriant lingalit de Kraft-McMillan
1
. A chaque mot de code c
i
( trouver)
on associe le nombre c
i
= 0, c
i
[0, 1[ dont les dcimales de lcriture en base
2 est forme des bits de c
i
. On note I
i
lintervalle I
i
= [ c
i
; c
i
+ 2
l
i
[.
Par exemple, c
i
= 010 donne c
i
= 0, 010 =
1
4
. et I
i
= [0, 010; 0, 011[= [
1
4
;
3
8
[
est lensemble des nombres de [0; 1[ dont les dcimales en base 2 commencent
par c
i
.
Clairement, c
i
dtermine lintervalle I
i
, et rciproquement : il sut de
tronquer le dveloppement binaire de la limite gauche de lintervalle (de lon-
gueur L
i
) log
2
1
L
i
bits pour retrouver c
i
.
On peut alors traduire le fait quun code soit instantan sur les intervalles :
Aucun c
i
ne dbute un c
j
si et seulement si c
j
, I
i
. Autrement dit le code
est instantan si et seulement si les I
i
sont des intervalles disjoints.
Lingalit de Kraft-McMillan revient prcisment dire que la somme
des longueurs des I
i
est 1. Sils sont disjoints, on peut donc les mettre
bout--bout en restant dans le segment [0, 1[.
On en dduit facilement un algorithme de construction du code
instantan : On met bout--bout les intervalles I
i
, classs par longueurs
dcroissantes (l
i
croissantes) dans le segment [0, 1[ en partant de la gauche :
-
0.0
I
1
0.10
I
2
0.110
I
3
0.111

1
On peut toujours se ramener un tel ordre croissant, quitte permuter les symboles
dans lalphabet de la source.
5
On commence donc par c
1
= 0.0 . . . 0, et on pose c
i+1
= extrmit droite
de I
i
chaque tape. Cela revient, pour chaque tape, calculer c
i
+ 1
(addition binaire) puis complter avec des zros si ncessaire pour obtenir
c
i+1
de longueur l
i+1
l
i
. Comme les intervalles sont disjoints, le code est
bien instantan.
Un exemple vaut mieux quun grand discours :
l
i
code
1 0
2 10
3 110
5 11100
5 11101
5 11110
6 111110
6 111111
Noter quavec cet algorithme on dtecte automatiquement si si les l
i
ne
vrient pas lingalit de Kraft-McMillan : on dpasse alors lextrmit
droite du segment [0, 1[, et on ne peut plus continuer. Par exemple :
l
i
code
1 0
2 10
3 110
4 1110
5 11110
5 11111
6 Erreur
1
2
+
1
4
+
1
8
+
1
16
+
1
32
+
1
32
+
1
64
> 1
Une consquence importante de la caractrisation par lingalit de Kraft-
McMillan est que tout code u.d. peut tre remplac par un code instantan
de mme distribution de longueurs et donc de mme taux. On peut donc
limiter la recherche du meilleur code lensemble des codes instan-
tans. Cest un soulagement : du coup, on pourra toujours choisir un code
optimal pour lequel le dcodage est instantan, donc trs simple implanter.
6
6 Recherche du code Optimal
Daprs ce qui prcde, pour trouver le meilleur code pour une source
donne, il sut de minimiser le taux R sur la distribution de longueurs
uniquement, avec la contrainte donne par lingalit de Kraft-McMillan :
minR =

i
p
i
l
i
[

i
2
l
i
1
On reconnait un problme classique qui se rsout par la mthode des multi-
plicateurs de Lagrange.
Appliquons (brutalement) la mthode du Lagrangien; celui-ci scrit
L =

i
p
i
l
i

i
2
l
i
o est le multiplicateur de Lagrange. On doit annuler les drives
L
l
i
= p
i

2
l
i
= 0
o

est toujours constant (indpendant de i). Ainsi loptimum est at-


teint lorsque les p
i
et 2
l
i
sont proportionnels, pour une contrainte sature

i
2
l
i
= 1. La constante de proportionnalit vaut forcment

= 1 ; on
trouve donc que R est minimis lorsque
l
i
= log
2
1
p
i
,
auquel cas on dcouvre avec stupfaction que le taux minimal est lentropie
de la source :
H =
M

i=1
p
i
log
2
1
p
i
Seulement voil, ctait trop beau : ce quon vient de faire est faux,
puisque ce rsultat ne donne pas, en gnral, des longueurs l
i
entires ! Il
fallait tenir compte de cette contrainte supplmentaire, et la mthode du
Lagrangien tait donc inadapte.
7 Codes de Fano-Shannon
On peut quand mme exploiter ce quon vient de faire ; dabord, lentropie
est atteinte dans le cas exceptionnel o les p
i
sont des puissances ngatives
de 2 (car alors l
i
= log
2
1
p
i
est bien entier). Par exemple, le code
7
p
i
l
i
c
i
1/2 1 0
1/4 2 10
1/8 3 110
1/8 3 111
est optimalement optimal , puisquici R = H. En gnral, un code, mme
optimal, natteint pas lentropie cause de la contrainte supplmentaire des
longueurs entires ; son taux est forcment plus grand. Cela montre que le
taux dun code u.d. est toujours limit infrieurement par lentropie :
R H .
On comprend maintenant pourquoi la technique du codage sans pertes est
aussi appele codage entropique : on cherche sapprocher lentropie qui
reprsente une borne infrieure sur le taux.
Sans chercher optimiser rigoureusement, peut-on trouver des codes dont
les taux ne soient pas trop loigns de lentropie ? Il faut pour cela obtenir
les longueurs entires ; une faon de faire est de prendre
2
l
i
= log
2
1
p
i
|
On vrie immdiatement quavec ce choix, lingalit de Kraft-McMillan
est vrie (puisque quon a pris soin darrondir vers le haut, de sorte que
2
l
i
p
i
).
On obtient la famille des codes de Fano-Shannon (1948) (qui vrient
bien lingalit de Kraft-McMillan) et pour lesquels on trouve
H R H + 1.
Preuve: Il sut de prouver la deuxime ingalit :
R =

i
p
i
log
2
1
p
i
|

i
p
i

log
2
1
p
i
+ 1

= H +

i
p
i
= H + 1.
do lencadrement annonc.
On est donc au pire un bit prs de lentropie. On verra ci-dessous quon
ne peut pas amliorer cette distance lentropie pour des codes scalaires .
En fait, on a prsent ici ces codes de Fano-Shannon que par souci pda-
gogique ; leur intrt est surtout historique, depuis que Human a propos
un algorithme pour trouver les codes VLC optimaux, qui fait lobjet de la
section suivante.
2
x| dsigne le plus petit entier x. On a x x| x + 1.
8
8 Codes de Human
Comme on sen doute par leur dnition, on constate en pratique que les
codes de Fano-Shannon sont rarement optimaux. Pour trouver les meilleurs
codes il faut se rsoudre rsoudre (sic) compltement le problme de la
minimisation de R, en tenant compte du fait que les longueurs l
i
doivent tre
entires.
Une rsolution complte du problme de recherche du meilleur code est
donne par algorithme itratif sur M appel algorithme de Human
(1952). On obtient alors un code de Human dont le taux R est minimal
pour une source donne (par les p
i
).
Comprendre cet algorithme demande un peu de travail. Dabord quelques
prliminaires.
8.1 Prliminaires
Considrons un code VLC optimal pour une source de distribution de
probabilit
3
p
1
p
2
p
M
. Que peut-on en dire a priori sur ce code ?
Dabord, on aura ncessairement un ordre croissant de longueurs :
l
1
l
2
l
M
Preuve: En eet, si ce nest pas le cas, disons p
i
> p
j
et l
i
> l
j
, on a
p
i
l
i
+ p
j
l
j
> p
i
l
j
+ p
j
l
i
et on trouverait un meilleur code en changeant c
i
et
c
j
.
Ainsi les symboles de source les plus probables doivent tre cods par
les mots de code les plus courts ; cest intuitivement vident, ce principe est
connu depuis Morse
4
.
Autre chose intuitivement vidente (dj utilise ci-dessus) :
Lingalit de Kraft McMillan est ncessairement une galit
pour un code optimal.
Preuve: Sinon, on aurait

i
2
l
i
< 1.
Mais cette somme est un multiple entier de 2
l
M
car l
M
est la plus grande
longueur. On a donc K2
l
M
< 1, K < 2
l
M
, donc K 2
l
M
1 puisque K est
3
On peut toujours se ramener un tel ordre dcroissant, quitte permuter les symboles
dans lalphabet de la source.
4
Le code Morse, vous connaissez ? : la lettre la plus courante (le e )
est code par le mot le plus court ( )).
9
entier. Autrement dit

i
2
l
i
1 2
l
M
.
En consquence, si on remplace l
M
par l
M
1, lingalit de Kraft-McMillan
reste satisfaite. Ainsi on trouverait de cette faon un code u.d. meilleur.
On dduit du raisonnement de la question prcdente qu loptimum,
K est un entier pair, donc
l
M1
= l
M
.
Avec lalgorithme de Kraft ci-dessus, on saperoit donc quon peut toujours
se ramener au cas o les deux mots de codes c
M1
et c
M
ne dirent que par
le dernier bit.
8.2 Rduction de Human
Le principe de cette rduction est le suivant : On considre une source
M-aire de distribution de probabilit (par ordre dcroissant)
p
1
p
2
p
M
.
La rduction de Human consiste considrer la source (M 1)-aire,
dite rduite , de distribution de probabilit
p
1
, p
2
, , p
M2
, p

M1
= p
M1
+ p
M
.
Autrement dit, on combine les deux symboles les moins probables. Noter
quaprs cette opration, la dernire probabilit p

M1
nest plus forcment
sa place dans lordre dcroissant.
Notons (
M
= c
1
, . . . , c
M1
, c
M
le code optimal cherch ( lordre
M ). Daprs ci-dessus, on peut supposer que c
M1
et c
M
ne dirent que
par le dernier bit ; crivons donc c
M1
= [c

M1
0] et c
M
= [c

M1
1]. En termes
de longueurs cela donne l
M
= l
M1
= l

M1
+ 1.
En comparant les taux de codage de la source initiale et de la source
rduite aprs rduction de Human, on peut montrer que :
Le code (
M1
= c
1
, . . . , c
M2
, c

M1
est optimal pour la
source rduite.
10
Preuve: En eet, son taux est
R
M1
=

M2

i=1
p
i
l
i

+ p

M1
l

M1
=

M2

i=1
p
i
l
i

+ (p
M1
+ p
M
)(l
{M1 ou M}
1)
= R
M
(p
M1
+ p
M
)
o R
M
est le taux du code optimal (
M
. Le terme p
M1
+ p
M
est constant
(on optimise pour une source donne !), donc R
M1
est bien minimal puisque
R
M
lest.
La rduction de Human permet donc de rduire le problme de la re-
cherche du code optimal lordre M celui lordre M 1. En continuant
ainsi, par rductions de Human successives, on arrive M = 2 ; mais pour
M = 2, le code {0,1} est (trivialement) optimal (pour toute source binaire).
Attention tout de mme : pour appliquer les rductions de Human suc-
cessives, il faut prendre soin de rordonner chaque tape les probabili-
ts aprs chaque rduction de Human, car chaque rduction ncessite de
connaitre les deux symboles les moins probables.
8.3 Remonter le tout
Il reste remonter litration pour construire de proche en proche des
codes optimaux de plus en plus grands. Il sut, chaque tape, de construire
le code optimal c
1
, . . . , c
M1
, c
M
partir de c
1
, . . . , c
M2
, c

M1
. Cest
facile, car daprs ci-dessus, on doit simplement poser :
c
M1
= [c

M1
0] et c
M
= [c

M1
1].
Bien entendu, chaque tape, il faut prendre en compte les rarrangements
des probabilits qui ont t faits lors de la descente par rductions successives.
8.4 Exemple
Descente. La colonne de gauche donne la distribution de probabilit
initiale (M = 8). Chaque rduction cre une nouvelle colonne droite (aprs
rarrangement par ordre dcroissant) :
11
0.25 0.25 0.25 0.25 0.3 0.45 0.55
0.25 0.25 0.25 0.25 0.25 0.3 0.45
0.2 0.2 0.2 0.2 0.25 0.25
0.14 0.14 0.14 0.16 0.2
0.1 0.1 0.1 0.14
0.04 0.04 0.06
0.01 0.02
0.01
Remonte. De la droite vers la gauche, on construit de proche en proche
le code optimal en tenant compte des permutations faites (on peut utiliser le
mme tableau si on le fait la main) :
01 01 01 01 00 1 0
10 10 10 10 01 00 1
11 11 11 11 10 01
001 001 001 000 11
0000 0000 0000 001
00010 00010 0001
000110 00011
000111
Le taux de codage obtenu est R = 2, 54 comparer avec lentropie H =
2.51231997733309 . . .. On est prs d1% de lentropie, ce qui arrive souvent
lorsque la source nest pas trop dissymtrique.
Noter quon pourrait tout aussi bien travailler sur les longueurs des mots
de code plutot que sur ces mots de code eux-mmes, et terminer par lalgo-
rithme de Kraft qui donne le code :
00 2 2 2 2 2 1 1
01 2 2 2 2 2 2 1
10 2 2 2 2 2 2
110 3 3 3 3 2
1110 4 4 4 3
11110 5 5 4
111110 6 5
111111 6
Bien sr on obtient un autre code, et pourrait dailleurs trouver dautres
variantes (par exemple en changeant c
M1
et c
M
certaines tapes (ou
toutes), en changeant 0 et 1 sur une ou plusieurs colonne(s) de la liste des
12
mots de code obtenus. . . , ou encore en permutant des mots de code de mme
longueur).
Par contre, dans cet exemple, la distribution de longueurs optimale est
unique. Ce nest pas toujours le cas, dailleurs ; ds quil y a deux ex-aequo
dans une tape de r-arrangement des probabilits, il vient un certain ar-
bitraire dans lordre des probabilits dans la phase descendante, qui peut
conduire a plusieurs possibilits pour la distribution de longueurs optimale
obtenue la n. Exercice : le vrier sur des exemples. . .
9 Ncessit dun codage vectoriel
On a vu que le taux de codage dun code de Fano-Shannon, et donc a
fortiori du meilleur code (de Human) vrie lingalit H R H + 1.
Mais peut-on amliorer cet encadrement ? Autrement dit, peut-on trouver
une famille de codes pour lesquels, quelque soit la distribution de probabilit
de la source, le taux ne sloigne pas de lentropie plus quune quantit < 1 ?
La rponse est non, comme le montre lexemple suivant dun source binaire
(M = 2) :
x
i
p
i
l
i
c
i
1 1 1
0 1 1 0
Ce code (qui consiste ne pas coder du tout) est optimal : on ne peut
videmment pas faire mieux (pas de longueur nulle pour une code u.d. !) :
R = 1. Mais lentropie vaut
5
H = H
2
() = log
2
1

+ (1 ) log
2
1
1
0 quand 0.
Ainsi il y a des sources pour lesquelles le taux optimal R approche H + 1
daussi prs quon veut.
Cet exemple dune source binaire dentropie faible est caractristique : on
ne peut pas en gnral bien coder (en fait on ne peut pas comprimer du
tout) ce type de source cause de la limitation impose ds le dpart dans
notre prsentation des codes VLC : savoir quon code la source symbole
par symbole (cest du codage scalaire ).
Il est donc ncessaire, dans de pareils cas, de passer en codage vectoriel,
cest dire de prendre en compte, lors du codage, plusieurs symboles suc-
cessifs en meme temps. En tout tat de cause, une telle approche prend en
5
Quand est trs petit (devant 1), on dit que la source X est dissymtrique. H
2
()
est la fonction dentropie binaire, faible pour une source dissymtrique.
13
compte les corrlations ventuelles des symboles de source l o le codage
scalaire est impuissant le faire ; le codage vectoriel doit donc conduire
une performance amliore.
Pour prendre en compte plusieurs symboles successifs en mme temps,
on peut tout simplement coder la source par blocs de n symboles. Cest du
codage vectoriel (en dimension n). Cela revient remplacer la source initiale
par une super-source dont les symboles sont des vecteurs de n symboles
successifs de la source initiale. Cette super-source sappelle extension
dordre n de la source initiale
6
.
10 Thorme de Shannon
Examinons de plus prs lintrt de coder vectoriellement (disons en di-
mension n) une source X donne. Appliquons donc un code VLC optimal
(de Human) lextension dordre n de la source. En fait, un code de Fano-
Shannon fait laaire pour ce qui nous occupe ici. Daprs ci-dessus, on a
lencadrement :
H
n
R
n
H
n
+ 1
o R
n
et H
n
sont respectivement le taux de codage et lentropie de la source
tendue lordre n. Ces deux quantits sexpriment en bits cods par symbole
de source ; or un symbole de source est ici un super-symbole , cest dire
un vecteur de n symboles de source initiale X.
Par consquent, on revient aux mmes units (bits cods par symbole de
source X) en divisant par n; le taux de codage, exprim en bits par symbole
de source X, vaut
R =
R
n
n
alors que lentropie
H =
H
n
n
reprsente lentropie dordre n de la source (en bits par symbole de
source X).
Lencadrement ci-dessus devient :
H R H+
1
n
.
6
Le cas scalaire est naturellement un cas particulier du cas vectoriel : il sut de poser
n = 1.
14
On voit bien que la situation du cas scalaire (n = 1) sest amliore, cause
de la prsence du
1
n
: plus on monte en dimension, plus on sapproche
de lentropie.
On sapproche plus de lentropie, mais de quelle entropie ? Pour le savoir,
valuons H dans le cas simple dune source sans mmoire , cest
dire une source X dont les symboles sont indpendants dans le temps (et
identiquement distribus : suite i.i.d. ).
Lentropie dune source sans mmoire lordre n est ind-
pendante de n, et vaut
H = H =
M

i=1
p
i
log
2
1
p
i
.
Preuve: Soit X = (X
1
, X
2
, . . . , X
n
) un vecteur de source, et p(x
1
, . . . , x
n
) la
probabilit asoocie. Alors par dnition
H =
1
n

x
1
,...,x
n
p(x
1
, . . . , x
n
) log
2
1
p(x
1
, . . . , x
n
)
Par commodit on peut introduire une esprance :
H =
1
n
E log
2
1
p(X
1
, . . . , X
n
)
Or la source est sans mmoire : ses symboles sont indpendants, ce qui scrit :
p(x
1
, . . . , x
n
) = p(x
1
) p(x
n
)
de sorte que
H =
1
n
E log
2
n

k=1
1
p(X
k
)
=
1
n
n

k=1
E log
2
1
p(X
k
)
=
1
n
n

k=1
H
=
nH
n
= H.
Do le rsultat.
15
Ainsi, pour une source sans mmoire, en prenant une dimension n assez
grande, lencadrement H R H +
1
n
montre quon sapproche aussi prs
de lentropie que lon veut.
La situation est encore meilleure dans le cas dun source avec mmoire ;
En eet dans le cas gnral on montre que :
Pour une source quelconque, lentropie H dordre n vrie lin-
galit :
H H
Preuve: Considrons la dirence H H, interprte comme la dirence
de lentropie avec et sans mmoire. Avec les mmes notations que ci-dessous,
HH =
1
n
E log
2
1
p(X
1
, . . . , X
n
)

1
n
E log
2
n

k=1
1
p(X
k
)
=
1
n
E log
2
p(X
1
) p(X
n
)
p(X
1
, . . . , X
n
)
Or une ingalit de concavit bien connue
7
arme que la moyenne de loga-
rithmes est au logarithme de la moyenne :
HH
1
n
log
2
E
p(X
1
) p(X
n
)
p(X
1
, . . . , X
n
)
En explicitant lesprance au second membre, il vient
E
p(X
1
) p(X
n
)
p(X
1
, . . . , X
n
)
=

x
1
,...,x
n
p(x
1
, . . . , x
n
)
p(x
1
) p(x
n
)
p(x
1
, . . . , x
n
)
=

x
1
,...,x
n
p(x
1
) p(x
n
)
=
n

k=1

x
k
p(x
k
)
=
n

k=1
1
= 1,
do le rsultat :
HH
1
n
log
2
1 = 0.
7
Mais on peut ne pas la connatre : utiliser alors la place lingalit log(x) x 1
qui donne le mme rsultat.
16

En fait, sous des hypothses assez faibles (stationnarit de la source) on


montre que lentropie dordre n dcrot, lorsque n , vers une valeur
limite appele entropie (dordre ) de la source.
Ainsi, en prsence de mmoire , en particulier lorsque les symboles de
X sont corrls en temps, lentropie de source dcroit lorsque n augmente.
A la limite, lencadrement sur le taux montre quon sapproche daussi prs
quon veut de lentropie (dordre inni) : il sut de coder en trs grande
dimension.
On vient de dmontrer le
Thorme de Shannon (1948).
8
Par codage vectoriel en
dimension susemment leve, le taux de codage peut tre rendu
aussi proche de lentropie de la source que lon veut.
Lentropie apparait donc non seulement comme une limite infrieure sur
le taux de codage mais aussi comme une limite thoriquement atteignable .
Lorsque la source est avec mmoire on a H < H ; on en conclut que le
codage vectoriel permet de rduire le taux en prenant en compte
les corrlations des symboles de source.
Ceci dit, lintrt du codage vectoriel ne se limite pas la prise en compte
des corrlations des symboles de source, puisquon a vu que mme pour une
source sans mmoire, au augmente les performances (en sapprochant de H)
lorsque n crot (grce au terme
1
n
). Ainsi le codage vectoriel permet de
rduire le taux mme pour une source sans mmoire.
Le thorme de Shannon semble ( premire vue) clore dnitivement la
question du codage sans pertes en proposant de raliser un codage vectoriel
en grande dimension pour toute source. Du point de vue des performances,
cest optimal : on sapproche daussi prs quon veut de lentropie, et de tout
faon on ne peut pas decendre en dessous.
Cependant il y a un hic : Pour coder une source M-aire en dimension n,
il faut appliquer un code VLC la source tendue pour laquelle on a M
n
symboles possibles. Le code doit donc tre de taille M
n
, qui augmente expo-
nentiellement avec n. Par exemple, si on veut garantir un taux sapprochant
de lentropie moins dun centime de bit pour une source binaire, il faut un
code de taille
2
100
= 1267650600228229401496703205376
8
Cest le premier thorme de Shannon pour le codage de source sans pertes ; il
existe dautres thormes de Shannon pour le codage de source avec pertes, le codage de
canal, et le codage de source et de canal combins.
17
Inutile de dire que cest prohibitif : il faudrait stocker la table du code au
codeur et au dcodeur, ou transmettre cette table du codeur au dcodeur, ce
qui ncessite un overhead (donnes annexes) qui prend une part non
ngligeable du dbit global.
En rsum, le codage vectoriel en grande dimension est dun grand in-
trt. . . thorique. Mais en pratique, pour des questions de complexit et
de mmoire, on est amen imaginer dautres solutions pour prendre en
compte des symboles de source successifs. Une de ces solutions est le codage
par plages, objet de la section qui suit.
11 Codage par plages dune source binaire
Revenons, pour xer les ides, la source binaire dissymtrique (dentro-
pie faible, petit) :
x
i
p
i
1
0 1
Un codage vectoriel dune telle source est possible, mais peut conduire,
comme on la vu, une taille de code trop grande. En pratique, on peut
utiliser alors des techniques de codage par plage (RLC : Run-Length
Coding) pour amliorer les performances sans trop monter en complexit.
Nous allons tenter de comprendre lide sur la source binaire dissymtrique
donne en exemple.
11.1 Source quivalente des plages
Tout dabord, la source X est transforme en une autre source L dont
les symboles sont des entiers l 0 reprsentant les longueurs des plages
successives de zros (entre deux occurences de 1 ) de la source initiale X.
Par exemple, la ralisation dune squence de symboles x de la source X :
0001010000000110000010001 . . .
est reprsente par la squence les longueurs l :
3, 1, 7, 0, 5, 3, . . . .
Ainsi une plage de longueur l correspond la squence binaire de source
X = 00 01 de (l +1) bits. La distribution de probabilit p(l) de L est donc
18
donne par
9
p(l) = (1 )
l
.
En les mettant bout bout ces squences de (l +1) bits, on peut clairement
reconstruire la squence des symboles de source initiale x
0
, x
1
, . . . partir de
la reprsentation en longueurs de plages : l
1
, l
2
, . . .. Ainsi la source est plages
est quivalente la source binaire initiale.
Lentropie de L vaut :
H(L) =
H
2
()

Preuve: On peut le vrier pniblement par le calcul en dveloppant H(L) =

l0
p(l) log
2
1
p(l)
(Exercice : le faire !). On peut aussi procder comme suit :
Puisququivalentes, les deux sources X et L ont mme entropie, condi-
tion bien sr que ces entropies soient exprimes dans la mme unit, par
exemple en bits par bit de source X Lentropie de X vaut H
2
(). Or le
nombre moyen de bits de source par plage est
10
E(L + 1) =

l0
(l + 1)(1 )
l
=
1

On en dduit immdiatement, sans calcul, la formule donnant lentropie de


L, en bits par plage.
11.2 Le codage des plages
Le principe du codage par plages est videmment de coder la source qui-
valente des plages de faon tenir compte des squences de zros conscutifs.
Mais comme le nombre des valeurs possibles des longueurs L = l est inni,
on ne peut pas appliquer directement un codage VLC (par exemple par lal-
gorithme de Human) sur la source L.
Pour rsoudre ce problme, on procdera ici en dcoupant en tranches
les valeurs des longueurs de plage, et on codera chaque tranche laide dun
code de Human de taille N. Cest compliqu dcrire en dtail, mais le
principe est simple. Voici le dtail :
9
On suppose ici que les bits de source X sont indpendants ( source sans mmoire ).
On vriera quon a bien

+
l=0
p(l) = 1.
10
Rappelons la formule

l0
lx
l
=
x
(1 x)
2
.
19
On code tout dabord les N1 premires valeurs des longueurs de plage :
l = 0, 1, . . . , N 2
ainsi que lvnement L N 1, laide de lalgorithme de Human.
Le code de Human obtenu est not H
1
; il possde donc N mots de code.
Le mot de code associ lvnement L N 1 est not Pf
1
et servira de
prxe au codage des longueurs N 1.
On code galement la deuxime tranche, constitue des N 1 valeurs sui-
vantes des longueurs de plage :
l = N 1, N, . . . , 2N 3
ainsi que lvnement L 2N 2, en mettant en oeuvre lalgorithme de
Human
11
. Le code de Human obtenu est not H
2
, il est aussi de taille N.
Le mot de code associ lvnement L 2N 2 est not Pf
2
et servira de
prxe au codage des longueurs 2N 2.
On procde de mme pour toutes les tranches suivantes. On obtient donc
une suite de codes de Human de taille N : H
1
, H
2
, H
3
, . . ., et une suite de
prxes Pf
1
, Pf
2
, Pf
3
, . . . correspondants.
Finalement la source L est code comme suit : Si L = l appartient la
kime tranche, il est cod par
c
l
= Pf
1
Pf
2
. . . Pf
k1
c
l
o c
l
est le mot de code du code H
k
correspondant L = l.
Par exemple, si N = 4, L = 6, Pf
1
= Pf
2
= 10,
H
3
= 0, 10, 110, 111
o le mot de code correspondant L = 6 est c
6
= 110, alors L = 6 sera cod
par
c
6
= 1010110.
Tout a t fait pour permettre de raliser un algorithme naturel de d-
codage instantan pour retrouver la source L partir de sa reprsentation
code : le dcodeur recherche dabord les prxes ventuels Pf
1
Pf
2
. . . Pf
k1
au dbut de la squence dcoder, ce qui lui permet de reprer la tranche
k ; puis il dcode un mot de code du code de Human H
k
.
En fait on a la simplication suivante :
11
A partir de la deuxime tranche, lalgorithme de Human est mis en oeuvre bien que
la normalisation

i
p
i
= 1 des probabilits nest pas satisfaite, ce qui ne pose aucun
problme (lalgorithme nutilise pas cette normalisation de toute faon).
20
Les codes de Human H
1
, H
2
, . . . sont toujours identiques,
et par consquent les prxes Pf
1
= Pf
2
= Pf
3
= . . . sont gale-
ment identiques.
Preuve: Les probabilits en entre de lalgorithme de Human qui fournit
H
k
sont, au facteur multiplicatif (1 )
(N1)(k1)
prs, les mmes que pour
le code H
1
; et ce facteur naecte pas le rsultat de lalgorithme.
11.3 Performances et exemples
Grce la simplication ci-dessus on peut dterminer une formule simple
pour le taux de codage :
Le taux de codage global du systme complet (en bits cods par
bit de source) vaut
R =
R
H
1 (1 )
N1
o R
H
est le taux de codage de chacun des codes de Human
H
1
, H
2
, H
3
, . . ..
Preuve: Le taux de codage global du systme complet est le nombre moyen
de bits cods par bit de source, cest dire :
R =
+

l=0
p(l)[ c
l
[
o [ c
l
[ dsigne la longueur (en bits) du mot de code c
l
(reprsentation code
de la longueur L = l).
Pour calculer R, il faut tenir compte des longueurs des prxes ventuels.
Exprimons dabord R en bits par plage ; on a, en dcoupant en tranches (avec
des codes de Human et des prxes identiques pour chaque tranche) :
R = p(0)[c
0
[ + + p(N 2)[c
N2
[ + ProbL N 1[Pf
1
[
+ p(N 1)[c
0
[ + + p(2N 3)[c
N2
[ + ProbL 2N 2[Pf
1
[
+
= R
H
+ (1 )
N1
R
H
+ (1 )
2(N1)
R
H
+
Ici on a tenu compte du facteur mulitplicatif (1 )
N1
pour les probabilits
dune tranche la suivante. On a donc
R =
R
H
1 (1 )
N1
bits/plage
=
R
H
1 (1 )
N1
bits/bit
21
do la formule.
Evidemment ce rsultat dpend du choix de la longueur N des tranches.
On peut dailleurs vrier le rsultat dans le cas extrme o N ; le
code de Human donne alors un taux sapprochant de lentropie daprs le
thorme de Shannon (appliqu la source quivalente des longueurs) :
R
H
H(L) =
H
2
()

Puisque (1 )
N1
0, on aboutit
R H
2
() = H
La limite est lentropie de la source X, et donc la mthode de codage par
plages expose ici est asymptotiquement optimale.
En pratique on dtermine la longueur N des tranches par un compromis
entre taille du code de Human (elle ne doit pas tre trop grande) et valeur
du taux R donne par lexpression ci-dessus. Donnons un exemple prcis pour
= 0.1 et N = 4. On applique lalgorithme de Human pour dterminer le
taux R
H
:
(1 )
3
= 0.729 0.729 0.729
= 0.1 0.171 0.271
(1 ) = 0.09 0.1
(1 )
2
= 0.081
longueurs :
1 1 1
2 2 1
3 2
3
do R
H
= 1.442 et R = 0.5321 . . . bits/bit obtenu par codage de Human
des plages.
On peut comparer ce rsultat un codage vectoriel en dimension n = 2
(pour une mme taille de code de Human) :
(1 )
2
= 0.81 0.81 0.81
(1 ) = 0.09 0.1 0.19
(1 ) = 0.09 0.09

2
= 0.01
longueurs :
1 1 1
2 2 1
3 2
3
ce qui donne R =
1.29
2
= 0.645 bits/bit. Pour une mme complexit, le codage
par plages se rvle meilleur que le codage vectoriel. Ce serait encore plus
agrant pour de plus grandes valeurs de N (Exercice : le faire !).
22
12 Codage arithmtique
Dautres systmes de codage de source sans pertes ont t proposs pour
prendre en compte les dpendances temporelles (dun symbole lautre) de
la source (avec mmoire). Ces sytmes de codage permettent de coder une
source quelconque sans connaitre a priori ses statistiques (cest ce quon ap-
pelle du codage universel ), mais sont plus complexes mettre en
oeuvre. Les plus connus sont les systmes de codage de Lempel-Ziv (1976)
et de codage arithmtique (1982).
Dans cette section, on va prsenter les ides principales du codage arith-
mtique, qui est une des techniques de compression sans pertes les plus r-
centes, et probablement la plus importante dans les applications et les normes
actuelles.
Le codage arithmtique est une extension itrative dune technique de co-
dage connue depuis les annes 50, appele codage dElias (ou de Shannon-
Fano-Elias). Cette dernire technique a t simplement introduite comme
moyen de construction dun code VLC scalaire , o on code chaque sym-
bole de source lun aprs lautre. Dcrivons dabord le codage dElias :
12.1 Codes dElias
La distribution de probabilit des symboles de source vrie la relation :
M

i=1
p
i
= 1.
On peut donc construire une partition (un dcoupage ) du segment [0, 1[
(de longueur 1) en intervalles contigus
12
I
1
, . . . , I
M
, o chaque I
i
est de lon-
gueur p
i
. Dans la suite, chaque point du segment [0, 1[ est un nombre qui
sera reprsent par son dveloppement binaire (en base 2), par exemple :
0.110100100 . . ..
-
0
I
1
I
2
I
3
I
4
I
M
1
12
On choisira ces intervalles semi-ouverts (ferm gauche, ouvert droite) ; ainsi la
dnition prcise est :
I
i
=

i1

j=1
p
i
;
i

j=1
p
i

.
23
Lide est de coder un symbole de source x
i
par un point quelconque du
segment de lintervalle correspondant I
i
:
c
i
I
i
.
On utilise ici la mme notation que lors de la description de lalgorithme
de Kraft ci-dessus : le mot de code c
i
correspondant au symbole x
i
sera
tel que c
i
= 0, c
i
[0, 1[ : les dcimales de lcriture en base 2 de c
i
est
forme des bits de c
i
. Noter que mme en supposant c
i
dtermin dans I
i
,
il reste une indtermination sur c
i
: ses premiers bits sont dtermins par
le dveloppement de c
i
en base deux, mais sa longueur l
i
, cest dire le
nombre de bits de prcision (aprs la virgule) quon choisit pour le nombre
c
i
, reste choisir.
An de pouvoir dcoder, il est ncessaire que la prcision sur c
i
soit
susamment grande pour caractriser dans quel intervalle I
i
il se
trouve. Or, si c
i
est connu avec une prcision de l
i
bits, il peut prendre
nimporte quelle valeur dans lintervalle
[ c
i
; c
i
+ 2
l
i
[
puisque cet intervalle est lensemble des nombres dont les l
i
premires dci-
males en base 2 coincident avec c
i
. Il est donc ncessaire de choisir la prcision
l
i
de sorte que
[ c
i
; c
i
+ 2
l
i
[ I
i
.
Ainsi on pourra toujours dterminer un nombre c
i
I
i
convenable, pourvu
que I
i
contienne un intervalle du type [n2
l
i
, (n + 1)2
l
i
[, o n est entier
(auquel cas n = c
i
en base 2). Il est facile de voir que ce sera toujours
possible si
2 2
l
i
l(I
i
) = p
i
.
On ne peut pas, en gnral, choisir un l
i
plus petit car I
i
pourrait tre alors
cheval sur deux intervalles conscutifs du type [(n 1)2
l
i
, n2
l
i
[ et
[n2
l
i
, (n + 1)2
l
i
[ :
-
(n1)2
l
i n2
l
i (n+1)2
l
i
-
(n1)2
l
i n2
l
i (n+1)2
l
i
-
I
i
MAUVAIS
BON
24
On pourra donc prendre pour l
i
le plus petit entier vriant lingalit
ci-dessus, cest dire
13
:
l
i
= log
2
1
p
i
| + 1
Remarquons que, daprs lanalyse faite ci-dessus pour lalgorithme de Kraft,
on obtient un code instantan, car les intervalles [ c
i
; c
i
+ 2
l
i
[ sont tous
disjoints. De plus, par un calcul analogue au cas des codes de Fano-Shannon
trait ci-dessus, on en dduit lencadrement sur le taux de codage :
H R H + 2.
Cet encadrement est moins bon que celui obtenu pour les codes de Fano-
Shannon, ce qui explique pourquoi le codage dElias est rapidement tomb
dans loubli ; il na t r-exhum qu la lumire de la technique itrative du
codage arithmtique, quon va maintenant dcire.
12.2 Itrations du codage arithmtique
Lide du codage arithmtique est ditrer la procdure dElias au fur et
mesure du temps, an coder plusieurs symboles de source successifs. On
prendra ainsi en compte les corrlations ventuelles des symboles de la source
(avec mmoire).
Commencons par le codage de deux symboles conscutifs
14
(x
1
, x
2
). La
distribution de probabilit conjointe de ce vecteur scrit :
p(x
1
, x
2
) = p(x
1
)p(x
2
[x
1
)
o p(x
2
[x
1
) est la probabilit conditionnelle de x
2
sachant x
1
.
On commence par appliquer la procdure dElias pour le symbole x
1
;
on obtient une reprsentation code dans un intervalle I
1
de longueur p(x
1
).
Pour tenir compte de x
2
, on considre non pas les probabilits p(x
2
), mais
les probabilits conditionnelles p(x
2
[x
1
) qui vrient la relation :

x
2
p(x
2
[x
1
) = 1.
On recommence alors la procdure dElias, non plus sur le segment [0, 1[,
mais sur lintervalle I
1
quon re-partitionne en intervalles I
2
plus
ns, de longueurs proportionnelles aux p(x
2
[x
1
) :
13
x| dsigne le plus petit entier x.
14
A partir de maintenant les indices dsignent le temps : x
1
, x
2
, . . . sont les symboles
de source observs aux instants t = 1, 2, . . ..
25
-
0
I
1

1
!
!
!
!
!
!
!
!
!
!
!
P
P
P
P
P
P
P
P
P
P
P
P
P
P
-
I
2

Puisque l(I
1
) = p(x
1
), ces nouveaux intervalles I
2
sont en fait de longueur
l(I
2
) = p(x
1
)p(x
2
[x
1
) = p(x
1
, x
2
).
Arriv jusque l, rien nempche de continuer et de coder le symbole
suivant x
3
, en re-dcoupant lintervalle I
2
en sous-intervalles I
3
de longueurs
proportionnelles p(x
3
[x
1
, x
2
). Ces intervalles seront en fait de longueur
p(x
1
, x
2
)p(x
3
[x
1
, x
2
) = p(x
1
, x
2
, x
3
)
et ainsi de suite. Aprs n itrations de lalgorithme dElias on obtient un
intervalle de longueur
p(x
1
, x
2
, . . . , x
n
) = p(x
1
)p(x
2
[x
1
)p(x
3
[x
1
, x
2
) p(x
n
[x
1
, . . . , x
n1
)
qui prend bien en compte la dpendance temporelle des symboles de source.
12.3 Points techniques et performances
Le rsultat du codage est donc forme des dcimales du nombre c I
n
,
avec une prcision susante pour quil appartienne un intervalle I
n
unique.
Ainsi, en thorie, il sut de disposer dune implantation dune arithmtique
prcision innie (ou susamment grande). Ceci explique le terme codage
arithmtique .
Le dcodage procde dans le mme sens que le codage : on regarde
dabord dans quel intervalle I
1
se trouve c, on en dduit x
1
, puis on regarde
lintrieur de I
1
dans quel intervalle I
2
se trouve c, on en dduit x
2
, et ainsi
de suite. On dcode ainsi au l de leau x
1
, x
2
, . . ..
En pratique, il est hors de question de demander une implantation dune
artihmtique prcision innie. Cest la raison pour laquelle il est ncessaire
de procder des remises lchelle subtiles chaque fois que la prcision-
machine va tre atteinte, de faon viter les problmes dunderow. Ces
remises lchelle sont re-parcourues lors du dcodage. Je passe ici sous
silence les nombreux dtails dimplantation qui sont trs techniques.
26
Il est facile dvaluer les performances de ce codage : Le mot de code
dElias au bout de n tapes aura une longueur (longueur de prcision de c) :
l = log
2
1
p(x
1
, x
2
, . . . , x
n
)
| + 1
et le taux de codage R
n
, en bits par vecteur (x
1
, . . . , x
n
), vrie donc lenca-
drement :
H
n
R
n
H
n
+ 2,
do, en se ramenant des bits par symbole de source :
H R H+
2
n
o H est lentropie dordre n de la source. On retrouve une situation dj
rencontre lors de lanalyse du codage vectoriel en dimension n, qui four-
nit le thorme de Shannon : le taux de codage sapproche daussi prs
quon veut de lentropie. Le codage arithmtique est donc optimal dans le
cas gnral des sources avec mmoire.
12.4 Adaptativit et universalit
Lintrt du codage artihmtique nest pas tant de fournir un algorithme
de codage optimal mais il permet surtout un codage adaptatif : plutt
que de supposer connu une fois pour toutes la distribution de probabilit
conjointe de la source p(x
1
, . . . , x
n
) (par modlisation et/ou estimation sur
toute la source), il est possible destimer au fur et mesure les probabilits
conditionnelles
p(x
n
[x
1
, . . . , x
n1
)
dont on a besoin pour ltape n. Ceci permet une plus grande exibilit pour
coder nimporte quel type de source, en sadaptant des variations ven-
tuelles de statistiques. Bien entendu, cette estimation est dabord grossire ;
elle sane au fur et mesure du codage des donnes x
1
, x
2
, . . ..
On peut mme aller plus loin : plutt que de transmettre en donnes an-
nexes (overhead) ces estimations de probabilit du codeur au dcodeur (qui
en a galement besoin), on peut envisager de rpeter au dcodage (ind-
pendamment du codeur) lestimation voulue sur les donnes au fur et
mesure de leur dcodage. On obtient alors un algorithme de dcodage
universel qui est capable de coder (et de dcoder sans information suppl-
mentaire) tout type de source sans connaissance a priori de ses statistiques.
27
Rfrences
[1] Robert Mc Eliece, The Theory of Information and Coding, Addison Wes-
ley, 1977.
[2] Thomas Cover, Joy Thomas, Elements of Information Theory, J. Wiley
& sons, 1991.
[3] Allan Gersho, Robert Gray, Vector Quantization and Signal Compression,
Kluwer Academic, 1992.
[4] Nicolas Moreau, Techniques de Compression des Signaux, Masson CNET-
ENST, 1994.
28

Anda mungkin juga menyukai