C’est
en 1977 que Jacob Ziv et Abraham Lempel ont publié un article qui est à la
base de tous les algorithmes à dictionnaire que nous utilisons actuellement.
En 1984, l’américain Terry Welch améliore l’algorithme précédent et dépose
un brevet. C’est la naissance de l’algorithme LZW. Il est plus performant que
les méthodes statistiques. IL sert de base à la norme V42bis du CCITT (Comité
Consultatif Internationale de Télégraphie et Téléphonie) que nous utilisons
dans nos modems.
Le principe de l’algorithme LZW, c’est d’utiliser un dictionnaire dynamique
qui contient des motifs du fichier traité.
L’inconvénient des algorithmes à dictionnaire, c’est qu’il est à priori
nécessaire de transmettre le dictionnaire avec les données, ce n’est pas le
cas avec LZW. Le dictionnaire est construit à la compression et reconstruit à
la décompression.
Ce qui est également intéressant, c’est qu’il est inutile de lire et
d’étudier le fichier avant de le compresser. La compression s’effectue au fur
et à mesure de la lecture, le compresseur détectant au fur et à mesure les
séquences qui se répètent.
Enfin,
on peut combiner LZW et un algorithme de codage statistique. C’est ce que
font des programmes comme ARJ ou PKZIP qui utilisent LZW puis Shannon Fano.