La transmission d'un texte s'accommode mal d'erreurs et, pour ce type de signal, il n'est donc question que de codage sans perte.
Les techniques rencontrées dans les applications sont des variantes des trois techniques de codage suivantes:
Cette méthode est utilisée par les logiciels de compression les plus courants tels que ARC ou PKzip.
Examinons le fonctionnement du codage de HUFFMAN.
La première étape de la méthode consiste à réorganiser les symboles par ordre de probabilité décroissante. Chaque symbole est alors associé à une feuille d'un arbre en construction. On relie ensuite les feuilles en créant un noeud auquel on associe la somme des probabilités des deux symboles correspondants. À chaque étape, on fusionne les 2 noeuds (ou feuilles) ayant les probabilités les plus faibles. On répète ce processus jusqu'à ce qu'il ne reste plus qu'un seul noeud dont la probabilité associée vaut 1.
Exemple. Considérons une source à 4 symboles
A1, A2, A3, A4 respectivement de probabilité
p(A1) = 0, 5, p(A2) = 0, 25, P(A3) = 0, 125, p(A4) = 0, 125.
Dans cet exemple, les symboles ont déjà été réorganisés par ordre
décroissant de leur probabilité respective. L'arbre est construit
comme indiqué à la figure 2.31.
Une fois l'arbre construit, on associe à chaque branche de l'arbre
un symbole 0 ou 1. Il suffit de redescendre l'arbre jusqu'aux
symboles pour déterminer le code correspondant
A1 | 1 | ||
A2 | 01 | ||
A3 | 001 | ||
A4 | 000 |
Appelons l (Ai) le nombre de bits associé au symbole Ai.
Dès lors, nous avons
l (A1) | = | 1 | |
l (A2) | = | 2 | |
l (A3) | = | 3 | |
l (A4) | = | 3 |
Le nombre moyen de bits utilisés par symbole, M, est donné par
M = p(Ai)l (Ai) = 1, 75 | (2.14) |
H(X) = - p(Ai)log2p(Ai) = 1, 75 | (2.15) |
Il vient donc que le code obtenu par la méthode de HUFFMAN est optimal. Il faut remarquer que l'association triviale (A1 = 00, A2 = 01, A3 = 10, A4 = 11) aurait fourni un code de 2 bits par symboles. L'exemple précédent pourrait faire croire que le code de HUFFMAN conduit toujours à M = H(X). Ce n'est certes pas le cas et, de plus, la solution n'est pas nécessaire unique. Ainsi, dans l'exemple précédent, on peut permuter les mots de code de A3 et A4 sans affecter la valeur de M.