Algorithme de Huffman Mis au point en 1952 par David Huffman Compression de type statistique Idée voisine de celle du code morse coder ce qui est fréquent sur peu de place coder ce qui revient rarement sur un code plus long Code constituable dés lors que l’on a les statistiques de parution des lettres Huffman
2. Algorithme de Huffman (2) Principe de Huffman On calcul la probabilité de chaque symbole On tri Récursivement on regroupe les 2 valeurs les moins fréquentes Codage arithmétique Huffman
2. Algorithme de Huffman (3) On construit un arbre binaire : Avec l’arbre, on construit un dictionnaire : 10 -> 00 15 -> 01 90 -> 10 115 -> 110 180 -> 111 Huffman
a CODAGE DE HUFFMAN 0.40 Objectif : coder les lettres avec des longueurs fonction décroissante de leur probabilité afin de réduire le débit moyen de transmission b 0.18 c 0.10 d DES LETTRES AVEC DES PROBABILITES D ’APPARITION 0.10 e 0.07 f 0.06 g 0.05 h 0.04
Première étape a a 0.40 0.40 b b 0.18 0.18 c c 0.10 0.10 Les autres lettres ne sont pas traitées d d 0.10 0.10 e e 0.07 0.07 f f 0.06 0.06 g Regroupement des deux lettres de plus faible probabilité la probabilité du regroupement est la somme des deux probabilités 0.05 (gh) 0.09 h 0.04
a a 0.40 Même critère pour les étapes suivantes 0.40 b b 0.18 0.18 c c 0.10 0.10 d d 0.10 0.10 e Regroupement des deux lettres ou groupements de lettres de plus faible probabilité 0.07 (ef) f 0.13 0.06 g 0.05 (gh) h 0.09 0.04
a a 0.40 0.40 b b 0.18 0.18 c c 0.10 0.10 d d 0.10 0.10 e 0.07 (ef) f 0.13 0.06 (dgh) g 0.19 0.05 (gh) h 0.09 0.04
a a 0.40 0.40 b b 0.18 0.18 c c 0.10 0.10 (cef) d d 0.23 0.10 e 0.07 (ef) f 0.13 0.06 (dgh) g 0.19 0.05 (gh) h 0.04
a a 0.40 0.40 b 0.18 b 0.18 c c 0.10 (cef) d d 0.23 (bdgh) 0.10 0.37 e 0.07 (ef) f 0.06 (dgh) g 0.19 0.05 (gh) h 0.04
a a 0.40 0.40 b 0.18 b c c 0.10 (cef) (cefbdgh) d d 0.23 0.60 0.10 (bdgh) e 0.37 0.07 (ef) f 0.06 (dgh) g 0.05 Codage de Huffman (gh) h 0.04
a 0.40 a b 0.40 racine 0.18 b 0.18 c c 0.10 0.10 (cefbdgh) (cef) d 0.60 d 0.23 0.10 0.10 (bdgh) e 0.37 0.07 (ef) f 0.13 0.06 (dgh) Probabilité du regroupement g 0.19 0.05 (gh) h 0.09 0.04
a a b racine b c c (cefbdgh) (cef) d d (bdgh) e (ef) f (dgh) g (gh) Codage des branches h
a 1 a b racine 1 b c c (cefbdgh) (cef) d d (bdgh) e (ef) f (dgh) g (cef) d d (bdgh) CODE DE LA BRANCHE e (ef) f (dgh) g (gh) h
A chaque embranchement on complète le code par un bit marquant chacune 1 a b racine 1 b c c (cefbdgh) (cef) d d 01 (bdgh) e 00 CODE DE LA BRANCHE (ef) f (dgh) g A chaque embranchement on complète le code par un bit marquant chacune des deux branches qui en sont issues (gh) h
a 1 a b 001 racine 1 b c c 001 (cefbdgh) (cef) d d 01 (bdgh) e 00 (ef) (cef) d d 01 (bdgh) e 00 (ef) f CODE DE LA BRANCHE (dgh) g 000 (gh) h
a 1 a b 001 racine 1 b c c 011 001 (cefbdgh) 011 (cef) d d 01 (bdgh) e 011 (cef) d d 01 (bdgh) e 00 (ef) f 010 CODE DE LA BRANCHE (dgh) g 000 (gh) h
a 1 a b 001 racine 1 b c c 011 001 (cefbdgh) 011 (cef) d 0000 d 01 011 (cef) d 0000 d 01 (bdgh) e 00 (ef) f 010 CODE DE LA BRANCHE (dgh) g 000 (gh) h 0001
a 1 a b 001 racine 1 b c c 011 001 (cefbdgh) 011 (cef) d 0000 d 01 011 (cef) d 0000 d 01 (bdgh) e 0100 00 (ef) f 0101 010 CODE DE LA BRANCHE (dgh) g 000 (gh) h 0001
a 1 a b 001 racine 1 b c c 011 001 (cefbdgh) 011 (cef) d 0000 d 01 011 (cef) d 0000 d 01 (bdgh) e 0100 00 (ef) f 0101 010 CODE DE LA BRANCHE (dgh) g 000 00010 (gh) h 00011 0001
a 1 a b 001 1 racine b 001 c c 011 011 (cefbdgh) (cef) d 0000 d 01 0000 d 01 (bdgh) e 0100 00 (ef) Boucle du décodage f 010 0101 début à la racine ; progression dans le message jusqu’à une feuille : lettre décodée. (dgh) g 000 00010 (gh) h 00011 0001