Le codage de Huffman quand toutes les fréquences sont égales
Exercice · niveau 2 · informatique (MP2I/MPI), chapitre 16 — Algorithmes gloutons
Énoncé
Que produit l'algorithme de Huffman si les caractères ont la même fréquence ? Traiter , et , et comparer à un code de longueur fixe.
Corrigé
Mesuré, pour caractères de fréquence :
| longueurs des codes | coût total | par caractère | |
|---|---|---|---|
| 2 | 2 | 1 | |
| 4 | 8 | 2 | |
| 5 | 12 | 3 | |
| 8 | 24 | 3 |
Quand est une puissance de deux, l'arbre de Huffman est parfaitement équilibré et tous les codes ont la longueur : Huffman ne gagne rien, et ne peut rien gagner. C'est cohérent avec le théorème : le code obtenu est optimal, et l'optimum est ici le code de longueur fixe.
Quand n'est pas une puissance de deux, Huffman fait mieux qu'un code fixe. Pour , il donne trois codes de bits et deux de , soit bits pour cinq caractères ( bits en moyenne), contre bits chacun, soit . Un gain de sur des fréquences parfaitement uniformes — là où l'intuition dirait qu'il n'y a rien à prendre.
Ce que la mesure révèle. Huffman n'exploite pas seulement le déséquilibre des fréquences ; il exploite aussi le fait qu'un code de longueur fixe gaspille bits par caractère. L'entropie vaut bits, Huffman en emploie , et le code fixe .
La conséquence pratique. Si l'on doit décider s'il vaut la peine de coder un texte par Huffman, ce n'est pas la longueur du texte qu'il faut regarder, c'est l'écart entre son entropie et . Sur un texte dont toutes les lettres sont équiprobables et dont l'alphabet compte symboles, le gain est nul — et le stockage de la table est une perte sèche.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.