Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
Cours Algorithmique, 2eme partie AS IUTCompression LZW
Anne Vilnathttp://www.limsi.fr/Individu/anne/coursAlgo
Generalites sur ce code
Un peu d’histoire...
Premiere version en 1977 par Abraham Lempel et Jakob Ziv
Repris en 1984 par Terry Welch... d’ou : LZW
Principe
Pas d’analyse de donnees prealable
Construction d’une table de chaınes de caracteres
Pour comprimer : un code pour remplacer une chaıne
A la base des programmes de compression zip et des formats gif ettiff
Algo de compression
Algo
Dictionnaire D, Tampon T de caracteresInitialiser le dictionnaire DT ← lire caractereTant qu’il reste des carateres a lire faire
car ← lire caracteresi T + car est dans Dalors T ← T + carsinon
ecrire le code du tamponajouter T + car dans DT ← car
finSifinTantQueEcrire le code de T
Exemple
Dictionnaire initial :
E T W
0 1 2 3
Entree : la chaıne TWEET TWEET
Variables : T tampon, car caractere
Sortie : initialisee a la chaıne vide
Exemple
T : T
car : W
D :
E T W TW
0 1 2 3 4
Sortie : 1
Exemple
T : W
car : E
D :
E T W TW WE
0 1 2 3 4 5
Sortie : 12
Exemple
T : E
car : E
D :
E T W TW WE EE
0 1 2 3 4 5 6
Sortie : 120
Exemple
T : E
car : T
D :
E T W TW WE EE ET
0 1 2 3 4 5 6 7
Sortie : 1200
Exemple
T : T
car :
D :
E T W TW WE EE ET T
0 1 2 3 4 5 6 7 8
Sortie : 12001
Exemple
T :
car : T
D :
E T W TW WE EE ET T T
0 1 2 3 4 5 6 7 8 9
Sortie : 120013
Exemple
T : T
car : W
D :
E T W TW WE EE ET T T
0 1 2 3 4 5 6 7 8 9
Sortie : 120013
Exemple
T : TW
car : E
D :
E T W TW WE EE ET T T TWE
0 1 2 3 4 5 6 7 8 9 10
Sortie : 1200134
Exemple
T : E
car : E
D :
E T W TW WE EE ET T T TWE
0 1 2 3 4 5 6 7 8 9 10
Sortie : 1200134
Exemple
T : EE
car : T
D :
E T W TW WE EE ET T T TWE EET
0 1 2 3 4 5 6 7 8 9 10 11
Sortie : 120013461
Exemple : resultat
Pour : TWEET TWEET : 1 2 0 0 1 3 4 6 1
... pas tres spectaculaire!
mais pour : TWEET TWEET TWEET :1 2 0 0 1 3 4 6 8 10 1
Algo de decompression
Algorithme
Dictionnaire D, Tampon T de caracteresInitialiser le dictionnaire Dancien← lire codeecrire trad(ancien)Tant qu’il reste des carateres a lire faire
nouveau ← lire codesi nouveau n’est pas dans D
alors T ←trad(ancien) + premier car de trad(ancien)sinon T ←trad(nouveau)
finSiajouter trad(ancien) + premier car de T a Dancien← nouveauecrire T
finTantQue
Exemple
Dictionnaire initial :
E T W
0 1 2 3
Entree : la chaıne codee 1 2 0 0 1 3 4 6 1
Variables : T tampon, ancien et nouveau contenant un code
Sortie : initialisee a la chaıne vide
Exemple
ancien : 1
nouveau
T
D :
E T W
0 1 2 3
Sortie : T
Exemple
ancien : 1 → 2
nouveau : 2
T : W
D :
E T W TW
0 1 2 3 4
Sortie : TW
Exemple
ancien : 2 → 0
nouveau : 0
T : E
D :
E T W TW WE
0 1 2 3 4 5
Sortie : TWE
Exemple
ancien : 0 → 1
nouveau : 0
T : E
D :
E T W TW WE EE
0 1 2 3 4 5 6
Sortie : TWEE
Exemple
ancien : 0 → 1
nouveau : 1
T : T
D :
E T W TW WE EE ET
0 1 2 3 4 5 6 7
Sortie : TWEET
Exemple
ancien : 1 → 3
nouveau : 3
T :
D :
E T W TW WE EE ET T
0 1 2 3 4 5 6 7 8
Sortie : TWEET
Exemple
ancien : 3 → 4
nouveau : 4
T : TW
D :
E T W TW WE EE ET T T
0 1 2 3 4 5 6 7 8 9
Sortie : TWEET TW
Exemple
ancien : 4 → 6
nouveau : 6
T : EE
D :
E T W TW WE EE ET T T TWE
0 1 2 3 4 5 6 7 8 9 10
Sortie : TWEET TWEE
Exemple
ancien : 6 → 1
nouveau : 1
T : T
D :
E T W TW WE EE ET T T TWE EET
0 1 2 3 4 5 6 7 8 9 10 11
Sortie : TWEET TWEET
Remarques
Force et faiblesse...
Force de l’algorithme : construction du dictionnaire au fur eta mesure de la decompression
l’algo de compression peut engendrer un code avant que celuide decompression ne puisse le definir
Problemes
Gestion du dictionnaire : peut devenir tres grand
Longueur des chaınes a coder variable
Recherche dans D : liste triee des chaınes
A la base des programmes de compression zip et des formats gif ettiff
Solutions
Quelles structures de donnees?
Dictionnaire : couple < code/car >, comme 4/E > pourTWE
Comparaison des chaınes : hachage
Decompression
Recherche d’un code, plus facile qu’une chaınenecessite d’un tampon : pilecode de fin de message
Conclusion
Codage LZW
Methode excellente lorsque les donnees comportent desrepetitions variees comme texte en francais ouen anglais
Taux de compression d’au moins 50%
Compression de fichiers binaires : resultats plus variables