NUMERIQUE ET SCIENCES INFORMATIQUES

Niveau : Terminale générale, enseignement de spécialité NSI

 

D
É
C
O
N
N
E
C
T
É

Recherche Textuelle

1 - Introduction

Tout logiciel de traitement de texte possède une fonction de recherche textuelle, permettant de trouver un mot ou une partie d'un mot (chaine ou sous-chaine) appelé motif. Il en est de même pour les navigateurs internet. Appuyer sur ctrl f puis rechercher dans la page la chaine "mot"

Recherche naïve

Un premier algorithme dit naïf permet de comparer la première lettre de la chaine recherchée en parcourant le texte de gauche à droite

Principe :

L'une des citations de Laurent de Lavoisier est la suivante : "rien ne se perd, rien ne se crée, tout se transforme".

Cherchons la chaine "rien" dans le texte de la citation.

Le motif est trouvé dans le texte, on rajoute son indexe (0 ou 17) à la liste des indexes puis on le décale d'un cran vers la droite
La recherche se termine lorsqu'on atteint le rang : longueur du texte - longueur du motif

Algorithme
Fonction recherche_naive(texte,motif)
m ← longueur du motif
n ← longueur du texte - m + 1
positions ← []
pour i variant de 0 à n faire
si motif=texte[i...i+m] alors
ajouter i à la liste positions
retourne positions

Code python

 


Algorithme de Boyer Moore Horspool :

L’algorithme de Boyer-Moore-Horspool ou Horspool est un algorithme de recherche de sous-chaîne publié en 1980 par Nigel Horspool, un professeur à l’université de Victoria au Canada. Il consiste en une simplification de l’algorithme de Boyer-Moore qui ne garde que la première table de saut.

Principe :

L’algorithme de Boyer-Moore effectue la vérification, c’est-à-dire qu’il tente d’établir la correspondance entre le motif et le texte à une certaine position, à l’envers.

exemples de décalages lorsque la lettre existe dans le motif :

Exemple 1Exemple 2
Textesfor
Saut321
Motifrien
Texte rie
Saut321
Motifrien

La structure choisie peut être un dictionnaire dont la clé représente la lettre : saut={"r":3,"i":2,"e":1} toute autre lettre impose un saut de la longueur du motif, ici 4 cases.

Voici les opérations que l'on peut effectuer sur un dictionnaire :

Cas où le motif contient des lettres identiques

Fond :  Texte :  Tables :  Thème du langage: