Algorithmique du texte
TD 1 - Recherche de motif
Exercice I : Localisation par les bords ou les pr´efixes
On rappelle qu’un mot uest un bord d’un mot xs’il est diff´erent de xet est `a la fois pr´efixe et
suffixe de x. Si xn’est pas le mot vide, on note Bord(x) le plus long bord de x.
Soit xun mot non vide de taille m, la table des bords de xest un tableau d’entiers TB, de taille
mtel que pour i∈ {0, . . . , m}:
TB[0] = −1 et, pour 1 ≤i≤m,TB[i] = |Bord(x0· · · xm−1)|.
Soit xun mot de longueur m, on d´efinit la table des pr´efixes de xnot´ee Pref et dont les indices
vont de 0 `a m−1 par :
Pref[k] = |plus long pr´efixe commun entre xet xk· · · xm−1|.
Question 1. Calculer la table des bords TB et la table des pr´efixes Pref de x=abbababba.
Question 2. Pour deux mots xet y, d´ecrire de quelle mani`ere on peut utiliser directement
la table des bords pour le mot x$y(o`u le symbole $n’apparaˆıt ni dans xni dans y) afin de
localiser toutes les occurrences du mot xdans le texte y. Discuter (en quelques lignes) de la
complexit´e en temps de cette m´ethode ?
Question 3. Donner une proc´edure analogue permettant de localiser toutes les occurrences de
xdans yet utilisant la table des pr´efixes d’un mot construit `a partir de xet y.
Exercice II : Morris-Pratt et Knuth-Morris-Pratt
Question 4. Calculer la table des bords de x=aaabaa.
Question 5. Appliquer la m´ethode de Morris-Pratt pour la recherche du motif x=aaabaa
sur le texte y=aaabababaaabaabbaaab. On indiquera les positions successives de la fenˆetre
coulissante et on justifiera les d´ecalages de celle-ci au cours de la recherche.
Question 6. Rappeler la diff´erence entre la m´ethode de Morris-Pratt (MP) et celle Knuth-
Morris-Pratt (KMP). Appliquer la m´ethode de Knuth-Morris-Pratt pour la recherche du motif
x=aaabaa sur le texte y=aaabababaaabaabbaaab. Quelle diff´erence y a-t-il avec l’ex´ecution
de la question 5 pr´ec´edente ?