Transcript Cours 2
C ODES DE SOURCE
On suppose par d´efaut que l’on code sur l’alphabet binaire S = {0, 1}
I un codeur de source est le plus souvent une application de l’alphabet
de source W vers l’ensemble S⇤
I les mots du code sont les images des symboles de W
I le code C est alors l’ensemble des mots du code
I a` l’action de coder doit correspondre l’action de d´ecoder
2 – Codes de source – Codes d’Huffman
I le fait que l’application soit une injection ne suffit pas a` assurer un
d´ecodage sans ambigu¨ıt´e
I il faut pour cela que l’extension de W⇤ a` S⇤ soit elle aussi injective
I ce qui se traduit par une bijection entre W⇤ et C⇤
I un d´ecodage ambigu correspond donc a` un codage avec perte
d’informations
Exemple Le codage : a
codage : a
C ODES A` LONGUEUR VARIABLE
1, b
1, b
00 et c
01 et c
10 est ambigu contrairement au
10
C ODES PR E´ FIXES
I un code a` longueur variable C est un langage caract´eris´e par le fait que
tout mot de C+ a une factorisation unique en mots de C
I en Th´eorie des langages, on les appelle tout simplement des codes
I de fac¸on e´ quivalente, C est un code ssi :
C
1C
\ C⇤ C⇤
1
= {#}
I en Th´eorie des codes, on les distingue des autres par l’appellation de
I Un langage qui ne contient pas 2 mots dont l’un est pr´efixe de l’autre
est clairement un code non ambigu
I en Th´eorie des langages, on les appelle des codes pr´efixes (plus
logiquement, en anglais, prefix-free codes)
I ainsi un code pr´efixe P v´erifie :
codes non ambigus
I en Cryptographie, on parlera de codes uniquement d´echiffrables
Exemple C = {0, 01, 110} est un code (non-ambigu)
mais pas L = {0, 010, 101} : en effet, le mot 0101010 a deux factorisations sur L
Un langage L n’est pas un code si un mot de L+ admet 2 factorisations distinctes :
L
L
L
L
L
P
1P
= {#}
I en Th´eorie des codes, on parle de codes ayant la propri´et´e du pr´efixe
I ils sont aussi appel´es codes instantan´es car le d´ecodage a lieu d`es qu’on
parvient a` lire un mot du code en entier
I ils sont encore appel´es codes instantan´ement d´echiffrables ou
irr´eductibles
I a` noter : tout code a` longueur fixe poss`ede la propri´et´e du pr´efixe
Exemple C = {0, 01} est un code mais n’est pas un code pr´efixe
Par contre, le langage P = {01, 001, 10} est un code pr´efixe
A LGORITHME DE S ARDINAS –PATTERSON
I N E´ GALIT E´ S DE K RAFT - M AC M ILLAN
On suppose que le codage a lieu sur l’alphabet binaire
I Cet algorithme de 1953 permet de d´ecider si un langage donn´e L est un
Th´eor`eme (In´egalit´e de Kraft)
Il existe un code instantann´e dont les n mots sont de longueur l1 , ..., ln ssi :
code non-ambigu
n
I il consiste en la construction d’une suite inductive d’ensembles :
Initialisation
Etape inductive
Deux cas d’arrˆet
U0 = L 1 L \ { # }
Un+1 = ((Un ) 1 L) [ (L
• # 2 Un
• Un 1 = Un
1U
n)
) L n’est pas un code
) L est un code
1
 2l
i=1
i
1
I la mˆeme condition n´ecessaire et suffisante a e´ t´e e´ tablie ant´erieurement
par Mac Millan pour les codes non-ambigus
I on en d´eduit que tout code non-ambigu poss`ede un code pr´efixe
e´ quivalent
Exemple
On peut v´erifier avec cet algorithme si les langages rationnels suivants sont
des codes (non-ambigus) :
L : 0 + 01 + 101
I ce r´esultat n’est pas constructif : il ne dit rien sur la mani`ere de trouver
un tel code
Exemple Soit le langage L = {10, 11, 000, 101, 111, 1100, 1101}
7
1
 2li
⇤
M : 0 + (01) 10
= 2.2
2
+ 3.2
3
+ 2.2
4
= 1/2 + 3/8 + 1/8 = 1
i=1
Il existe un code pr´efixe avec autant de mots et de mˆeme longueur que dans L, par
exemple :
P = {01, 10, 000, 001, 111, 1100, 1101}
P : 0 + 101 + 100 + 111 + 1101 + 1100
A RBRE DE CODAGE
L ONGUEUR MOYENNE
I Un arbre de codage aussi dit arbre d’Huffman est un arbre binaire localement
complet i.e. chaque nœud a 0 ou 2 fils
I les arˆetes menant aux fils gauches sont e´ tiquet´ees par 0 (resp. 1 a` droite)
I a` chaque feuille correspond un mot du code obtenu en concat´enant les e´ tiquettes
de la racine a` la-dite feuille
I un code est l’ensemble des mots correspondant aux chemins dans l’arbre de la
racine a` une de ses feuilles
Soit S = (W, p) une source avec | W |= n
I chaque symbole de W est cod´e par un mot de C de longueur li
I si pour tout i, la longueur li est constante, on parle de codes a` longueur
fixe
I dans le cas contraire, on parle de codes a` longueur variable
I la longueur moyenne d’un code est d´efinie par :
L=
n
 p i li
i=1
01
000
elle est donc sans int´erˆet dans le cas des codes a` longueur fixe
10
I Th´eor`eme (cons´equence des in´egalit´es de Kraft-Mac Millan)
111
001
1100 1101
La longueur moyenne L des mots d’un code non-ambigu v´erifie :
H (S) L
T H E´ OR E` ME DE S HANNON
M E´ THODE DIRECTE DE CODAGE BINAIRE
On suppose que le codage a lieu sur l’alphabet binaire
Exemple
I Premier th´eor`eme de Shannon (th´eor`eme du codage sans bruit)
Soit S une source sans m´emoire, d’entropie H (S), il existe un code
(non-ambigu) pour S dont la longueur moyenne L des mots de code est
aussi voisine que l’on veut de l’entropie.
I On consid`ere une source W = {w1 , w2 , w3 , w4 , w5 } a` 5 symboles suivant
la distribution de probabilit´es :
p1
p2
p3
p4
p5
I toute source discr`ete sans m´emoire admet donc un code non-ambigu
v´erifiant :
H (S) L < H (S) + 1
0.40
0.20
0.15
0.15
0.10
log2 p1
log2 p2
log2 p3
log2 p4
log2 p5
= 1, 32
= 2, 32
= 2, 73
= 2, 73
= 3, 32
!
!
!
!
!
l1
l2
l3
l4
l5
=2
=3
=3
=3
=4
I a` l’aide d’un arbre, il est possible de trouver un code pr´efixe v´erifiant
I en th´eorie, il est donc possible de trouver un code s’approchant
ind´efiniment de l’entropie mais rien n’est dit sur la fac¸on d’y parvenir
I l’id´ee des codes entropiques (qui suivent) est de coder chaque symbole
les conditions sur les longueurs
I on obtient par exemple :
w1
00 w2
010 w3
011 w4
100 w5
1010
au plus pr`es de son entropie pour approcher la borne inf´erieure
C ODAGE DE S HANNON -FANO
C ODES D ’H UFFMAN
I On connaˆıt les symboles de l’alphabet et leurs probabilit´es d’apparition
1.
2.
3.
4.
5.
on les classe par ordre d´ecroissant de fr´equence
a` chaque symbole on associe le mot de code temporaire #
on partitionne l’ensemble ordonn´e en 2 moiti´es a` peu pr`es e´ quiprobables
on ajoute 1 a` la suite du code des symboles de la 1e` re moiti´e, 0 pour la 2de
on reprend en 2. pour chacun des sous-ensembles jusqu’`a e´ puisement
I s’il est impossible de scinder en 2 ensembles de probabilit´es
comparables, l’optimum n’est pas atteint
I c’est pour cela que ce codage qui date de 1949 a e´ t´e d´etron´
ˆ e par celui
des codes d’Huffman
Exemple
symbole
a
b
c
d
e
f
g
prob.
0.25
0.20
0.15
0.15
0.10
0.10
0.05
1
1
0
0
0
0
0
1
0
1
1
0
0
0
1
0
1
0
0
1
0
code
11
10
011
010
001
0001
0000
Une source S = (W, p) avec W = {w1 , ..., wn } et p = {p1 , ..., pn }
I L’algorithme de Huffman date de 1952 et consiste a` contruire
inductivement un arbre de codage associant syst´ematiquement les mots
de codes les plus courts aux symboles les plus fr´equents (cf. TP1) :
1. on construit a` partir d’W un ensemble d’arbres-racines e´ tiquet´es
par (wi , pi )
2. on trie ces arbres par probabilit´e croissante
3. on assemble en un seul arbre les 2 arbres de moindres probabilit´es
4. on e´ tiquette l’arbre obtenu de la concat´enation des symboles et de la
somme des probabilit´es
5. si il reste plus d’un arbre, on reprend en 2.
6. on associe a` chaque e´ l´ement d’W son mot de code
E XEMPLE
Fr´equences d’apparition en % :
a
45
b
13
c
12
d
16
e
9
f
5
100
U N CODAGE OPTIMAL ?
I les codes d’Huffman ont par construction la propri´et´e du pr´efixe
I tout code qui poss`ede la propri´et´e du pr´efixe est mˆeme contenu dans
un code d’Huffman
| bcdef |= 55
| a |= 45
I ces codes n´ecessitent une connaissance statistique pr´ealable de la
distribution de symboles
| def |= 30
| bc |= 25
| c |= 12 | b |= 13
I un tel code est optimal car la longueur moyenne L de ses mots est
| d |= 16
| ef |= 14
b
101
c
100
d
111
e
1101
H (S) L < H (S) + 1
I cependant, ce codage s’effectue en bit entier et on peut lui pr´ef´erer le
codage arithm´etique (1990)
| f |= 5 | e |= 9
a
0
minimale :
f
1100
A d´ecoder :
I 11000111011000100101111100011001101
C ODAGE ARITHM E´ TIQUE
I il s’agit d’un codage entropique
I cette m´ethode statistique utilise un tableau des fr´equences d’apparition
des symboles
I elle s’av`ere meilleure que les codes d’Huffman dans la mesure ou
`
l’encodage n’a pas lieu en bits entiers
I on encode les caract`eres par intervalles
I la sortie de l’encodage est un r´eel dans [0, 1]
I les codes d’Huffman restent une technique de compression courante
coupl´ee a` d’autres codages sp´ecifiques a` la nature de la source : image, vid´eo ou
son
I JPEG, MPEG, MP3 et mˆeme LZH utilisent les codes d’Huffman ou
leurs variantes
C ODAGE NON INJECTIF
Certains codes sont utiles mˆeme s’ils ne permettent pas un d´ecodage
non-ambigu :
I compression avec perte : son, images
I d´etection des erreurs : calcul d’empreinte pour v´erifier l’int´egrit´e d’un
message
I fonction de hachage :
h : {0, 1}⇤ ! {0, 1}n
I les transform´ees de Fourier (DFT)
I pour e´ viter les probl`emes de portabilit´e, il y a moyen de travailler sur
des entiers
I d’autres optimisations sont possibles pour manier des entiers les plus
petits possibles
Exemple
Le bit de parit´e est un modeste exemple du calcul d’une empreinte :
n
I si m = s1 ...sn alors il vaut Âi=1 si mod 2
Utilisation des fonctions de hachage : MDC (Manipulation Detection Code) pour l’int´egrit´e des
messages, MAC (Message Authentification Code) pour l’int´egrit´e et l’authentification
Ce codage sera pr´esent´e en d´etails au Cours 5 qui traite de compression.
A suivre ...