Comprendre la recherche textuelle
Problématique
Essayons de découvrir, via un exemple de séquençage génétique, un algorithme simple de recherche textuelle.
Ce type de recherche peut se résumer ainsi :
Un texte est représenté par une chaîne de
ncaractères.Un motif est une chaîne de
pcaractères.En pratique on a
1≤p≤n, et mêmepbeaucoup plus petit quen!Ce motif est-il présent dans le texte ? Si oui, à quelle(s) position(s) ?
Question
Déterminer le nombre d'occurrences (et leur positions respectives) du motif CAAGT dans le texte ATCAAGTTCAAGTCAGTCCCCAAGTTGATGCAAGT.
Solution
AT CAAGT T CAAGT CAGTCCC CAAGT TGATG CAAGT
Le motif est présent 4 fois dans le texte, aux indices 2, 8, 20 et 30.
Premier algorithme...
On souhaite formaliser la méthode à travers l'écriture d'un pseudo-code.
Question
Écrire sur papier, l'algorithme pressenti pour réaliser cette recherche textuelle.
Solution
La solution sera donnée très bientôt. C'est une première recherche en classe.
Fenêtre glissante
Les algorithmes de recherche textuelle reposent sur le principe de la « fenêtre glissante » : on positionne le motif à différentes positions du texte puis on teste si chaque caractère du motif est identique au caractère correspondant du texte.
On positionne la fenêtre à l'indice 0 du texte :
Puis à l'indice 1 du texte :
Etc...
Pour établir la correspondance entre les différents caractères, il faut prendre en compte à la fois les indices des caractères dans le texte et les indices des caractères dans le motif. On note :
ila position de la fenêtre dans le texte : c’est l’indice du premier caractère du texte qui apparaît dans la fenêtre.jl’indice d’un caractère dans le motif.
Question
Sur l'image précédente, dire :
à quel indice i est positionné la fenêtre
quelles sont les comparaisons à réaliser...
Indice
Il suffit de lire où se situe la fenêtre
Solution
i vaut 13 et voici les comparaisons à effectuer :
texte[13] avec motif[0]
texte[14] avec motif[1]
texte[15] avec motif[2]
texte[16] avec motif[3]
texte[17] avec motif[4]
Généralisation
Lorsque la fenêtre est positionnée à l’indice i du texte, il faut comparer les caractères motif[j] et texte[i+j], avec j compris entre 0 et p-1 (on rappelle que p est la longueur du motif).
Attention, la recherche s’effectue donc à condition d’avoir i ≤ n-p, sinon, on dépassera la longueur du texte.
Voici une illustration de l'algorithme en vidéo :
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger le média.


