Telechargé par bvouvou

TD1 td1PattMatch

publicité
Algorithmique du texte
TD 1 - Recherche de motif
Exercice I : Localisation par les bords ou les préfixes
On rappelle qu’un mot u est un bord d’un mot x s’il est différent de x et est à la fois préfixe et
suffixe de x. Si x n’est pas le mot vide, on note Bord (x) le plus long bord de x.
Soit x un mot non vide de taille m, la table des bords de x est un tableau d’entiers TB, de taille
m tel que pour i ∈ {0, . . . , m} :
TB[0] = −1
et, pour 1 ≤ i ≤ m, TB[i] = |Bord (x0 · · · xm−1 )|.
Soit x un mot de longueur m, on définit la table des préfixes de x notée Pref et dont les indices
vont de 0 à m − 1 par :
Pref[k] = |plus long préfixe commun entre x et xk · · · xm−1 |.
Question 1. Calculer la table des bords TB et la table des préfixes Pref de x = abbababba.
Question 2. Pour deux mots x et y, décrire de quelle manière on peut utiliser directement
la table des bords pour le mot x$y (où le symbole $ n’apparaı̂t ni dans x ni dans y) afin de
localiser toutes les occurrences du mot x dans le texte y. Discuter (en quelques lignes) de la
complexité en temps de cette méthode ?
Question 3. Donner une procédure analogue permettant de localiser toutes les occurrences de
x dans y et utilisant la table des préfixes d’un mot construit à partir de x et y.
Exercice II : Morris-Pratt et Knuth-Morris-Pratt
Question 4. Calculer la table des bords de x = aaabaa.
Question 5. Appliquer la méthode de Morris-Pratt pour la recherche du motif x = aaabaa
sur le texte y = aaabababaaabaabbaaab. On indiquera les positions successives de la fenêtre
coulissante et on justifiera les décalages de celle-ci au cours de la recherche.
Question 6. Rappeler la différence entre la méthode de Morris-Pratt (MP) et celle KnuthMorris-Pratt (KMP). Appliquer la méthode de Knuth-Morris-Pratt pour la recherche du motif
x = aaabaa sur le texte y = aaabababaaabaabbaaab. Quelle différence y a-t-il avec l’exécution
de la question 5 précédente ?
Téléchargement