next up previous contents
Next: Construction d'un objet dans Up: Recherche approximative de chaînes Previous: La distance d'édition

Algorithme de recherche

Lorsqu'on fait une recherche de chaîne approximative, on ne peut pas décider avec certitude que la chaîne cherchée se trouve à un endroit de la chaîne analysée avant de l'avoir parcourue en entier. Une fois que le parcours a été effectué, il s'agit encore de décider si elle s'y trouve, et si c'est le cas, à quel endroit elle se trouve. Dans une recherche stricte, on peut balayer la chaîne à analyser de gauche à droite et s'arrêter dès que la chaîne à chercher est trouvée. Dans une recherche approximative, ce n'est pas possible, sauf si on trouve effectivement strictement la même chaîne. Laissons de côté ce cas trivial.

Par exemple, on peut chercher belle dans corbeilles. En prenant à chaque fois une partie de corbeilles de la même taille que belle, on obtient des distances d'édition variant entre 3 et 1. Comme le montre le tableau 4.6, la similarité va en augmentant jusqu'à la chaîne la plus semblable puis redescend.


 
Table: Évolution de la similarité des deux chaînes lors du balayage.
  corbe orbei rbeil beill eille illes
distance 3 3 2 1 1 2
similarité 40% 40% 60% 80% 80% 60%
 


Il est évident qu'une chaîne comme corbe n'a quasiment rien à voir avec belle. Il est donc profitable d'établir un seuil sous lequel ce n'est pas la peine de s'arrêter pour dire : « la chaîne cherchée est peut-être là ». Ici, nous pouvons dire qu'en dessous de 75% de similarité, les chaînes sont assez dissemblables pour ne pas être considérées. L'algorithme pourrait alors dire qu'il a peut-être trouvé belle dans corbeilles, mais que c'est ou bien beill (la première sous-chaîne de même longueur ayant dépassé le seuil de 75%) ou bien eille (une sous-chaîne de même longueur ayant dépassé le seuil et ayant le taux de similarité maximum).

Une fois qu'on a trouvé une chaîne semblable, on cherche le pic de reconnaissance (le score de similarité le plus élevé) se situant au-dessus du seuil. Si pour les valeurs du tableau 4.6, le seuil avait été 60%, nous aurions décidé que le pic de reconnaissance était de 80% pour la sous-chaîne beill (c'est-à-dire la sous-chaîne allant de la position 3 à la position 7). Nous avons fait le choix de ne retourner que la première sous-chaîne correspondant (dans un parcours gauche-droite), afin de pouvoir continuer la recherche dans la partie de la chaîne restante (à droite de la sous-chaîne retournée). La chaîne recherchée est quelquefois présente en plusieurs exemplaires dans la chaîne fouillée.

Il arrive que la chaîne à trouver soit plus proche d'une sous-chaîne de longueur différente. Par exemple pour belle, dans corbeilles : la sous-chaîne la plus adaptée est bien beille (avec les mêmes coûts que précédemment, elle serait à une distance de 0,5 et aurait un taux de similarité de 91,66%). C'est pourquoi quand le taux de similarité du pic de reconnaissance, n'est pas optimal (100%) on recommence le processus, mais en comparant la chaîne à chercher avec des sous-chaînes de longueur différente (de -2 à +2).


next up previous contents
Next: Construction d'un objet dans Up: Recherche approximative de chaînes Previous: La distance d'édition
Francois Parmentier
6/19/1998