Participant : Michaël Rusinowitch
La recherche de chaînes de caractères dans un texte est un
problème qui admet de nombreuses applications en édition,
biologie moléculaire, compression de données. Le problème de base
est de localiser les occurrences d'un mot dans un texte. Le
problème plus général de la recherche simultanée d'un ensemble de
mots a été traité efficacement par Aho et Corasick avec des
techniques d'automates. Avec Gregory Kucherov (projet EURECA),
nous avons considéré le problème encore plus général de la
recherche simultanée d'un ensemble de motifs du type où les
sont des mots sur un alphabet A et
(
) est un symbole spécial qui peut être
substitué par n'importe quel sous-chaîne. Un algorithme a été
proposé dans [31]
pour vérifier si un texte t contient l'un des motifs d'un
ensemble |P|. Sa complexité est
, où |t| est la longueur du texte et
|P| la somme des longueurs des motifs. L'originalité de
cet algorithme est qu'il n'est pas constitué de deux phases
(prétraitement des motifs puis parcours du texte). Au contraire,
il modifie dynamiquement l'automate d'analyse suivant l'état de
la recherche et se fonde sur la structure de données DAWG
(Directed Acyclic Word Graph).
De nombreuses questions restent encore ouvertes comme la recherche de toutes les occurrences des motifs, l'extension à des motifs plus généraux, l'amélioration de la complexité.