TNSI : Cours Recherche dans un Texte : Algorithme de Boyer-Moore⚓︎
Principe de l'Algorithme de Boyer-Moore⚓︎
Python
Pour recherche si un motif m se trouve dans une chaîne c, on peut :
- parcourir chaque caractère de la chaine c
- si ce caractère correspond au premier caractère du motif m, alors on avance dans le motif tant que les caractères coïncident.
- si on atteint la fin du motif, alors m se trouve dans c. Sinon on passe au caractère suivant de c.
Implémentation Python⚓︎
def recherche(motif,chaine):
lm,lc = len(motif), len(chaine)
for i in range(lc-lm+1):
i_motif,i_chaine = 0, i
while i_motif < lm and chaine[i_chaine] == motif[i_motif]:
i_motif += 1
i_chaine += 1
if i_motif == lm:
return True
return False
Étude du Coût de l'Algorithme de Boyer-Moore⚓︎
Pte
Soient lm
la longueur du motif et lc
celle de la chaine, on vérifie que l'algorithme de recherche simple demande au plus lm(lc − lm + 1)
comparaisons
Ex
Combien de comparaisons seront nécessaires si on recherche le motif bbbbbbbbba
(neuf fois le caractère b
suivi d'un a
) dans une chaine contenant un million de b
?