Adloun

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 codescoût total par caractère
221
482
5123
8243

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.