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 ?