Les fichiers sont ici
On va maintenant chercher à écrire un decompresseur lz78.
Dans le compresseur, nous avions codé le dictionnaire par un tableau T.
Si on note dict[i] le mot en position i du dictionnaire,
T[i][c] est la position où se trouve le mot dict[i]c (le mot en
position i du dictionnaire auquel on a ajouté la lettre c)
Dans le décompresseur, le dictionnaire va être codé par deux tableaux,
un tableau P et un tableau C, qui correspondent au tableau
"inverse" du tableau T: si T[i][c] = j, alors C[j] = c et P[j] = i.
L'idée est que C[j] est la dernière lettre du mot en position j du
dictionnaire, et P[j] est la position du dictionnaire où se trouve
le mot dict[j] privé de sa dernière lettre.
Autrement dit, le mot en position j du dictionnaire est le mot C[P[P[P..[j]]]]C[P[P[...[j]]]]...C[P[P[j]]]C[P[j]]C[j]
Dans le décompresseur, on fonctionne uniquement avec les tableaux C et
P, et rien d'autre.
test.lz78