вбдгже £ вбизйе § вби гже вбдгже вбдгже вбдгже

L’Arbre des suffixes
Olivier Delgrange
Ce papier est destin´e aux lecteurs qui ne sont pas familiers avec le concept d’arbre des suffixes. Il
en d´efinit la structure et d´etaille l’algorithme de construction pr´esent´e par McCreight en 1976. Nous
commenc¸ons par la description de la structure de trie des suffixes, plus simple que celle d’arbre des
suffixes mais ´egalement plus coˆuteuse en espace m´emoire. Sa pr´esentation nous permet de d´efinir
l’arbre des suffixes de mani`ere progressive.
Larbre des suffixes est une structure de donn´ees consistant en un indexe compact de tous les
facteurs d’un texte. Cette structure peut-ˆetre utilis´ee efficacement pour r´esoudre le probl`eme classique
de recherche de motifs dans un texte. Les m´ethodes habituelles de recherche d’un motif dans un texte
effectuent un pr´e-traitement du motif et sont alors capables de rechercher le motif en ´etapes o`u
est la longueur du texte [KMP77, BM77, CP91, CR94, Ste94]. Le pr´e-traitement du motif se fait en
temps , ´etant la longueur du motif. Si plusieurs motifs doivent ˆetre recherch´es dans le mˆeme
texte, chacun des motifs devra d’abord ˆetre pr´e-trait´e et l’ensemble de toutes les recherches prendra
ensuite un temps o`u est le nombre de motifs.
Grˆace `a l’arbre des suffixes du texte, il est possible de rechercher la pr´esence de n’importe quel
motif dans le texte en un temps proportionnel `a la longueur du motif. La recherche de plusieurs motifs
peut donc se faire en un temps proportionnel `a la somme des longueurs des motifs. De plus, l’arbre
des suffixes permet de d´eterminer rapidement les facteurs r´ep´et´es du texte.
Une id´ee similaire `a celle de l’arbre des suffixes a d’abord ´et´e pr´esent´ee implicitement par Morrison
lorsqu’il a d´efini le “Patricia Tree” [Mor68],[Knu73, pp. 490-493] (Practical Algorithm To Retrieve
Information Coded In Alphanumeric) ; mais la description explicite de l’arbre des suffixes tel qu’il est
utilis´e `a l’heure actuelle a ´et´e donn´ee par Weiner en 1973 [Wei73]. Dans cet article, un algorithme de
construction de l’arbre des suffixes en ´etapes est propos´e. Cet algorithme proc`ede par insertions,
dans l’arbre des suffixes, de tous les suffixes du texte, en allant du plus court au plus long. La m´ethode
de McCreight [McC76], que nous d´ecrivons dans ce papier, poss`ede une structure analogue `a celui de
Weiner mais il ins`ere les suffixes en commenc¸ant par le plus long et en terminant par le plus court.
Son temps d’ex´ecution est ´egalement en et son int´erˆet provient surtout de l’´economie en espace
r´ealis´ee par rapport `a celui de Weiner.
Plusieurs efforts ont aussi ´et´e faits pour d´evelopper des algorithmes de construction en ligne, c’est-
`a-dire construisant l’arbre au fur et `a mesure de la lecture, de gauche `a droite, des symboles du texte
[MR80, Ukk92, Ukk95]. Parmi ceux-ci, celui de Ukkonen est le seul capable de construire l’arbre
en temps . Cet algorithme ´etant relativement complexe et puisque la construction en ligne n’est
pas utile dans notre cas, nous ne l’aborderons pas. Nous pr´esentons ici l’algorithme de McCreight
qui allie simplicit´e et efficacit´e. Les ouvrages [CR94, Ste94] pr´esentent et comparent les principaux
algorithmes de construction d’arbres des suffixes.
1
1 D´
efinitions formelles et notations
Soit un alphabet. C’est un ensemble fini, ses ´el´ements sont
appel´es des lettres,symboles ou caract`
eres. Un mot sur l’alphabet est une suite finie de lettres
de : avec . On dit ´egalement que est une s´
equence. La
longueur de est not´ee , c’est le nombre de ses lettres : . Par convention, le mot vide est
not´e : .
Lensemble de tous les mots que l’on peut former `a partir de l’alphabet est not´e . C’est un
ensemble infini. On d´efinit ´egalement l’ensemble de tous les mots non vides sur : .
Soit un ensemble de mots, sa cardinalit´e est not´ee # .
Soit et deux mots de . Leur concat´
enation, not´ee est le
mot de obtenu en faisant suivre les lettres de par les lettres de : ,
sa longueur est . La concat´enation de copies du mˆeme mot est not´ee .
Soit . Le mot est un facteur de si il existe deux mots tel que .
De plus, si , on dira que est pr´
efixe de . De la mˆeme mani`ere, est suffixe de si . En
d’autre termes, est facteur de s’il est ´egal `a une suite contigu¨e de lettres de . On note
lorsque . Si la suite de lettre contigu¨es est extraite du d´ebut de , alors est pr´efixe
de , on note si . Lorsque est extrait de la fin de , est suffixe de , on
note lorsque . Le pr´efixe de est pr´
efixe propre s’il n’est pas ´egal
`a : . De la mˆeme mani`ere, un suffixe propre de est un suffixe de , diff´erent de .
On dit que le mot poss`ede une occurrence dans `a la position si . Ce concept permet
de d´efinir une r´
ep´
etition : le facteur de est r´
ep´
et´
es’il poss`ede plusieurs plusieurs occurrences dans
. En d’autres mots, est une r´ep´etition si , avec
et .
Les concepts introduits dans cette section sont illustr´es par l’exemple 1.
Exemple 1 Consid´
erons l’alphabet a,b,c,d,e et la s´
equence :
abceddaabaadeaaaccdabdeabaadeaadcee
Le mot abaade est un facteur r´
ep´
et´
e de , il poss`
ede deux occurrences aux positions 8 et
24 (ce sont les zones soulign´
ees). Soit abced. La concat´
enation de et est le mot
abcedabaade. Le mot est pr´
efixe de : . Le mot deaadcee est suffixe de :
.
2 Pr´
eliminaires sur les arbres
Soient et deux nœuds d’un arbre. Si un arc les relie, il est not´e . Cet arc est orient´e
de vers ; on dira que est le p`
ere et le fils : . Pour le nœud , est un
arc sortant mais pour , c’est un arc entrant. La racine est le seul nœud n’ayant pas de p`ere. Tous les
autres nœuds ont un et un seul p`ere mais un nœud peut avoir plusieurs fils. On note l’ensemble
des nœuds fils de : .
Par exemple, la figure 1 repr´esente un arbre `a 15 nœuds. Le nœud est le p`ere des nœuds
et .
Le nœud est ancˆ
etre du nœud si ou si avec ancˆetre de (d´efinition
r´ecursive). De cette mani`ere, la racine est ancˆetre de tous les autres nœuds de l’arbre. Pour notre
exemple, est ancˆetre de et . Si est ancˆetre de , alors on dit
2
g1g2g3
g4g6g7
g5
g8g9g10 g11 g12
g13 g14
ca
da
a
racine
gaceg
fde
da b cd abaa
dab ac
FIG. 1 – Exemple d’arbre
´egalement que est descendant de . Tout nœud est descendant de la racine except´e la racine elle-
mˆeme.
Le degr´
ed’un nœud est le nombre de ses fils, on le note . Un nœud est une feuille
s’il ne poss`ede aucun fils : . Les nœuds de degr´e sup´erieur ou ´egal `a 1 sont appel´es des
nœuds internes. Sur l’exemple, sont des feuilles et .
Un chemin est une suite d’arcs cons´ecutifs qui relient, pour chacun, un p`ere avec un de ses
fils. Ainsi, la suite d’arcs d’un arbre forme un chemin si
et avec des nœuds de
l’arbre tels que . Par d´efinition d’un arbre
(il ne contient pas de “boucles”), s’il existe un chemin entre un nœud et un nœud , alors ce
chemin est unique. On le notera . Le nœud sera donc ancˆetre de si et seulement
si existe. Sur notre exemple, existe mais ce n’est pas le cas pour
.
Chacun des arcs de l’arbre peut ˆetre ´etiquet´e par un mot. L´etiquette de l’arc est not´ee
. Dans notre exemple, les ´etiquettes des arcs sont indiqu´ees juste `a cˆot´e des arcs. Par
extension, l’´etiquette d’un chemin est la concat´enation des ´etiquettes de tous les arcs qui le com-
posent : . Le che-
min de notre exemple est ´etiquet´e dagca.
Puisqu’un nœud ne poss`ede qu’un seul p`ere, que la racine ne poss`ede pas de p`ere et que chaque
arc repr´esente un lien p`
ere fils, le nombre d’arcs d’un arbre est ´egal au nombre de nœuds moins 1.
3 Le trie des suffixes
´
Etant donn´e un ensemble de mots sur un alphabet , son trie (pour “information retrieval”, sans
traduction en franc¸ais) [Knu73] est l’arbre poss´edant les six propri´et´es suivantes.
1. Chaque arc est ´etiquet´e par un symbole de .
2. Les ´etiquettes des arcs menant d’un nœud p`ere vers ses nœuds fils sont toutes diff´erentes : pour
tout nœud , si et , alors .
3. Il existe deux types de nœuds : les nœuds terminaux et les nœuds non terminaux. Les feuilles
de l’arbre sont toujours des nœuds terminaux.
3
4. L´etiquette de tout chemin menant de la racine `a un nœud terminal est un mot de : pour tout
, nœud terminal, .
5. Tout mot de est l’´etiquette d’un chemin allant de la racine `a un nœud terminal de l’arbre : pour
tout mot de , il existe un nœud terminal de l’arbre tel que
.
6. L´etiquette de tout chemin menant de la racine `a un nœud non terminal est un pr´efixe d’un mot de
: pour tout , nœud non terminal, il existe un mot tel que
est pr´efixe de .
La figure 2 repr´esente le trie de A CA GC GG GGA GGGCA GTG GTT TC TCA TCT sur
l’alphabet A C G T . Les nœuds terminaux sont repr´esent´es par des cercles gris´es.
C G TA
A C G T C
G G T A TA
C
A
FIG. 2 – Trie de l’ensemble
´
Etant donn´e le mot , on v´erifie son appartenance `a en v´erifiant s’il est l’´etiquette
d’un chemin de la racine `a un nœud terminal. Pour cela, il suffit, `a partir de la racine, de “se d´eplacer”
dans l’arbre en suivant les arcs impos´es par les symboles de , lus de gauche `a droite. Si le chemin
n’existe pas parce qu’un nœud interm´ediaire ne poss`ede pas le fils ad´equat, alors n’appartient pas `a
. C’est le cas, dans l’exemple, avec GTA. Si le chemin conduit `a un nœud non terminal, alors
n’appartient pas `a mais est pr´efixe d’un mot de . Par exemple, GGG est pr´efixe du mot GGGCA
de . Si le chemin atteint un nœud terminal, alors appartient `a . La v´erification d’appartenance se
fait donc en temps .
On remarque facilement que si tous les mots de se terminent par le mˆeme symbole n’apparais-
sant nulle part ailleurs dans les mots de , alors tous les nœuds terminaux sont des feuilles. En effet,
aucun mot de n’est le pr´efixe d’un autre mot de .
Soit un mot. Supposons que son dernier symbole soit diff´erent de tous les
autres. Si ce n’est pas le cas, il suffit d’´etendre l’alphabet `a $, avec $, et de consid´erer
le mot auquel on concat`ene le symbole $. Le trie des suffixes de , not´e , est le trie de
l’ensemble constitu´e de tous les suffixes de .
Si ACTACT$, alors ACTACT$ CTACT$ TACT$ ACT$ CT$ T$ $ et est
l’arbre repr´esent´e `a la figure 3.
Puisque le dernier symbole de est diff´erent de tous les autres, aucun suffixe n’est le pr´efixe d’un
autre suffixe et donc les nœuds terminaux de sont tous situ´es sur les feuilles. D`es lors, plutˆot
4
1
3
7
C
T$
A$
$
A T $
A
A
$
T
C
C
T
C
T
$
C
T
$
4
2
6
5
FIG. 3 – ACTACT$
que de repr´esenter les nœuds terminaux par des cercles gris´es, nous plac¸ons, dans chaque feuille, la
position de d´ebut du suffixe concern´e.
´
Etant donn´e un mot , on peut tester, en maximum ´etapes, s’il est facteur de
. En effet, s’il correspond `a un chemin partant de la racine et se terminant sur une feuille, c’est un
suffixe de . Si le chemin se termine sur un nœud interne, alors est pr´efixe d’un suffixe de et donc
facteur de . Si le chemin n’existe pas, alors n’est pas facteur de .
Donc, il y a non seulement correspondance bi-univoque entre les feuilles et les suffixes de mais,
de plus, les nœuds internes correspondent aux facteurs de . Pour tout nœud , on peut donc d´efinir
comme l’´etiquette du chemin menant de la racine `a . Par d´efinition, .
Sym´etriquement, ´etant donn´e un mot , son locus est le nœud du trie des suffixes pour lequel
: . Il est important de remarquer que le locus
n’existe dans le trie que pour les facteurs du mot.
La proposition 1 montre que l’information d’un nœud de degr´e 1 peut ˆetre imm´ediatement d´eduite
de l’information de son unique fils. Par contre, la proposition 2 montre qu’un nœud interne de degr´e
sup´erieur ou ´egal `a 2, ou une feuille, apporte de l’information suppl´ementaire. De ce fait, ces derniers
nœuds sont commun´ement appel´es nœuds importants [CR94, Riv96].
Proposition 1 Soit un mot. Soient et deux nœuds de tels que et
. Supposons que soit connu, alors grˆ
ace `
a on d´
eduit imm´
ediatement
.
Preuve. Par construction de , on a .
Proposition 2 Soit un mot, avec .
1. Soit une feuille de . Alors est un suffixe de .
5
1 / 21 100%

вбдгже £ вбизйе § вби гже вбдгже вбдгже вбдгже

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !