AccueilđŸ‡«đŸ‡·Chercher

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.

Arbre des suffixes pour le texte 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)
  • 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

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.
    Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.