1. D´ecompresser le texte compress´e :
“1R1O1U1D0(1,3)0(1,2)1-1E1T1-1S1C0(1,2)1B1I0(3,3)0(17,5)”.
2. Le texte initial est repr´esent´e par un tableau Tde caract`eres, index´e de 0 `a n−1. Le
texte compress´e est repr´esent´e par un tableau Cde bits.
(a) On suppose que l’on dispose des proc´edures suivantes :
EcrirePositionLongueur(C,i,pos,lg) qui, ´etant donn´es un tableau Cde bits,
un indice i, une position pos et une longueur lg remplit C[i, i + 11] avec les 12 bits
qui codent pos et C[i+ 12, i + 14] avec les 3 bits qui codent lg.
CalculerPositionLongueur(T,i,pos,lg) qui, ´etant donn´es un tableau Tde car-
act`eres et un indice icalcule la longueur lg (inf´erieure ou ´egale `a 23) du plus long
motif T[i, i +lg −1] qui apparaˆıt dans T[0, i −1] et la position pos de la premi`ere
occurrence de T[i, i +lg −1].
´
Ecrire un algorithme de compression.
(b) On suppose que l’on dispose des proc´edures suivantes :
LireCaractere(C,i,car) qui, ´etant donn´es un tableau Cde bits et un indice i,
calcule le caract`ere car cod´e par les 8 bits de C[i, i + 7].
LirePositionLongueur(C,i,pos,lg) qui, ´etant donn´es un tableau Cde bits et
un indice i, calcule le nombre pos cod´e par les 12 bits de C[i, i + 11] et le nombre
lg cod´e par les 3 bits de C[i+ 12, i + 14].
´
Ecrire un algorithme de d´ecompression.
3. Exposer une ou plusieurs m´ethodes pour implanter la proc´edure CalculerPositionLongueur.
4. Comme la position est cod´ee sur 12 bits, il a fallu limiter la taille du texte initial `a 212
caract`eres. Comment faire pour traiter des textes plus grands ?
2