Vous êtes sur la page 1sur 58

Chapitre 4 (suite)

Les structures d’Index


S. BOUKHEDOUMA
USTHB – Faculté d’Informatique –
département des Systèmes Informatiques
Laboratoire des Systèmes Informatiques -LSI
sboukhedouma@usthb.dz

Chap 4– Structures d’Index - BioAlgo 1


Introduction

o Trouver les occurrences d’un motif u dans un texte


T, lorsque le texte T est fixe (ne change pas).
o On prétraite le texte en utilisant des techniques
d’indexation : essentiellement, on définit une
structure de données qui mémorise l’ensemble
des facteurs du texte

Chap 4– Structures d’Index - BioAlgo 2


Structures usuelles

Différentes façons de représenter l’index d’un texte :


Table des suffixes (Manber et Myers 1990)
Arbre des suffixes (Weiner 1973-McCreight
1976…)
FM-Index (Transformée de Burrows-Wheeler :
BWT)
(Ferragina et Manzini 2000)

Chap 4– Structures d’Index - BioAlgo 3


Arbre des suffixes

Chap 4– Structures d’Index - BioAlgo 4


Arbre des suffixes

Un arbre de suffixes est une structure de données qui


permet de représenter exactement tous les suffixes d’un
texte dans une structure d’arbre.

Intérêt : Une recherche de motif dans un texte dans un


temps qui dépend uniquement de la longueur du motif
et non du texte.

Chap 4– Structures d’Index - BioAlgo 5


Arbre des suffixes

Cette structure permet d’effectuer :


o La recherche exacte d’un motif
o La recherche approchée d’un motif (x erreurs
autorisées)
o La recherche de répétitions
o La recherche du plus long facteur commun entre
2 chaines de données

Chap 4– Structures d’Index - BioAlgo 6


Arbre des suffixes
Exemple

Chap 4– Structures d’Index - BioAlgo 7


Arbre des suffixes

Remarque
On ajoute le symbole $ pour qu’aucun suffixe ne soit
préfixe d’un autre suffixe, donc chaque suffixe se
terminera en une feuille.

Chap 4– Structures d’Index - BioAlgo 8


Arbre des suffixes

Chap 4– Structures d’Index - BioAlgo 9


Arbre des suffixes
Le trie (arbre) des suffixes du mot a4t4 contient (4+1)2
nœuds internes

L’occupation mémoire n’est pas linéaire en la taille du texte 


éliminer les nœuds sortants de degré 1

Chap 4– Structures d’Index - BioAlgo 10


Arbre compact des suffixes

Une version compacte du trie (On conserve les nœuds internes qui
sont des branchements (de degré sortant au moins 2) et les feuilles.
• Les étiquettes des arcs sont maintenant des facteurs de t.

L’arbre des suffixes du texte = a4t4


7 nœuds internes au lieu de 25 et 9 feuilles (moins de nœuds internes
que de feuilles)

Chap 4– Structures d’Index - BioAlgo 11


Arbre compact des suffixes
Complexité en espace

o Le nombre de nœuds d’un arbre des suffixes est linéaire en la


taille du texte. Autant de feuilles que de suffixes.

o Pour un texte t de longueur n, le nombre de nœuds de l’arbre


des suffixes est d’au plus n+n
o L’ensemble des étiquettes consomme un espace en O(n2)
caractères.
C’est trop !
Question: Comment rendre linéaire la complexité en
espace?
Chap 4– Structures d’Index - BioAlgo 12
Arbre compact des suffixes

On stocke le texte et on code chaque étiquette (un facteur


de t) via les deux indices debut et fin délimitant une plage
du facteur dans t.
L’arbre des suffixes du texte a 4t 4

Chap 4– Structures d’Index - BioAlgo 13


Arbre non compact des suffixes

Exemple 2

Arbre non compact des suffixes

Chap 4– Structures d’Index - BioAlgo 14


Arbre des suffixes
Chaque feuille de l’arbre représente un suffixe du texte et
chaque suffixe est représenté par une feuille. Les feuilles
sont numérotées par la position de début du suffixe
qu’elles reconnaissent.
L’arbre de la Figure précédente est l’arbre non compact
de suffixes pour la séquence TATA$. Les branches d’un tel
arbre sont étiquetées par une lettre unique.

Le nombre maximal de nœuds d’un arbre non compact


de suffixes est quadratique
Chap 4– Structures d’Index - BioAlgo 15
Arbre compact des suffixes
Pour compacter l’arbre, on supprime les nœuds
internes ne possédant qu’une branche sortante et on
concatène les branches.

Arbre compact des suffixes

Arbre non compact des suffixes

Chap 4– Structures d’Index - BioAlgo 16


Arbre compact des suffixes
Pour diminuer l’espace de stockage des étiquettes, on
les remplace par des couples (i, ℓ), où i est la position
de début du facteur et ℓ la longueur de ce facteur.

L’arbre compact de suffixes d’un mot M est noté A(M).


01 2 3 4
TATA$

Arbre compact des suffixes

Chap 4– Structures d’Index - BioAlgo 17


Arbre compact des suffixes
L’arbre compact de suffixes d’un mot M est noté A(M).
01 2 3 4
TATA$

Arbre compact des suffixes


Les feuilles contiennent l’indice où commence le suffixe dans le texte, par
exemple la valeur 1 indique le suffixe ATA
L’étiquette (4, 1) indique le facteur vide
L’étiquette (2,3) indique le facteur TA

Chap 4– Structures d’Index - BioAlgo 18


Arbre des suffixes
Définitions

Chap 4– Structures d’Index - BioAlgo 19


Arbre des suffixes

Lien suffixes
nœud q

nœud p

Le nœud q contient un facteur qui est suffixe du facteur contenu dans p


Le lien suffixe est schématisé en pointillés

Chap 4– Structures d’Index - BioAlgo 20


Arbre des suffixes

Chap 4– Structures d’Index - BioAlgo 21


Construction de l’arbre des
suffixes

Chap 4– Structures d’Index - BioAlgo 22


Construction naïve de l’arbre des suffixes

Principe

On part de l’arbre avec 1er nœud racine et on insère un à un


les suffixes par taille décroissante.
Pour chaque insertion, on détermine le plus long préfixe
PLPref de la chaine déjà présente dans l’arbre.
Si PLPref ne correspond pas à un nœud de l’arbre déjà existant
on le crée.

Chap 4– Structures d’Index - BioAlgo 23


Construction naïve de l’arbre des suffixes
Exemple
Texte = GCGCCC$
L’ensemble des suffixes est {$, C$, CC$ , CCC$, GCCC$,
CGCCC$, GCGCCC$ } on a un préfixe commun entre GCCC
et GCGCCC

Chap 4– Structures d’Index - BioAlgo 24


Construction naïve de l’arbre des suffixes

on a un préfixe commun on a un préfixe commun


entre CCC et CGCCC entre CC et CCC

Chap 4– Structures d’Index - BioAlgo 25


Construction naïve de l’arbre des suffixes

on a un préfixe commun
entre CC et C

Complexité de la construction est de l’ordre de O(n2)

Chap 4– Structures d’Index - BioAlgo 26


Arbre des suffixes

Algorithme de construction de McCreight

L’algorithme de McCreight date de 1976, il construit


l’arbre du plus long suffixe au plus court.

Chap 4– Structures d’Index - BioAlgo 27


Arbre des suffixes
Algorithme de construction de McCreight

Exemple: texte=tata$ après la phase 1 de construction, les


feuilles 0 et 1 ont été créées (insertion des suffixes tata$ et
ata$).
Lors de la phase 2, le suffixe x=ta$ doit être ajouté dans l’arbre.
Le plus long préfixe de x déjà présent est u=ta. Or son chemin
s’arrête au milieu d’une branche.
Il faut donc scinder cette
Branche pour créer le
nœud u.

Créer la feuille 2
et ajouter la branche allant de u à 2.
Chap 4– Structures d’Index - BioAlgo 28
Arbre des suffixes
Algorithme de construction de McCreight

Arbre des suffixes de tata$ en cours de construction après


l’insertion des suffixes tata$, ata$, et ta$

L’algorithme de McCreight
utilise des liens suffixes
qui permettent
d’accélérer la recherche.

Chap 4– Structures d’Index - BioAlgo 29


Arbre des suffixes
Algorithme de construction de McCreight

L’algorithme de McCreight
utilise des liens suffixes
qui permettent
d’accélérer la recherche.

Question : Lorsque la recherche d’un motif échoue à un nœud


donné, vers quel nœud de l’arbre faudra t-il revenir pour
reprendre la recherche?

Chap 4– Structures d’Index - BioAlgo 30


Arbre des suffixes

Algorithme de construction de McCreight

On revient au noeud représentant le plus long suffixe commun avec le


nœud d’échec, schématisé sur l’arbre par le lien en pointillés

Chap 4– Structures d’Index - BioAlgo 31


Arbre des suffixes

Algorithme de construction d’Ukkonen

http://brenden.github.io/ukkonen-animation/

Chap 4– Structures d’Index - BioAlgo 32


Recherche dans l’arbre des
suffixes

Chap 4– Structures d’Index - BioAlgo 33


Arbre des suffixes
Recherche d’un motif dans un arbre des
suffixes
On a plusieurs cas:
1. Si on ne peut descendre dans l’arbre par la lettre lue
alors le motif n’existe pas
2. Une fois le motif lu, si on se retrouve sur une feuille
alors il y a une seule occurrence
3. Une fois le motif lu, si on se retrouve sur un nœud non
terminal alors le nombre de feuilles présentes dans
le sous arbre du nœud courant correspond au
nombre d’occurrence du motif dans le texte.

Chap 4– Structures d’Index - BioAlgo 34


Arbre des suffixes
Exercice
1.Construire l’arbre des suffixes du texte
texte=ATGACATATGA

2. Les motifs TGA, TGACA, ACAG sont-ils dans le


texte ?
3. Comment déterminer si un motif apparait ou non
dans le texte ?
4. Comment déterminer le nombre d’occurrences ?

Chap 4– Structures d’Index - BioAlgo 35


Arbre des suffixes
Exercice
texte=ATGACATATGA

Chap 4– Structures d’Index - BioAlgo 36


Arbre des suffixes

Comment déterminer si un motif apparait ou non


dans le texte ?

Démarrer à partir de la racine, lire un caractère du motif M et


avancer dans le l’arbre tant qu’il y a un arc étiqueté par le
caractère du motif.
S’arrêter si fin du motif
ou
aucun arc étiqueté par le caractère recherché
Revenir vers le nœud (S(p)) contenant le plus long suffixe du
nœud p (ayant provoqué l’échec)

Chap 4– Structures d’Index - BioAlgo 37


Arbre des suffixes

Comment déterminer le nombre d’occurrences ?

Si le motif M est trouvé au nœud p,


le nombre d’occurrences de M est le nombre de feuilles
du sous-arbre de racine p

Chap 4– Structures d’Index - BioAlgo 38


Arbre des suffixes
Exercice
texte=ATGACATATGA

TGA existe nœud 13, TGACA existe au nœud 2,


ACAG n’existe pas
TGA se répète 2 fois ; AT se répète 3 fois
(nombre de feuilles dans le sous-arbre qui contient le facteur)
Chap 4– Structures d’Index - BioAlgo 39
Arbre des suffixes
Détecter les facteurs répétés
Les plus longs facteurs qui apparaissent deux fois
L’arbre des suffixes associé
au texte TCCATCATCC

Plus longs facteurs ≡ les nœuds


internes les plus profonds

• Les facteurs qui apparaissent au moins deux fois


{A : 2, AT : 2, ATC : 2, C : 5, CA : 2, CAT : 2, CATC : 2, CC : 2, T : 3, TC : 3, TCC : 2}
≡ l’arbre des suffixes sans ses feuilles
• Les plus longs facteurs qui apparaissent au moins deux fois CATC

Chap 4– Structures d’Index - BioAlgo 40


Arbre des suffixes
Détecter les facteurs répétés
Les plus longs facteurs qui apparaissent deux fois
L’arbre des suffixes associé
au texte TCCATCATCC

• Les facteurs qui apparaissent


au moins deux fois
{A : 2, AT : 2, ATC : 2, C : 5, CA : 2,
CAT : 2, CATC : 2, CC : 2, T : 3,
TC : 3, TCC : 2}
≡ l’arbre des suffixes sans ses
feuilles
• Les plus longs facteurs qui
apparaissent au moins deux fois
CATC

Chap 4– Structures d’Index - BioAlgo 41


Arbre des suffixes
Détecter les facteurs distincts
L’arbre des suffixes du texte
ababbb

Dans l’arbre des suffixes, chaque nœud peut correspondre à plusieurs


facteurs: autant que la longueur de l’étiquette (le marqueur $ omis) qui le
rattache à son nœud père.
Donc dans le texte t nous avons 16 facteurs distincts.
Chap 4– Structures d’Index - BioAlgo 42
Arbre des suffixes
Détecter les facteurs distincts
L’arbre des suffixes du texte
ababbb

Chap 4– Structures d’Index - BioAlgo 43


Arbre des suffixes
Nombre de facteurs distincts

Schéma de l’algorithme
Avec un parcours de l’arbre des
suffixes d’un texte t, faire la somme
des longueurs des étiquettes des arcs
(on omet les marqueurs $)

Complexité en temps
Coût du parcours de l’arbre : en
O(|t|)

Chap 4– Structures d’Index - BioAlgo 44


Arbre des suffixes
Nombre de facteurs distincts

Schéma de l’algorithme
Avec un parcours de l’arbre des
suffixes d’un texte t, faire la somme
des longueurs des étiquettes
des arcs(sans lemarqueurs $)

Complexité en temps
Coût du parcours de l’arbre : en
O(|t|) Texte = ababbb

Nombre de facteurs distincts = 1+1+1+4+2+2+ 4 = 15 (sans le facteur vide)

Chap 4– Structures d’Index - BioAlgo 45


Arbre des suffixes
Recherche dans un arbre des suffixes

o Les facteurs qui apparaissent au moins deux fois ;


o Les plus longs facteurs qui apparaissent
au moins deux fois ;
o Le nombre de facteurs distincts ;
o Plus court facteurs uniques ;
o Répétitions super maximales ;
o…

Chap 4– Structures d’Index - BioAlgo 46


Exemple de recherche dans un
arbre des suffixes

Chap 4– Structures d’Index - BioAlgo 47


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12

Soit texte = GATAAG ATTG A T G

o Les facteurs qui apparaissent au moins deux fois ;


o Les plus longs facteurs qui apparaissent
au moins deux fois ;
o Le nombre de facteurs distincts ;
o Plus court facteurs uniques ;
o Répétitions super maximales ;

Chap 4– Structures d’Index - BioAlgo 48


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = G A T A A G A T T G A T G

Chap 4– Structures d’Index - BioAlgo 49


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = G A T A A G A T T G A T G
Les facteurs qui apparaissent au moins deux fois
A : 5, AT : 3, G : 4, GAT : 3, T: 4 , T G : 2,
Les plus longs facteurs qui apparaissent
au moins deux fois : GAT
Le nombre de facteurs distincts : 64
T(2,1) G(0,1) A(1,1) AAGATTGATG(3,10) G(9,1)
TGATG(8,5) AT(1,2) T(2,1) GATTGATG(5,8)
AGATTGATG(4,9) ATG(10,3) TGATG(8,5) G(12,1)
AAGATTGATG(3,10) TGATG(8,5) G(12,1)
AAGATTGATG(3,10) 1+1+1+10+1+5+2+1+8+9+3+5+1+10+5+1+10=64

Chap 4– Structures d’Index - BioAlgo 50


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = G A T A A G A T T G A T G

Chap 4– Structures d’Index - BioAlgo 51


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = GATAA G ATTGA T G

Les facteurs uniques : sont les facteurs qui mènent vers


un sous-arbre ayant une seule feuille

GATA | ATA | TA | AA | AG | GATT | ATT | TT | TGA


| GATG | ATG

Chap 4– Structures d’Index - BioAlgo 52


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = GATAA G ATTGA T G

Plus court facteurs uniques : TA | AA | AG | TT |


TGA | ATG

Les préfixes communs de taille >=2 des suffixes triés : sont


les branches (à partir de la racine) qui font dériver deux fils
ou plus
AT |GAT | TG |

Chap 4– Structures d’Index - BioAlgo 53


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = GATAA G ATTGA T G

Répétitions super maximales : répétitions qui ne sont


facteurs d’aucune autre répétition
Parmi l’ensemble des facteurs répétés
GAT, TG

Chap 4– Structures d’Index - BioAlgo 54


Arbre des suffixes
Recherche dans un arbre des suffixes
0 1 2 3 4 5 6 7 8 9 10 11 12
Soit texte = GATAA G ATTGA T G
Les facteurs uniques :
GATA | ATA | TA | AA | AG | GATT | ATT | TT |
TGA | GATG | ATG

Plus court facteurs uniques : TA | AA | AG | TT | TGA


| ATG

Les préfixes communs de taille >=2 des suffixes triés : AT


|GAT | TG |

Répétitions super maximales : GAT, TG

Chap 4– Structures d’Index - BioAlgo 55


Arbre des suffixes
Exercice
0 1 2 3 4 5 6 7 8 9 10
Soit texte = ATGAC AT A TG A

Déterminer:

o Les facteurs qui apparaissent au moins deux fois ;


o Les plus longs facteurs qui apparaissent
au moins deux fois ;
o Le nombre de facteurs distincts ;
o Plus court facteurs uniques ;
o Répétitions super maximales ;

Chap 4– Structures d’Index - BioAlgo 56


Arbre des suffixes
Exercice
0 1 2 3 4 5 6 7 8 9 10
Soit texte = ATGAC AT A TG A

Chap 4– Structures d’Index - BioAlgo 57


Arbre des suffixes
Exercice
 Les facteurs qui apparaissent au moins deux fois A : 5, AT : 3, ATG : 2,
ATGA : 2, G : 2 ,GA : 2, T : 3, TG : 2, TGA : 2
 Les plus longs facteurs qui apparaissent au moins deux fois
ATGA
 Le nombre de facteurs distincts : 52
T(1,1) GA(2,2) CATATGA(4,7) A(0,1) GA(2,2)
ATGA(7,4) CATATGA(4,7) T(1,1) CATATGA(4,7) CATATGA(4,7) GA(2,2)
ATGA(7,4) CATATGA(4,7)
1+2+7+1+2+4+7+1+7+7+2+4+7=52
 Plus court facteurs uniques : C, TA
 Répétitions super maximales : AT, ATGA

Chap 4– Structures d’Index - BioAlgo 58

Vous aimerez peut-être aussi