Codage de Huffman
Un texte se code naïvement à longueur fixe :
1. Lien avec le cours
Le projet mobilise le chapitre 1 : la loi de masse empirique d'une source de caractères, et surtout l'espérance d'une fonction d'une variable aléatoire discrète, car la longueur moyenne d'un code est
où
est la probabilité du symbole , est la longueur en bits de son mot de code.
2. Structure du code
Le modèle est la source de caractères, une classe à l'API du projet sur les lois usuelles ; la longueur moyenne, le critère du projet, est une fonction séparée.
class Source:
"""Discrete source over an alphabet (usual-laws project API)."""
def __init__(self, symbols, probs):
...
def pmf(self, k):
...
def rvs(self, size, rng):
...
def average_length(probs, lengths):
"""Expected code length E(L) = sum_k p_k * l_k."""
...Tests imposés. Le test aller-retour, decode(encode(text)) == text sur un texte entier, la propriété qui fait un code utilisable ; et la longueur moyenne de l'exemple à
3. Travail demandé
- La source. Estimer la PMF empirique des caractères d'un long texte français (texte fourni ou de votre choix, lettres non accentuées et espace). Tracer le diagramme en bâtons trié : la loi est-elle proche de l'uniforme ?
- L'algorithme. Implémenter le codage de Huffman : tant qu'il reste plus d'un nœud, fusionner les deux nœuds de plus faibles probabilités en un nœud parent portant leur somme ; les mots de code se lisent sur les chemins de l'arbre. Vérifier sur un exemple à
symboles calculable à la main. - Le gain. Calculer
pour votre code et le comparer aux bits du code fixe. Quel taux de compression ? Vérifier qu'aucun mot de code n'est le préfixe d'un autre, la propriété qui rend le décodage possible. - Vérification Monte-Carlo. Tirer
caractères selon la PMF, les coder, et confronter la longueur moyenne empirique à : c'est la loi des grands nombres appliquée à un problème de compression. - Ouverture. Comparer
à la quantité , donnée ici sans théorie. Constater l'encadrement : cette borne, l'entropie, est le sujet de la théorie de l'information.
4. Livrables
Le notebook reproductible des modalités communes, avec l'arbre de l'exemple à
