informatique (MP2I/MPI) · Chapitre 16 · Application directe du cours
Le codage de Huffman quand toutes les fréquences sont égales
Algorithmes gloutons · niveau 2
É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.
Exercices semblables
- Le glouton n'échoue pas au hasard corrigé
- Ce qui casse quand les activités sont pondérées corrigé
- Huffman sur un alphabet d'un seul caractère corrigé
- Problème — Huffman de bout en bout : coder, décoder, mesurer corrigé
- Problème — Tâches unitaires : quels ensembles sont réalisables, et pourquoi le glouton les trouve corrigé