Vous êtes sur la page 1sur 6

Université de Rouen Normandie Master Informatique

UFR Sciences et Techniques 2018-2019

Algorithmique du texte
Contrôle continu no 1
Date : 6 novembre 2018. Durée : 1 h. Documents, baladeurs, casques audio, oreillettes, cal-
culatrices, mobiles, tablettes, portables... interdits. Le barème est donné à titre indicatif.
Exercice 1 (4 points.)
Soit x un mot non vide. Soit p une période de x. Montrez que
kp est une période de x si et seulement si kp 6 |x|
pour tout entier naturel non nul k.
Exercice 2 (4 points.)
Soit x et u deux mots tels que x est un suffixe de xu. Montrez qu’alors x est un suffixe de
xu k pour tout entier naturel k.
Exercice 3 (6 points.)
1) Énoncez le lemme de périodicité de Fine et Wilf.
2) Quelle est la forme des plus longs mots qui admettent 2 et 3 comme périodes mais pas 1 ?
3) Même question mais avec 5 et 6 en lieu et place de 2 et 3.
4) De manière générale maintenant, quelle est la forme des plus longs mots qui admettent p
et p + 1 comme périodes mais pas 1 ? (Vous supposerez acquis que le plus grand diviseur commun
à n et n + 1 est égal à 1 pour tout naturel non nul n.)

Exercice 4 (6 points.)
Inventez une méthode strictement séquentielle (sans retour en arrière sur le texte) qui per-
met de faire la recherche du mot x = abb dans tout texte y avec un nombre de comparaisons
asymptotiquement inférieur ou égal à 35 |y | (et donc strictement inférieur à 2|y |).
Vous pouvez vous contentez de recourir au dessin d’un automate déterministe à ensemble
d’états terminaux vide dont :
— chaque état spécifie la connaissance du facteur du texte dans la fenêtre glissante sous la
forme d’une suite de symboles comme : un gros point « • » pour signifier une lettre inconnue, une
lettre pour signifier cette même lettre, une lettre avec « 6= » devant pour signifier « n’importe quelle
lettre sauf celle-là », etc. ;
— chaque état spécifie, à l’aide du souligné « _ », l’emplacement du facteur sur lequel agit
la comparaison avec la lettre indiquée sur les deux flèches issues de l’état ;
— chaque flèche est étiquetée par une lettre précédée de « = » ou « 6= » puis, si la fenêtre
glissante est décalée, une virgule et la valeur du décalage ;
— chaque boucle est accompagnée d’un nombre relatif dont la valeur est le quotient maximum
de la division euclidienne du nombre de comparaisons effectuées durant l’exécution de la boucle (de
la longueur de la boucle donc) par la somme des décalages effectués.
Dans le cas contraire, vous énoncerez votre algorithme, en établirez la preuve puis la complexité
en nombre de comparaisons.
Université de Rouen Normandie Master Informatique
UFR Sciences et Techniques 2018-2019

Algorithmique du texte
Contrôle continu no 2
Date : 11 décembre 2018. Durée : 1 h. Documents, baladeurs, casques audio, oreillettes,
calculatrices, mobiles, tablettes, portables... interdits. Le barème est donné à titre indicatif.
Exercice 1 (5 points.)
Pour le mot x = ababaabaacab :
1) Dressez, dans un même tableau, les tables bon-préf et meil-préf de x.
2) Dessinez l’automate de Simon, c’est-à-dire l’automate complet déterministe qui reconnait
l’ensemble des mots de suffixe x mais qui est privé de ses flèches nulles. Vous adjoindrez à l’étiquette
a de chacune des flèches arrière (p, a, q) son décalage défini comme la quantité |p| − |q| + 1.
Exercice 2 (7 points.)
1) Dessinez l’implantation de Aho-Corasick de l’automate qui reconnait toutes les occurrences
des mots de l’ensemble {ab, abaa, abab, babababa} dans n’importe quel texte.
2) La fonction de suppléance f de l’implantation que vous venez de dessiner n’est pas opti-
male : il existe par exemple plusieurs états p tels que l’ensemble des étiquettes des flèches partant
du suppléant f (p) est inclus (au sens large) dans celui associé à p. Dessinez la meilleure optimisation
possible de f . Autrement dit, agissez « à la Knuth-Morris-Pratt ».
Exercice 3 (7 points.)
1) Pour l’algorithme de Boyer-Moore, en notant x le mot cherché, m la longueur de x et y le
texte dans lequel x est cherché, donnez l’expression du décalage appliqué à la fenêtre lorsque son
contenu est y [j − m + 1 . . . j] et que y [j − m + 1 + k] 6= x[k] à l’aide de l’opérateur max et des
tables bon-suff et dern-occ.
2) Donnez les valeurs des tables bon-suff et dern-occ pour le mot x = aabcaaabaaa.
3) Pour ce même mot x, donnez les décalages appliqués à la fenêtre glissante lorsque le
contenu de cette dernière se termine par :
a) b ;
b) c ;
c) d ;
d) ba ;
e) ca ;
f) da ;
g) baa ;
h) caa ;
i) daa ;
j) aaaa ;
k) caaa ;
l) daaa ;
m) bbaaa ;
n) cbaaa ;
o) dbaaa ;
p) cabaaa.
Algorithmique du texte
2018-2019 | 4

Ne vous contentez pas de donner les valeurs des décalages : toute réponse ne sera prise en compte
qu’à condition 1) d’être précédée d’une expression qui fait explicitement apparaitre l’opérateur max
et des valeurs des tables citées plus haut et 2) d’être le résultat de l’évaluation de ladite expression.
Université de Rouen Normandie Master Informatique
UFR Sciences et Techniques 2018-2019

Algorithmique du texte
Contrôle continu de substitution
Date : 17 décembre 2018. Durée : 1 h. Documents, baladeurs, casques audio, oreillettes,
calculatrices, mobiles, tablettes, portables... interdits. Le barème est donné à titre indicatif.
Exercice 1 (2 points.)
Pour le mot x = assassinas, dessinez l’automate de Simon. Indiquez le décalage des flèches
arrière (le décalage de la flèche arrière (p, a, q) est la quantité |p| − |q| + 1).
Exercice 2 (9 points.)
Pour l’ensemble de mots X = {ara, haras, rat} :
1) Dessinez l’implantation de Aho-Corasick de l’automate qui reconnait toutes les occurrences
des mots de X. Numérotez les états (les numéros seront utilisés dans la question suivante).
2) Donnez la suite des numéros des états traversés après la lecture de chacune des lettres du
texte y = hararat dans la phase de recherche de l’algorithme associé.
3) Donnez la valeur des vecteurs de bits construits dans la phase d’initialisation de l’algorithme
petit-automate (parfois dénommé « shift-and »).
4) Donnez la valeur du vecteur de bits obtenu après la lecture de chacune des lettres du texte
y = hararat dans la phase de recherche de l’algorithme petit-automate.
Exercice 3 (9 points.)
Commençons par remarquer que l’expression suivante de la phase de recherche de l’algorithme
de Knuth, de Morris et de Pratt lui donne un aspect d’algorithme de recherche des occurrences de
x dans y à fenêtre glissante de longueur m :
j ← 0
i ← 0
tant que j 6 n − m faire
tant que i < m ∧ x[i ] = y [j + i ] faire
i ← i +1
si i = m alors
signaler une occurrence de x à la position gauche j dans y
j ← j + i − meil-préf [i ]
i ← max{0, meil-préf [i ]}
On cherche à rendre plus performante cette phase de recherche en s’appuyant sur la table des
décalages de l’algorithme de Horspool (autrement dit de la table dern-occ appliquée uniquement à
la lettre la plus à droite dans la fenêtre) : il s’agit de conserver la linéarité du premier algorithme
tout en progressant éventuellement plus rapidement sur le texte grâce à la table du second.
1) Proposez une adaptation du pseudo-code donné plus haut qui réponde aux attendus et qui,
donc, dépende de dern-occ[y [j + m − 1]].
2) Illustrez votre adaptation en considérant le cas x = assassinas (et donc m = 10) et
y = assassassinassistanceassurancestral (et n = 35) ; marquez les emplacement successifs
de la fenêtre et les comparaisons des lettres de y avec celles de x. Donnez au passage les tables
meil-préf et dern-occ de x.

Vous aimerez peut-être aussi