• Aucun résultat trouvé

Algorithme de Boyer-Moore

N/A
N/A
Protected

Academic year: 2022

Partager "Algorithme de Boyer-Moore"

Copied!
3
0
0

Texte intégral

(1)

LGT Saint-Exupéry, Mantes-la-Jolie

Activité Terminale NSI – L’algorithme de Boyer-Moore 1/3

Objectifs pédagogiques :

✓ Connaître le principe de la rechercher textuelle

✓ Connaître l’algorithme de Boyer-Moore

Gordon Earle Moore est un docteur en chimie et en physique, un chef d'entreprise américain. En 1968, il fonde avec Robert Noyce et Andrew Grove la société Intel, premier fabricant mondial de microprocesseurs. Il est connu pour avoir publié une loi empirique portant son nom, la loi de Moore en 1965. Il n’a rien à voir avec J Strother Moore, le co-inventeur de l’algorithme de Boyer-Moore.

Activité 1 – Principe de la recherche textuelle

1. Regarder la capsule vidéo sur l’algorithme de Boyer-Moore sur le site nsi4noobs.fr 2. Résumer le principe de l’algorithme de recherche textuelle naïve

3. Écrire une fonction de recherche naïve d’une chaine de caractère dans un texte. Cette fonction recherche_naive(cle, texte) devra renvoyer le nombre d’occurrences de cle trouvées dans texte.

Activité 2 – Algorithme de Boyer-Moore

1. Dans quelle(s) condition(s) de rechercher textuelle peut-on décaler la recherche de plus d’un caractère ? 2. En déduire pourquoi la recherche d’un mot dans un texte est un cas particulier permettant d’accélérer

notablement le traitement.

3. Décrire le fonctionnement de l’algorithme de Boyer-Moore 4. Expliquer l’avantage du prétraitement dans cet algorithme

5. Écrire la fonction décrite dans la vidéo permettant de retourner la table des sauts pour une clé donnée. Cette fonction table_saut(cle) retournera un dictionnaire dont les clés seront les lettres de la clé, et les valeurs le saut associé.

6. Indiquer le résultat obtenu avec votre fonction pour la clé « EXCELLENT »

7. A partir de l’algorithme précédent, sous votre IDE préféré, ajouter l’ensemble des commentaires expliquant les différentes étapes de l’algorithme :

Algorithmique

Algorithme de Boyer-Moore

(2)

LGT Saint-Exupéry, Mantes-la-Jolie

Activité Terminale NSI – L’algorithme de Boyer-Moore 2/3

def boyer_moore (texte, cle):

long_txt = len(texte) long_cle = len(cle) positions = []

if long_cle <= long_txt :

decalage = table_sauts(cle) i=0

trouve = False

while (i <= long_txt-long_cle):

for j in range (long_cle -1, -1, -1):

trouve = True

if texte[i+j] != cle[j] :

if (texte[i+j] in decalage and decalage[texte[i+j]]<=j):

i+=decalage[texte[i+j]]

else : i+=j+1 trouve = False break

if trouve :

positions.append(i) i=i+1

trouve = False return positions

8. Ajouter dans votre fonction recherche_naive un compteur permettant de déterminer le nombre de comparaisons et d’étapes effectuées.

9. Effectuer de même avec la fonction boyer_moore.

10. A partir du texte présent dans l’encadré ci-dessous, indiquer le nombre d’étapes en recherche naïve, puis en recherche Boyer-Moore pour la clé « recherche ».

L’algorithme de Boyer-Moore fut inventé en 1977. Il peut être encore amélioré avec plusieurs tables de saut, chacune correspondant au saut possible en fonction du caractère testé dans la clé. Cet ajout de table présente un intérêt pour les recherches avec une clé de taille importante.

(3)

LGT Saint-Exupéry, Mantes-la-Jolie

Activité Terminale NSI – L’algorithme de Boyer-Moore 3/3

Activité 3 – Pour aller plus loin…

On va comparer les deux algorithmes sur un texte plus long en faisant varier la clé.

1. Ajouter sur vos deux algorithmes précédents une fonction renvoie le temps de recherche de toutes les occurrences d’une clé dans un texte donné.

2. Récupérer le fichier texte fourni dans l’ENT TexteATester.txt. Écrire une fonction qui récupère le fichier texte, qui l’ouvre, le lit et stocke son contenu dans une chaine de caractères

3. Tester les fonctions de recherche écrites à la question 1 sur ce texte avec quelques mots comme « avec », « esprit »,

« est », « le », puis avec la lettre « e ». Que remarquez-vous ?

Références

Documents relatifs

[r]

TDIAG2 réduit une matrice symétrique réelle selon la forme tridiagonale (réduction de Householder), et LRVT2 calcule les valeurs et vecteurs propres d'une matrice

L’accès aux archives de la revue « Statistique et analyse des données » implique l’accord avec les conditions générales d’utilisation ( http://www.numdam.org/conditions )..

Repérez le support de chaque document pertinent puis relevez les informations nécessaires afin de retrouver ces documents

 L’évaluation porte sur VOS capacités à L’évaluation porte sur VOS capacités à faire une synthèse à partir de plusieurs faire une synthèse à partir de plusieurs

PROPOSITION 1.4: Soient (A, B)de ffl x 3~, avec A Hessenberg supérieure non réduite, B de premier terme diagonal b xl nul, alors il existe un indice p unique et une

Dans le cas général (pas de correspondance), on déplace la fenêtre de recherche de (saut – (k – 1 – j)) positions, la valeur de saut étant donnée par la table de recherche,

Écrire une fonction recherche_naive_2(strg: str, substrg: str)-&gt;int: similaire à la fonction recherche_naive mais qui ne fait pas appel à la fonction identique (la comparaison