Vous êtes sur la page 1sur 16

Nicolas Sendrier

Programme Informatique Th
ematique S
ecurit
e

Introduction la th
eorie de linformation

Cours n3
Algorithmes de codage de source

Codage et d
ecodage `
a laide dun code pr
efixe

Codage : Acc`
es `
a une table index
ee par les lettres.
D
ecodage : Parcours dans larbre du code.
On part de la racine de larbre.
` chaque bit lu de la s
A
equence `
a d
ecoder on descend `
a droite
ou `
a gauche suivant sa valeur.
Lorsque lon atteint une feuille, on obtient une lettre du message
et on retourne `
a la racine.

cours n 3: Algorithmes de codage de source

Code optimal

Les th
eor`
emes de Kraft et Mac Millan ont un corollaire imm
ediat :
a d
ecodage unique dont les K mots
Corollaire Sil existe un code `
ont pour longueur n1, n2, . . . , nK alors il existe un code pr
efixe avec
les m
emes longueurs.
D
efinition Un code `
a d
ecodage unique dune source X est optimal
sil nexiste pas de code `
a d
ecodage unique de X ayant une longueur
moyenne strictement inf
erieure.
efixe optimal.
Proposition Pour toute source il existe un code pr

cours n 3: Algorithmes de codage de source

Code de Huffman

Soit la source discr`


ete X dalphabet X = {a1, . . . , aK2 , aK1, aK }
munie de la loi P . Sans perdre de g
en
eralit
e, nous pouvons supposer
que P (a1 ) . . . P (aK1 ) P (aK ) > 0.
Nous d
efinissons la source Y dalphabet Y = {a1, . . . , aK2, bK1} munie de la loi
k = 1...,K 2
Q(ak ) = P (ak ),
Q(bK1 ) = P (aK1 ) + P (aK )
Algorithme (Huffman)
Nous voulons construire un code pr
efixe
de X. Si K = 2, les mots de code sont (a1 ) = 0 et (a2 ) = 1. Si
K > 2, soit un code de Huffman de Y ,
(ak ) = (ak ) pour k = 1 . . . , K 2,
(aK1 ) = (bK1 ) k 0,
(aK ) = (bK1 ) k 1,
cours n 3: Algorithmes de codage de source

Le code de Huffman est optimal

Lemme Il existe un code pr


efixe optimal dans lequel les deux lettres
les moins probables sont cod
ees par des mots de longueur maximale.
Ces mots sont identiques sauf pour leur dernier symbole.
Ces deux mots de codes sont donc de la forme (m k 0) et (m k 1).
Lemme Si est un code optimal de Y alors est un code optimal
de X (notations de lalgorithme de Huffman).
Proposition Le code de Huffman est optimal.

cours n 3: Algorithmes de codage de source

Code de Huffman : exemple

x
@

0.57
x
@

0.25
x
A
 A


0.14 
x
A
 A

A

A

A

A

A
A

A
A

@
@

a
@

@
0.32 @x
A
 A
A

A

A

A


0.43

0.11

0.15

0.17

0.05

0.09

x
a
b
c
d
e
f

cours n 3: Algorithmes de codage de source

P (x)
0.43
0.17
0.15
0.11
0.09
0.05

log2 (P (x))
1.22
2.56
2.74
3.18
3.47
4.32

H = 2.248

(x)
0
100
101
110
1110
1111

nx
1
3
3
3
4
4

n
= 2.28

E = 98.6%

Nombres 2-adiques

Dans lintervalle [0, 1], ils sont de la forme

X
i=1

di 2i, o`
u di {0, 1}

On
ecrira 0.d1 d2 d3 . . .
Par exemple
0.25
0.125
0.625

0.01
0.001
0.101

0.43
0.0110111000 . . .
0.71
0.1011010111 . . .

1/ 2 0.1011010100 . . .

eveloppements, par exemple 0.25


Certains nombres ont plusieurs d
0.01000 . . . et 0.25 0.00111 . . . . Dans ce dernier cas on choisira le
d
eveloppement de valuation minimale (le plus court).

cours n 3: Algorithmes de codage de source

Code de Shannon-Fano-Elias
Soit X une source discr`
ete dalphabet X et de loi de probabilit
e P.
Nous supposons que X est muni dune relation dordre total. Pour
tout x X , nous noterons `(x) = d log2 P (x)e, et nous d
efinissons
les fonctions suivantes (probabilit
es cumul
ees) :
S(x) =

P (x0 )

et

S(x)
=

x0 <x

1
P (x) + S(x).
2

(Pour la plus petite lettre S(x) vaut 0)


Nous d
efinissons (x) pour tout x X comme les `(x) + 1 premiers

bits du d
eveloppement 2-adique de S(x).
Proposition Le code est pr
efixe et sa longueur moyenne n
v
erifie
H(X) n
< H(X) + 2
de

est la partie enti`


ere arrondie sup
erieurement

cours n 3: Algorithmes de codage de source

Code de Shannon-Fano-Elias : exemple

x
a
b
c
d
e
f

P (x)
0.43
0.17
0.15
0.11
0.09
0.05

`(x)
2
3
3
5
4
5

0.215
0.515
0.675
0.805
0.905
0.975

S(x)
0.0011011 . . .
0.1000001 . . .
0.1010110 . . .
0.1100111 . . .
0.1110011 . . .
0.1111100 . . .

cours n 3: Algorithmes de codage de source

(x)
001
1000
1010
11001
11100
111110

Huffman
0
100
101
110
1110
1111

Code de Shannon-Fano-Elias : autre exemple

x
a
b
c
d

P (x)
0.25
0.5
0.125
0.125

`(x)
2
1
3
3

S(x)
0.125
0.001
0.5
0.1
0.8125 0.1101
0.9375 0.1111

(x)
001
10
1101
1111

Huffman
10
0
110
111

Si on enl`
eve le
dernier bit `
a
le code nest plus
pr
efixe.

x
b
a
c
d

P (x)
0.5
0.25
0.125
0.125

`(x)
1
2
3
3

S(x)
0.25
0.01
0.625
0.101
0.8125 0.1101
0.9375 0.1111

(x)
01
101
1101
1111

Huffman
0
10
110
111

Si on enl`
eve le
dernier bit `
a
le code reste
pr
efixe.

cours n 3: Algorithmes de codage de source

Code de Shannon ( ?)

Le code de Shannon est d


efini de la m
eme mani`
ere que celui de
Shannon-Fano-Elias, `
a deux exceptions pr`
es :
es d
ecroissantes,
les lettres sont rang
ees par probabilit
le mot codant x est constitu
e des `(x) premiers bits de S(x).
(En particulier, le mot codant la plus petite lettre est compos
e que
de `(x) 0).
Proposition
n
v
erifie

Le code de Shannon est pr


efixe et sa longueur moyenne
H(X) n
< H(X) + 1

cours n 3: Algorithmes de codage de source

10

Preuves

Lemme Pour tous r


eels u et v dans [0, 1[, et pour tout entier l > 0,
eveloppements 2-adiques
si |u v| 2l alors les l premiers bits des d
de u et v ne sont pas tous identiques.
Le code de Shannon-Fano-Elias est pr
efixe :
Pour tous x, y X tels que `(y) `(x)


P (x)
S(x)

S(y)

1
2`(x)+1

Le code de Shannon est pr


efixe :
Pour tous x, y X tels que y > x (donc `(y) `(x))
|S(x) S(y)| P (x)

cours n 3: Algorithmes de codage de source

2`(x)

11

Codage et d
ecodage

Si lalphabet X est de petite taille, on fait comme pour un code pr


efixe
(aucun avantage par rapport `
a Huffman).
Si lalphabet est grand, il faut pour le codage
une fonction qui calcule `(x) (cest lindice du premier 1 dans le
d
eveloppement 2-adique de P (x)),

une fonction qui calcule S(x)


(ou S(x)).
Pour le d
ecodage
une fonction qui calcule `(x),

(ou S(x)).
une fonction qui calcule le + petit x tel que (x) S(x)
(on identifie (x) et le r
eel dont il est le d
eveloppement 2-adique)

cours n 3: Algorithmes de codage de source

12

Codage arithm
etique
Nous allons coder la source dalphabet X L munie de la loi produit.
Pour tout entier n L, posons
`(x1, . . . , xn) = b log2 P (x1 , . . . , xn)c
X
P (y1 , . . . , yn)
S(x1 , . . . , xn) =
(y1 ,...,yn)<(x1,...,xn)

1 , . . . , xn) = S(x1 , . . . , xn) + P (x1 , . . . , xn)/2


S(x
Cela nous permet dutiliser le code de Shannon-Fano-Elias sur X L.
2
Proposition Lefficacit
e de ce codage est > 1 LH(X)
.
Proposition On pose S(xn | x1, . . . , xn1) =
S(x1 , . . . , xn) = S(xn | x1, . . . , xn1)+

yn<xn P (yn | x1, . . . , xn1 ),

P (xn | y1, . . . , yn1)P (y1 , . . . , yn1)

(y1,...,yn1)<(x1,...,xn1 )

Si la source est sans m


emoire
S(x1 , . . . , xn) = S(xn) + P (xn)S(x1 , . . . , xn1)
cours n 3: Algorithmes de codage de source

13

Codage/D
ecodage
Lavantage du codage arithm
etique est de permettre le codage et le
d
ecodage sans jamais utiliser explicitement larbre associ
e.
Nous codons la source X L `
a laide du code de Shannon-Fano-Elias,
que nous noterons L. Pour pouvoir coder, il faut calculer le nombre
1, . . . , xL), qui peut-
etre calcul
e r
ecursivement (en L
etapes)
r
eel S(x
avec une pr
ecision de `(x1, . . . , xL) bits.
eel dont le d
eveloppement 2-adique
Soit r = (x1 , . . . , xL) le nombre r
est le mot codant (x1 , . . . , xL) X L. Les lettres x1, . . . , xL sont les
seules v
erifiant
S(x1 ) < r < S(x1) + P (x1 )
S(x1 , x2) < r < S(x1, x2) + P (x1 , x2)
..
S(x1, . . . , xL) < r < S(x1, . . . , xL) + P (x1 , . . . , xL)
cours n 3: Algorithmes de codage de source

14

D
ecodage (suite)

On pose r0 = r la s
equence cod
ee. Pour tout i > 0, on note
ri1 S(xi)
ri =
P (xi )
Les lettres x1, . . . , xL sont les seules v
erifiant
S(x1) <
S(x2) <

r0
r1
..

< S(x1) + P (x1 )


< S(x2) + P (x2 )

S(xL) < rL1 < S(xL) + P (xL)


On peut donc construire le d
ecodeur du code arithm
etique `
a partir
dun d
ecodeur du code de Shannon-Fano-Elias de X .
` condition de calculer les ri avec une pr
ecision suffisante
A
cours n 3: Algorithmes de codage de source

15