Arbre des suffixes
En informatique, un arbre des suffixes (en anglais suffix tree) est une structure de données arborescente contenant tous les suffixes d'un texte. L'arbre des suffixes est utilisé pour l'indexation de textes et la recherche de motifs, notamment en bio-informatique.
BANANA
terminé par $
. Les six chemins de la racine à une feuille (représentée par une boßte) correspondent aux six suffixes A$
, NA$
, ANA$
, NANA$
, ANANA$
et BANANA$
. Les nombres dans les boßtes donnent la position de départ du suffixe correspondant. En pointillés sont dessinés les liens suffixes.Définition
On suppose que l'on sâintĂ©resse Ă un texte, au sens informatique, c'est-Ă -dire une suite de caractĂšres. Un suffixe est une partie du texte : la suite des caractĂšres entre une certaine position et la fin du texte. L'arbre des suffixes est une structure pour stocker un ensemble de suffixes.
L'arbre a les propriétés suivantes :
- Les feuilles de l'arbre contiennent un numéro qui correspond à la position de début du suffixe dans le texte.
- Les branches peuvent ĂȘtre Ă©tiquetĂ©es de diffĂ©rentes maniĂšres :
- par une chaßne de caractÚres de longueur supérieure ou égale à 1,
- par un couple qui correspond à la sous-chaßne commençant à la position , de longueur , dans le texte.
En gĂ©nĂ©ral, on termine le texte par un caractĂšre spĂ©cial $ (non prĂ©sent dans le reste du texte), pour Ă©viter que certains suffixes se terminent sur des nĆuds de l'arbre.
On peut parler d'arbre compact des suffixes, si :
- chaque nĆud a au moins deux fils,
- toutes les Ă©tiquettes des branches sortant d'un mĂȘme nĆud commencent par une lettre diffĂ©rente.
Utilisations
L'arbre des suffixes est une structure assez naturelle et peut ĂȘtre utilisĂ©e pour rĂ©soudre un grand nombre de problĂšmes en temps linĂ©aire. L'un des problĂšmes les plus classiques est la recherche de motifs.
Recherche de motifs
L'arbre des suffixes est trÚs utilisé comme structure d'indexation. En effet, il permet, de rechercher un motif M, de longueur , dans un texte de longueur en temps . Ainsi, la recherche prend un temps qui dépend uniquement de la longueur du motif.
La recherche de motifs est relativement simple. En partant de la racine de l'arbre, il faut suivre la branche dont l'Ă©tiquette commence comme M. En suivant cette branche on arrive alors Ă un nouveau nĆud et on recommence le processus sur la partie restante de M. Le processus est rĂ©pĂ©tĂ© jusqu'Ă :
- ne plus pouvoir descendre dans l'arbre par la lettre lue, il n'y a pas d'occurrence de M dans le texte,
- avoir lu M en entier, on arrive
- sur un nĆud de l'arbre ou au milieu d'une branche. Le nombre de feuilles prĂ©sentes dans le sous arbre correspond au nombre d'occurrences de M dans le texte. De plus chaque feuille contenant la position du dĂ©but de suffixe, on peut dĂ©terminer la position de chacune des occurrences.
- sur une feuille. Il n'y a qu'une seule occurrence de M dans le texte, elle se trouve à la position indiquée par le numéro de la feuille.
Détection de répétitions
ConsidĂ©rons un arbre compact des suffixes. Lorsqu'il y a un nĆud, il a au moins deux fils. Cela signifie que la chaĂźne de caractĂšres qui nous a menĂ© Ă ce nĆud est rĂ©pĂ©tĂ©e au moins deux fois dans le texte. Ainsi, en considĂ©rant tous les nĆuds de l'arbre on peut connaĂźtre toutes les rĂ©pĂ©titions dans le texte.
Autres
Diverses autres tĂąches, comme dĂ©tecter des palindromes, peuvent ĂȘtre effectuĂ©es rapidement grĂące Ă l'arbre des suffixes en utilisant des algorithmes de plus petit ancĂȘtre commun.
Construction
Les principaux algorithmes de construction de l'arbre des suffixes sont ceux de Weiner (Weiner 1973), McCreight (McCreight 1976) et Ukkonen (Ukkonen 1995). Ces trois algorithmes ont une complexitĂ© en temps linĂ©aire. Asymptotiquement en moyenne, ces algorithmes nĂ©cessitent un espace en (en pratique de l'ordre de 12n). L'algorithme d'Ukkonen a l'avantage d'ĂȘtre online.
L'espace utilisĂ© par une telle mĂ©thode peut ĂȘtre un problĂšme pour indexer des textes trĂšs longs (centaines de Mo Ă quelques Go). D'autres mĂ©thodes existent afin de rĂ©duire l'espace mĂ©moire nĂ©cessaire aux structures d'indexation. La table des suffixes en est un exemple, bien que l'espace requis puisse ĂȘtre trop important (de l'ordre de 4n).
L'algorithme de Farach-Colton, Ferragina et Muthukrishnan 2000, prend comme mesure de complexité le nombre d'appels à une mémoire externe, et est optimal selon ce point de vue.
Voir aussi
Bibliographie
Articles
- (en) Edward M. McCreight, « A Space-Economical Suffix Tree Construction Algorithm », Journal of the ACM, vol. 23, no 2,â , p. 262--272 (lire en ligne)
- (en) Esko Ukkonen, « On-line construction of suffix trees », Algorithmica, vol. 14, no 3,â , p. 249--260 (lire en ligne)
- (en) P. Weiner, « Linear pattern matching algorithms », dans 14th Annual IEEE Symposium on Switching and Automata Theory, (DOI 10.1109/SWAT.1973.13), p. 1-11.
- Martin Farach-Colton, Paolo Ferragina et S. Muthukrishnan, « On the sorting-complexity of suffix tree construction. », Journal of the ACM, vol. 47, no 6,â , p. 987-1011 (DOI 10.1145/355541.355547).
Ouvrages
- (en) Dan Gusfield, Algorithms on Strings, Trees and Sequences : Computer Science and Computational Biology, Cambridge, Cambridge University Press, , 534 p. (ISBN 978-0-521-58519-4, BNF 37532677).
Notes et références
Liens externes
- Construction d'arbres de suffixes Introduction à la construction et à l'utilisation d'arbres de suffixes, présentation et comparaison des algorithmes de Ukkonen et de Hunt avec l'approche TDD.
- Présentation générale et approfondie des arbres des suffixes. Université de Montréal.