Numérique et sciences informatiques (NSI) · Terminale

Recherche textuelle : l’algorithme de Boyer-Moore

Chercher un mot dans un document, une séquence dans un génome de plusieurs milliards de lettres : la recherche d’un motif dans un texte est partout. L’algorithme naïf compare le motif à toutes les positions. L’algorithme de Boyer-Moore est bien plus malin : en lisant le motif de droite à gauche, il peut sauter d’un coup de nombreuses positions.

Une question sur ce cours ?

ULU, le tuteur d’ULUMINE, t’aide à partir de ce cours.

Séance guidée avec ULU (≈ 10 min)Diagnostic, explication, exercices adaptés et bilan.

Objectifs

  • Programmer et analyser l’algorithme naïf de recherche textuelle
  • Construire la table des décalages d’un motif (version de Horspool)
  • Dérouler l’algorithme de Boyer-Moore-Horspool sur un exemple
  • Comprendre pourquoi Boyer-Moore est en pratique beaucoup plus rapide

1. L’algorithme naïf

On place le motif (longueur m) à chaque position i du texte (longueur n), de 0 à n − m, et on compare les lettres de gauche à droite jusqu’à une différence ou jusqu’au bout du motif.

2. Les idées de Boyer-Moore

  1. On compare le motif au texte de droite à gauche, en commençant par la dernière lettre du motif.
  2. Après la comparaison, on regarde la lettre du texte alignée avec la dernière lettre du motif, et on décale le motif pour amener sous cette lettre son occurrence la plus à droite dans le motif (hors dernière position).
  3. Si cette lettre n’apparaît pas dans le motif (hors dernière position), on décale de toute la longueur m du motif.

Table des décalages (Horspool) : Pour chaque lettre c présente dans le motif privé de sa dernière lettre : décalage(c) = m − 1 − (indice de la dernière occurrence de c parmi les m − 1 premières lettres). Pour toute autre lettre : décalage = m.

3. Programme et exemple

À retenir

  • Algorithme naïf : décalage d’une position, jusqu’à n × m comparaisons.
  • Boyer-Moore : comparaison de droite à gauche et décalages calculés à l’avance.
  • Décalage(c) = m − 1 − dernière position de c dans le motif privé de sa dernière lettre ; m si c n’y figure pas.
  • Le décalage dépend de la lettre du texte alignée avec la dernière lettre du motif.
  • En pratique, Boyer-Moore saute de nombreuses positions et va bien plus vite.

Et maintenant, à toi !

Vérifie que tu as compris avec les exercices, puis révise avec la fiche.

À découvrir aussi