Information, calcul et communication EPFL - GC+SIE - Semestre d’automne 2016-2017
Algorithme de Huffman
Nous nous int´eressons ici `a un code assez similaire au code de Shannon-Fano, mais qui est optimal
(pour une compressions sans perte) : on ne peut pas faire plus court ! Il s’agit du code de Huffman.
1 Description de l’algorithme de Huffman
Comme pour l’algorithme de Shannon-Fano vu en cours, on part du tableau des lettres et de leur
nombre d’apparition (ou probabilit´e).
L’algorithme proc`ede alors it´erativement comme suit :
1. Trouver les 2 lettres les moins fr´equentes et regrouper les sous une “question” qui les distingue.
En cas d’´egalit´e, en choisir 2 au hasard (¸ca ne change pas la longueur moyenne du code).
Par exemple, si les 2 lettres les moins fr´equentes sont A et F, la question serait (par exemple)
“est-ce A ?”.
2. Dans le tableau des nombres d’apparitions des lettres, supprimer les 2 derni`eres lettres consid
’er´ees et les regrouper comme une seule nouvelle “lettre”, avec comme nombre d’apparitions la
somme des deux nombres.
Pour continuer sur l’exemple pr´ec´edent, si A apparaissait 1 fois et F 2 fois, alors on supprime A
et F du tableau et on introduit la nouvelle “lettre” “A-F” (qui veut dire “A ou F”) avec comme
nombre d’apparitions 3.
3. Recommencer en 1 tant qu’il y a des “lettres”.
Une fois l’arbre des questions construit, proc´eder comme pour le code de Shannon-Fano en d´ecidant
d’affecter le symbole 0`a toutes les r´eponses “non” et le symbole 1`a toutes les r´eponses “oui”.
2 Exemple
Consid´erons les lettres A,B,C,D et E avec les probabilit´es respectives de 1
3,
1
8,
1
8,
1
4et 1
6; par exemple
dans (sans les espaces) :
A A AD AD ADE ABCDE ABCDE ABCDE
On commence donc avec le tableau
A B C D E
probabilit´e 1
3
1
8
1
8
1
4
1
6
On regroupe donc B et C (les deux moins probables) sous une question “est-ce C ?”. Puis on les
regroupe dans le tableau pour recommencer :
1