texte apr`es transformation est mˆeme l´eg`erement plus long que le texte initial. En revanche, il est sous
une forme qui va permettre d’exploiter de mani`ere significative des r´ep´etitions de motif qui se produisent
dans ce dernier. Des r´ep´etitions de motif dans ce dernier conduisent en effet `a des r´ep´etitions de symboles
identiques dans la s´equence z1. . . zn. Une tr`es bonne introduction `a cette transformation est donn´ee dans
l’article http://www.dogma.net/markn/articles/bwt/bwt.htm.
Question 3 Lire cet article et impl´ementer la transformation de Burrows-Wheeler ainsi que la trans-
formation inverse de mani`ere na¨ıve.
Question 4 Quelle est la complexit´e de votre impl´ementation dans le pire des cas si l’on compte une
comparaison entre octets de mani`ere unitaire ?
Question 5 Lire maintenant l’article de Burrows et Wheeler [1] (et notamment la section 4) qui se
trouve sur http://www.hpl.hp.com/techreports/Compaq-DEC/SRC-RR-124.pdf. On consultera ´egalement
l’article de McCreight de construction d’un arbre suffixe .
Question 6 Expliquer comment fonctionne l’algorithme Q de la section 4 dans l’article de Burrows-
Wheeler. Quelle est sa complexit´e dans le pire des cas ? Impl´ementer l’algorithme Q ainsi que l’algorithme
`a base d’arbres suffixes de McCreight [2]. Comparer vos impl´ementations sur diff´erents exemples de texte.
Question 7 Proposer ´eventuellement des am´eliorations `a l’algorithme Q.
5 La transformation “Move to front”
Question 8 Impl´ementer l’algorithme de compression de texte consistant `a effectuer dans un premier
temps la transformation de Burrows-Wheeler puis `a appliquer l’algorithme de Huffman adaptatif. Essayez
cet algorithme sur plusieurs types de fichier texte. Am´eliorez-vous le taux de compression du texte par
rapport `a la m´ethode consistant `a utiliser uniquement l’algorithme de Huffman adaptatif ? Proposer une
explication de ce ph´enom`ene.
Comme cela a ´et´e bri`evement expliqu´e dans la section 4 (et expliqu´e plus en d´etail dans l’article
[1]), la transformation de Burrows-Wheeler conduit naturellement `a une permutation z1. . . zndu texte
initial comportant des plages de symboles identiques. Un des moyens d’exploiter cette structure est
de transformer la suite d’octets z1. . . znen une suite d’entiers positifs u1. . . unpar la transformation
“move-to-front”. Le principe en est extrˆemement simple. La transformation “Move-to-front” consiste
tout simplement `a effectuer la transformation suivante A titre d’illustration, si le tableau Yest constitu´e
Algorithme 2 Move-to-Front
INPUT: z0. . . zn−1
OUTPUT: u0. . . un−1Y←tableau o`u l’on plac´e tous les caract`eres de l’alphabet du texte dans un
ordre pr´ed´efini.
for i= 0 to n−1do
ui←nombre de caract`eres pr´ec´edant le caract`ere zidans le tableau Y
placer le caract`ere zien tˆete du tableau Yen d´ecalant les autres caract`eres du tableau vers la droite
par [0a0,0, b0,0c0,0r0] et que la suite zest donn´ee par la chaˆıne de caract`eres ”caraab”, la suite uproduite
est ´egale `a 2,1,3,1,0,3. Si la suite z0. . . zn−1contient de nombreuses rafales de symboles identiques, on
s’attend notamment `a ce que le 0 apparaisse tr`es souvent dans la s´equence produite.
Question 9 Impl´ementer la transformation “move-to-front”, ainsi que la transformation inverse.
Question 10 Mesurer le taux de compression sur diff´erents types de fichier obtenus en effectuant
d’abord la transformation de Burrows-Wheeler, puis la transformation Move-to-front et enfin l’algorithme
de Huffman.
4