M1 - TP Algorithme du texte

publicité
M1 - TP Algorithme du texte - Arbre des motifs
Eric Rivals
Décembre 2012
Ce TP porte sur la construction d’un arbre des motifs, ainsi que la recherche de l’ensemble des
motifs de l’arbre dans un texte T .
Vous disposez d’une ébauche de programme dans le fichier C++ suivant arbreMotifs-structures.cpp
qui est sur l’ENT. Ce fichier implante la classe de noeud, celle d’arbre, plusieurs méthodes dont trouveFils et ajoutFils pour un noeud.
1
Première partie
1.1
Utilisation de l’arbre des motifs comme s’il était un dictionnaire.
1. On dispose d’un arbre A et de sa racine. On vous donne un autre mot s. Ecrivez une procédure
trouveMot qui prend s en entrée et répond oui si s est un des motifs stocké dans l’arbre et non
dans le cas contraire.
2. Ecrivez recherchePref( string s ) qui echerche le plus long préfixe de s qui est un préfixe des
mots de A.
3. On écrit une procédure similaire mais améliorée par rapport à la précédente. Ecrivez trouvePref
qui prend un mot s et un indice deb dans s, et qui recherche le plus long mot qui commence en
deb et qui matche un préfixe des mots de A.
1.2
Construction de l’arbre des motifs
1. Implantez la procédure d’ajout d’un motif à un arbre des motifs.
2. Implantez l’algorithme de construction de l’arbre des motifs à partir d’un tableau contenant
tous les motifs. Cet algorithme utilise la procédure précédente. Ceci doit donner un nouveau
constructeur de la classe arbre qui prend en entrée le tableau des motifs et le nombre de motifs
dans ce tableau.
1
2
Algorithme de recherche des motifs dans un texte en utilisant
l’arbre des motifs et ses liens d’échec.
1. Implantez une fonction qui pour un arbre contenant des motifs, calcule les liens d’échec de tous
les noeuds. Vous pouvez décomposez en une sous procédure qui calcule le lien d’échec d’un
noeud donné et qui prend en entrée un pointeur sur ce noeud et un sur son père.
2. Implantez une fonction de la classe arbre qui prend un texte T en entrée, sa longueur n et
effectue la recherche de toutes les occurrences des motifs dans T . Cette recherche doit utiliser
l’arbre des motifs et ses liens d’échec.
3. Optionel : Vous pouvez aussi implanter la recherche naive des mots dans le texte T .
4. Optionel : Vous pouvez aussi implanter le destructeur de la classe arbre.
2
Téléchargement