-
algorithme lzw
lors d'une etude de cet algorithme il apparait l'emission du code 'sp' signifiant qu'à partir de ce point les adresses ne seront plus émises suir 8 bits mais 9 c bien cela? on ma dit ke cela permet de gerer les adresses de tailles variables mais je n'en vois aps l'interet cela ne suffirai pas sur 8 bits?
merci
-
Non, celà ne suffirait pas sur 8 bits, pour la simple et bonne raison qu'en général, les caractères sont codés sur 8 bits, donc, une fois que tu as rempli ton dictionnaire avec les 256 caractères standards, il ne te reste plus de place pour mettre les nouvelles chaînes rencontrées. A priori, tu dois au moins commencer avec des caractères de 9 bits (LZW a cette propriété d'allonger la taille de codage des caractères), ce qui te permet 256 chaînes supplémentaires. En general on ajoute au moins 3 bits (11 ou 12 bits), pour avoir un dictionnaire avec au moins 4096 entrées, ce qui permet de stocker beaucoup plus de chaînes, et donc, sur un texte moyen, d'économiser beaucoup plus de places.
J'ai entendu parlé du LZW à taille variables mais je n'ai rien lu à propos. Celà dit, il faut que tu sois sur que ton 'sp' n'apparaissent pas dans le texte ... or il existe quand même plusieurs mots aussi bien en francais qu'en anglais qui contiennent cette suite. Je songerais plutot à commencer avec des codages de 12 bits, et, au départ de la compression et de la décompression, directement ajouter un caractère qui ne correspond à aucun autre, et qui signale quand est-ce qu'on augmente la taille des entrées.
ex: de 0 à 255 -> codage des caracères de bases
256 -> code pour l'augmentation du noùmbre de bits
Ensuite il te reste (4096 - 257) entrées dans ton dictionnaires, quand elles sont toutes remplies, tu écris le code 256, et tu ajoutes un bit aux codages des chaines, ce qui te fait 4096 entrées supplémentaires .. et ainsi de suite ..
Sinon va voir là http://www.developpez.net/forums/viewtopic.php?t=188683 , il y a les références d'un ouvrage que tu devrais consulter
-
merci bcp c tres gentil d'avoir pris le tps de repondre je vais consulter tout cela traquilement :D
merci encore