Hamming Huffman
Hamming Huffman
Hamming Huffman
Compression de données
IFT-4003/IFT-7023
Notes de cours
Codage de Huffman
Édition Hiver 2012
• Codage de Shannon-Fano
• Procédure de construction des codes de
Huffman
• Extension des codes de Huffman
• Code de Huffman non binaires
• Codes de Huffman adaptatif
• Codes de Golomb
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Codage de Shannon-Fano
• Construction d’un code préfixe basé sur la théorie de
Shannon.
• Code développé en 1960 par Claude E. Shannon (MIT) et
Robert M. Fano (Laboratoires de Bell).
• Assignation du code selon la probabilité de chaque symbole.
• Algorithme simple avec des performances élevées.
• Cependant c’est un code sous-optimal en terme de longueur
moyenne des mot code.
• A partir de ce code un étudiant gradué a développé un autre
code assurant l’optimalité: David A. Huffman.
• Exemple d’utilisation: format ZIP.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Algorithme de Shannon-Fano
1. Détermination des probabilités de chacun des symboles soit
par mesure ou soit par estimation.
2. Ordonner les symboles selon leurs probabilité d’apparence
croissant ou décroissant.
3. Diviser l’ensemble des symboles en deux sous-groupes
ayant une différence de probabilité minimale.
4. Assigner un ‘0’ pour le premier sous-groupe et un ‘1’ pour
le second sous-groupes.
5. Réitérer à la 3ème étape en subdivisant les sous-groupes.
6. Condition d’arrêt: tous sous-groupes sont formés d’un
singleton.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (1)
Étape 1: Lettres a b c m r s
calcul des Fréquence 9 3 6 8 5 7
fréquences
9 8 7 6 5 3
Étape 2: a m s c r b
ordonner les 9 28 28-9= 19
fréquences
15 20 20-15= 5
Étape 3: 24 14 24-14= 10
Division en
groupes de
fréquences
rapprochées
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (2)
9 8 7 6 5 3
a m s c r b
0 0 1 1 1 1
0 1
a m s c r b
9 8 7 6 5 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (3)
9 8 7 6 5 3
a m s c r b
00 01 1 1 1 1
0 1
s c r b
0 1 7 6 5 3
a m
9 8
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (4)
9 8 7 6 5 3
a m s c r b
00 01 1 1 1 1
0 1
s c r b
0 1 7 6 5 3
a m
9 8
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (5)
9 8 7 6 5 3
a m s c r b
00 01 10 10 11 11
0 1
0 1 0 1
a m s c r b
9 8 7 6 5 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (6)
9 8 7 6 5 3
a m s c r b
00 01 10 10 11 11
0 1
0 1 0 1
a m s c r b
9 8 7 6 5 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple: codage de Shannon-Fano (7)
9 8 7 6 5 3
a m s c r b
Code assigné: 00 01 100 101 110 111
0 1
Condition 0 1 0 1
d’arrêt:
Sous groupes a m
0 0 1
1
formés par des 9 8
singletons s c r b
7 6 5 3
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Remarques: codage de Shannon-Fano
Lettres a b c m r s
Fréquence 9 3 6 8 5 7
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Code de Huffman
• Le code de Shannon-Fano ne permette pas d’obtenir un code
optimale.
• Le code de Huffman est code presque aussi simple que le
code de Shannon-Fano.
• Le code permet d’avoir un code à préfixe aussi.
• Le code de Huffman est optimal et il est basé sur deux
observation:
• Dans un code optimal, on assigne moins de bits aux
symboles les plus fréquents et plus de bits au symboles
les moins fréquents.
• Dans un code optimal, les deux moins fréquents
symboles ont la même longueur.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Longueur du code de Huffman (1)
• La longueur moyenne de se code peut atteindre l’entropie de
la source (code optimal). Cependant il faut que chaque mot
code puisse être représenté par un nombre entier de bits.
• Ceci étant possible si les probabilités des symboles sont des
puissances négatives de 2, i.e.: 2-1, 2-2 ..
• Longueur moyenne d’un code de Huffman:
H ( S ) lmoy H (S ) 1
• Pour démontrer ce point on utilise l’inégalité de Kraft-
McMillan. Soit C un code uniquement décodable formé par
K mots code de longueurs li=1..K alors:
K
li
2 1
i 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Longueur du code de Huffman (2)
Lettres a b c m r s
Code 1 00 111 101 01 110 100
K
• Code 1: 2 li
2 2
2 3
2 3
2 2
2 3
2 3
1 1
i 1
K
li 2 2 2 2 3 3
• Code 2: 2 2 2 2 2 2 2 1.25 1
i 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Longueur du code de Huffman (3)
• Nous avons dit que la longueur moyenne d’un code de
Huffman:
H ( S ) lmoy H (S ) 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un code de Huffman (1)
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
Code 0 1
b(0.4) b (0.4)
a(0.2) a(0.2)
c(0.2) c(0.2)
0 de(0.2)
d(0.1)
e(0.1)
1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un code de Huffman (2)
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
Code 0 10 11
0 de(0.2)
d(0.1)
1
e(0.1)
1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un code de Huffman (3)
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
0
a(0.2) a(0.2) dce(0.4) b(0.2)
e(0.1)
1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un code de Huffman (4)
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
0
b(0.4) b (0.4) b (0.4) adce(0.6)
adceb(1)
0
a(0.2) a(0.2) dce(0.4) b(0.4)
1
0
1
0 1
b
0 1 a
c
0 1
d e
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Remarques: Code Huffman (1)
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
Longueur 2 1 3 4 4
Longueur 2 1 3 4 4
Longueur 2 1 3 4 4
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Inconvénient de la variance élevée
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
Longueur 2 1 3 4 4
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération du code de Huffman à
variance minimale
• Lorsque la variance de la longueur du code est élevée la
mémoire tampon à l’encodage doit être large: 18000 bits.
• Le déficit de transmission peut atteindre 12000 bits.
• I faut concevoir un code de Huffman tout en minimisant la
variance.
• C’est quasiment la même procédure de codage.
• Lorsqu’il y a une égalité dans les probabilités placer
l’ensemble formé par le plus de lettre en haut.
• Dans l’exemple qu’on a présenté avant la variance est de
1.36. On va construire un code de Huffman à variance
minimale de 0.24.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Génération d’un code de Huffman
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
0
b(0.4) b (0.4) b (0.4) adce(0.6)
0
a(0.2) a(0.2) dce(0.4) b(0.4)
1
0
b(0.4) b (0.4) dce(0.4) ab(0.6)
0
a(0.2) a(0.2) b(0.4) dce(0.4)
1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Minimisation de la variance
Lettres a b c d e
Probabilité 0.2 0.4 0.2 0.1 0.1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Extension des codes de Huffman
• Dans les application où la taille de l’alphabet est large, la
valeur de pmax est relativement faible. Ainsi le code est
performant vu que sa longueur moyenne est proche de
l’entropie:
H (X ) lmoy H (X ) pmax 0.087
pmax 1 lmoy H (X )
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Inefficacité du code de Huffman
• Soit le code de Huffman de la source suivante:
Lettres a b c
Probabilité 0.8 0.02 0.18
Code 0 11 10
H (S ) R H (S ) 1
R( n) nR H (S ( n) ) nR H (S ( n) ) 1
H (S (n) ) H (S ( n) )
R 1
n n
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Regroupement des symboles (3)
H (S (n) ) nR H (S ( n) ) 1
H (S ( n) ) H (S ( n) ) 1
R
n n n
Et comme les éléments de la séquence sont générés
indépendamment on a: [démonstration comme exercice]
H (S (n) ) nH ( S )
nH ( S ) nH ( S ) 1
R Sans regroupement
n n n
de symboles nous
1
H (S ) R H (S ) avions:
n
H (S ) R H (S ) 1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Regroupement des symboles (4)
• Sans regroupement de symboles nous avions:
H (S ) R H (S ) 1
1
H (S ) R H (S )
n
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple code de Huffman étendu (1)
• Reconsidérons la source de l’exemple précédent:
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Exemple code de Huffman étendu (2)
• L’encodage de Huffman de la source étendue donne:
Lettres aa ab ac ba bb bc ca cb cc
Proba. 0.64 0.016 0.144 0.016 0.0004 0.0036 0.144 0.00036 0.0324
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Inconvénients des codes de Huffman
étendus
• Dans l’exemple précédent on a vu qu’avec un regroupement
de 2 symboles on a pu atteindre une longueur du code très
proche de l’entropie.
• Le code de Huffman peut être étendu encore plus et
considérer un nouveau alphabet formé par un regroupement
de 3, 4, … n symboles donc 33, 34 , … ,3n éléments dans
l’alphabet.
• Cependant cette croissance exponentielle de la taille de
l’alphabet rend le système complexe:
• Exemple: pour un code d’ASCII de longueur 3 on obtient
un alphabet de taille 2563 =224 =16 Mb
• Dans cette situation, il faut utiliser d’autres méthodes
comme le codage arithmétique.
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Code de Huffman M-aire
• Le codage de Huffman non binaire est basé sur les mêmes
principes que le codage binaire avec une petite différence:
• On assigne moins de bits aux symboles les plus fréquents
et plus de bits aux symboles les moins fréquents.
• Les deux M’ (M ou M-1 ou …3 ou 2) moins fréquents
symboles ont la même longueur.
• Détermination de M’
• M’ désigne le nombre de symbole à regrouper en premier lieu
avant de commencer à construire l’arbre.
• Soit un alphabet de longueur n. La valeur de M’ est déterminé
selon la fonction suivante:
• M’=(M-1)+[n mod(M-1)] (i.e; M=3 et n=6 => M’=2+0=2 )
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Construction d’un Code de Huffman
ternaire (1)
Lettres a b c d e f
Probabilité 0.25 0.20 0.20 0.20 0.10 0.05
Code 0 1
a(.25) a(.25)
b(.2) b(.2)
c(.2) c(.2)
d(.2) d(.2)
0
e(.1)
fe(.15)
f(.05)
1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Construction d’un Code de Huffman
ternaire (2)
Lettres a b c d e f
Probabilité 0.25 0.20 0.20 0.20 0.10 0.05
Code 0 1 20 21
c(.2) c(.2)
0 b(.2)
d(.2) d(.2)
1
0
e(.1)
fe(.15)
2
f(.05)
1
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Construction d’un Code de Huffman
ternaire (3)
Lettres a b c d e f
Probabilité 0.25 0.20 0.20 0.20 0.10 0.05
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Construction d’un Code de Huffman
ternaire [Arbre]
Lettres a b c d e f
Probabilité 0.25 0.20 0.20 0.20 0.10 0.05
2
0 1
a b
0 2
1
c d
0 1
e f
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique
Code de Huffman Adaptatif
IFT-4003/7023 Compression de données Mohamed Haj Taieb, Département de génie électrique et de génie informatique