Bon je te fais un cours, tu as intérêt à t'en servir parceque je me suis fait chier à essayer d'être clair
1) Tu pars d'une table d'occurences où tous les caractères ont la même probabilité : 1.
2) Tu construis l'arbre associé à cette table : en fait tu penses bien que pour l'instant rien n'est compressé, comme tous les caractères ont la même occurence, chaque octet sera codé sur 8 bits par l'arbre...
3) Tu compresses avec cet arbre, disons 128 octets du fichier (saches que moins tu compresses de caractères à la fois plus ça va être long... Mais plus ça va être efficace. On peut pas tout avoir
4) En encodant ces 128 octets, tu as compté la fréquence d'apparition de chacun (= mis à jour la table d'occurences). Tu peux donc reconstruire l'arbre avec la table qui s'est améliorée depuis le début !
5) Et c'est repartit pour 128 octets, hop, étape 3 !
Tu vois que petit à petit l'arbre devient de plus en plus efficace, il s'adapte au fichier. Donc si on a beaucoup de 'a' à un endroit d'un fichier, puis plus loin beaucoup de 'b', la compression va être bien meilleur qu'avec le Huffman "de base" qui aurait compté tous les 'a' et tous les 'b' pour l'ensemble du fichier.
Avec le Huffman adaptatif, l'arbre va se construire de façon à privilégier les 'a' à l'endroit où il y en a le plus, puis avec l'augmentation du nombre de 'b' la tendance va s'inverser et se sont les 'b' qui sont codés sur le plus petit nombre de bits *<|: o)