Arbre des suffixes : algorithme d Ukkonen. Thierry Lecroq Université de Rouen



Documents pareils
ARBRES BINAIRES DE RECHERCHE

chapitre 4 Nombres de Catalan

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Les structures de données. Rajae El Ouazzani

Manuel v. 6sV Simplement surfer. Simplement cliquer. Simplement bloguer.

CH.6 Propriétés des langages non contextuels

Les arbres binaires de recherche

Algorithmes de recherche

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

TP de réseaux : Domain Name Server.

Compression de Données - Algorithme de Huffman Document de Conception

Calcul du niveau de transition

Arbres binaires de recherche

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Feuille TD n 1 Exercices d algorithmique éléments de correction

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

Chp. 4. Minimisation d une fonction d une variable

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

INF601 : Algorithme et Structure de données

La Gestion de fichiers Supports réalisés avec OpenOffice.org 2.3 Writer. La Gestion de fichiers. Niveau : Débutant Auteur : Antonio da Silva

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

STRUCTURE DE L ORDINATEUR

Mesurer les performances (CPU) sous Linux

LE PROBLEME DU PLUS COURT CHEMIN

Algorithmique et Programmation, IMA

1 de 46. Algorithmique. Trouver et Trier. Florent Hivert. Mél : Florent.Hivert@lri.fr Page personnelle : hivert

Quelques Algorithmes simples

Cours de Master Recherche

Master IMEA 1 Calcul Stochastique et Finance Feuille de T.D. n o 1

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1


Protection individuelle

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

TP3 : Manipulation et implantation de systèmes de fichiers 1

Recherche dans un tableau

Algorithmique et Programmation Fonctionnelle

Transmission d informations sur le réseau électrique

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

de calibration Master 2: Calibration de modèles: présentation et simulation d

Plan. 5 Actualisation. 7 Investissement. 2 Calcul du taux d intérêt 3 Taux équivalent 4 Placement à versements fixes.

Correction du baccalauréat ES/L Métropole 20 juin 2014

C f tracée ci- contre est la représentation graphique d une

1 Recherche en table par balayage

Leçon 01 Exercices d'entraînement

Mathématiques financières

Pour accéder au Prêt numérique

Correction du baccalauréat STMG Polynésie 17 juin 2014

CORRECTION EXERCICES ALGORITHME 1

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

MODE D EMPLOI V.2.0. Installation. Nouveautés V.02. Fais ton journal - version mars Mode d emploi -

Capacité d un canal Second Théorème de Shannon. Théorie de l information 1/34

Cahier n o 6. Mon ordinateur. Fichiers et dossiers Sauvegarde et classement

LIVRET DE COMPETENCES

MATHEMATIQUES GRANDEURS ET MESURES

Seconde et première Exercices de révision sur les probabilités Corrigé

Formats d images. 1 Introduction

L exclusion mutuelle distribuée

Définitions. Numéro à préciser. (Durée : )

Algorithmique I. Algorithmique I p.1/??


Démonstration d utilisation De NesmaCom

gestion des processus La gestion des processus

Organigramme / Algorigramme Dossier élève 1 SI

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

UTILISER LA MESSAGERIE

Ebauche Rapport finale

Représentation d un entier en base b

CS 01 D/B2I/ CONSULTATION ET TRANSMISSION DE L INFORMA-

TD 1 - Structures de Traits et Unification

MIS 102 Initiation à l Informatique

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

RapidMiner. Data Mining. 1 Introduction. 2 Prise en main. Master Maths Finances 2010/ Présentation. 1.2 Ressources

Carré parfait et son côté

Algorithmes d'apprentissage

Résolution de systèmes linéaires par des méthodes directes

Application 1- VBA : Test de comportements d'investissements

(4) (1) (3) (2) (5) Notice de pose : Volet roulant rénovation Tirage direct. Vos outils : NOTICE ETAPE 1 : OUVERTURE DU COLIS 1/6. Un crayon.

Le théorème de Perron-Frobenius, les chaines de Markov et un célèbre moteur de recherche

Sauvegarder automatiquement sa clé USB

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Informatique Générale

Chapitre 5 : Flot maximal dans un graphe

Jean-Philippe Préaux

Université de Bangui. Modélisons en UML

Algorithmique et programmation : les bases (VBA) Corrigé

Architecture des Systèmes d Information Architecture des Systèmes d Information

2. Pour accéder au Prêt numérique, écrivez dans la barre d adresse de votre navigateur Web.

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

COUR D APPEL DE LYON PROCEDURE INFORMATIQUE IMPRIMANTES. Imprimantes SAR de Lyon / Novembre 2007 Page 1 sur 14

Le produit semi-direct

Introduction à la théorie des graphes. Solutions des exercices

Gérer, stocker et partager vos photos grâce à Picasa. Janvier 2015

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

DNS : Domaine Name System

LES DIFFERENTS PAS EN STEP. Variantes

Transcription:

Arbre des suffixes : algorithme d Ukkonen Thierry Lecroq Université de Rouen

Algorithme d Ukkonen L algorithme de construction de l arbre l des suffixes d un d mot y de longueur n d Ukkonen est un algorithme incrémental qui insert une à une les lettres de y dans l arbre l de la première à la dernière. re. 2

Algorithme d Ukkonen On ajoute le terminateur $ au mot y : y = y[0.. [0..n-1]$ avec $ alph(y) 3

Définition L arbre implicite des suffixes de y est obtenu à partir de l arbre l des suffixes de y$ en supprimant toutes les occurrences du symbole $,, puis en supprimant toutes les branches sans étiquettes, puis en supprimant tous les nœuds n internes qui n ont pas au moins deux descendants. 4

Définition L arbre implicite de suffixes de y[0.. [0..i]] est noté T i. 5

Exemple y = tagta ta gta$ $ gta$ $ a $ gta$ 0 3 1 4 5 2 arbre des suffixes de tagta$ tagta agta gta 0 1 2 arbre implicite des suffixes de tagta 6

Algorithme d Ukkonen On associe chaque nœud n interne avec le mot formant l étiquette l depuis la racine à ce nœudn interne. Ainsi la racine est associée à ε. On associe l indice l j à la feuille au bout du chemin étiqueté par y[j....n]] depuis la racine. 7

Un premier algorithme en O(n 3 ) n phases la phase i+1 construit T i+1 à partir de T i divisée e en i+2 extensions l extension j insère y[j....i+1] dans l arbre l en recherchant la fin du chemin étiqueté par y[j....i]] depuis la racine de T i rajoutant y[i+1] si nécessairen 8

algo UKKONEN 1 (y, n) n construire T 0 pour i 0 à n-1 faire // phase i+1 pour j 0 à i+1 faire // extension j trouver la fin du chemin étiqueté par y[j....i]] depuis la racine ajouter y[i+1] si nécessairen 9

Règles d extension des suffixes Durant l extension l j de la phase i+1, l algorithmel trouve la fin du chemin étiqueté par y[j....i]] depuis la racine pour, éventuellement, ajouter y[i+1]. Cet ajout se fait alors en accord avec 3 règles. r 10

Règle 1 Le chemin étiqueté par y[j....i]] depuis la racine se termine sur une feuille, y[i+1] est alors ajouté à la fin de l étiquette l de la branche menant à la cette feuille. 11

Règle 2 Le chemin étiqueté par y[j....i]] depuis la racine ne se termine pas sur une feuille. Aucun chemin étiqueté par y[i+1] ne commence après s ce chemin. Dans ce cas une nouvelle feuille est créé éée e avec une branche y menant étiquetée e par y[i+1]. Si le chemin étiqueté par y[j....i]] depuis la racine ne se termine pas sur un nœud n alors un nouveau nœud doit être créé et la branche cassée. 12

Règle 3 Le chemin étiqueté par y[j....i]] depuis la racine ne se termine pas sur une feuille. Un chemin étiqueté par y[i+1] commence après ce chemin. Donc y[j....i+1] est déjà d dans l arbre l : on ne fait rien. 13

Lien suffixe On définit d le lien suffixe d un d nœud n interne av par s(av) ) = v avec a une lettre et v un mot. 14

Lemme 1 Si un nouveau nœud n interne av est ajouté à l arbre pendant l extension l j de la phase i+1 alors soit il y a déjà d un nœud n interne v dans l arbre l ; soit un nœud n interne v va être créé dans l extension j+1 de la phase i+1. 15

Preuve Un nouveau nœud n interne av est créé dans l extension j (de la phase i+1) uniquement lorsque la règle r d extension d 2 s applique. s Cela signifie que dans l extension l j,, le chemin étiqueté par av se poursuit par une lettre différente c de y[i+1]. Donc lors de l extension l j+1, il y a un chemin v qui se poursuit par c. Il y a alors 2 cas. 16

Preuve (suite) Soit le chemin v est poursuivi uniquement par la lettre c et la règle r 2 crée e un nœud n s(av) à la fin du chemin v ; Soit le chemin v est poursuivi par au moins 2 lettres différentes et dans ce cas un nœud n s(av) existe déjà d ; dans les 2 cas, le lemme est prouvé. 17

Corollaire 2 Dans l algorithme l d Ukkonend Ukkonen,, tout nouveau nœud interne créé aura un lien suffixe avant la fin de l extension l suivante. 18

Corollaire 3 Dans un arbre implicite des suffixes T i, s il s y a un nœud n interne av alors il y a un nœud n interne v. 19

algo EXTENSION(j) trouver le premier nœud n v au dessus de y[j-1.. -1..i]] qui possède un lien suffixe soit u l étiquette de la branche entre v et y[j-1.. -1..i] si v racine alors v s(v) suivre le chemin étiqueté par u depuis v utiliser les règles r d extension d pour s assurer s que y[j....i+1] est dans l arbrel si un nœud n w avait été créé pendant l extension l j-1 alors mettre s(w) à jour 20

Astuce 1 Les étiquettes sont représent sentées es par des couples (position, longueur). Lorsque l algorithme l doit suivre le chemin étiqueté par u à partir de s(v) ) (ou la racine), puisqu on est assuré de trouver ce chemin le parcours de ce chemin s effectue s en temps proportionnel au nombre de nœuds n du chemin. Donc le temps nécessaire n pour tous les parcours de ce type est O(n). 21

Définition La profondeur en nœud n d un d nœud n interne v est le nombre de nœuds n sur le chemin de la racine au nœud v. 22

Lemme 4 Lorsque l algorithme l d Ukkonend emprunte un lien suffixe de v à s(v), à ce moment là, l, la profondeur en nœud n de v est au plus un plus la profondeur en nœud n de s(v). 23

Théorème 5 En utilisant les liens suffixes et l astuce l 1, une phase de l algorithme l d Ukkonend s exécute en O(n). 24

Corollaire 6 En utilisant les liens suffixes et l astuce l 1, l algorithme d Ukkonend s exécute en O(n 2 ). 25

Observation 1 Durant une phase i+1, si la règle r d extension d 3 s applique à l extension j,, elle s appliquera s aussi aux extensions j+1 à i+1. 26

Astuce 2 Une phase i+1 s arrs arrête dès d s que la règler d extension 3 s applique s lors d une d extension. 27

Observation 2 Dès s qu une une feuille étiquetée j est créé éée e lors d uned phase, la règle r d extension d 1 s y s y appliquera pour chaque extension de toutes les phases suivantes. 28

Astuce 3 Les branches menant aux feuilles sont étiquetéeses par (i,( ). 29

Feuille Soit f l indice de la dernière re feuille créé éée e dans l arbre en cours de construction. 30

algo PHASE(i) j f répéter j j+1 EXTENSION(j) jusqu à j = i+1 ou la règle r 3 s appliques f j-1 31

algo UKKONEN(y, n) n construire T 0 f 0 pour i 0 à n-1 faire PHASE(i) 32

Théorème 7 L algorithme d Ukkonend s exécute en temps O(n). 33

Détails d implantation Les étiquettes des branches sont stockées dans les nœuds d arrivd arrivée. Un nœud n contient les informations suivantes : parent : le nœud n parent ; s : le lien suffixe ; longueur : la longueur de l étiquette l de la branche menant au nœud n ; position : la position de l étiquette l de la branche menant au nœud. n 34

algo ARBRE-DES-SUFFIXES(y,n y,n) racine nouveau nœudn feuille nouveau nœudn créer la transition (racine( racine,, (0, ), feuille) s(racine) racine derniernœud racine nœud racine g 0 j 0 35

pour i 1 à n - 1 faire tantque j i faire si g = 0 ou g = longueur(nœud ud) alors si CIBLE-PAR-UNE-LETTRE(nœud ud, y[i]) est définied alors nœud CIBLE-PAR-UNE-LETTRE(nœud ud, y[i]) g 1 rupture // règle r 3 sinon feuille nouveau nœudn créer la transition (nœud( ud,, (j,( ), feuille) si s(derniernœud) ) n est n pas défini d alors s(derniernœud) nœud derniernoeud nœud 36

sinon si y[i] ] = y[position(nœud)+ )+g] alors g g + 1 rupture // règle r 3 sinon nœudparent parent(nœud ud) nœud COUPE(nœudParent udparent, nœud, g) feuille nouveau nœudn créer la transition (nœud( ud,, (j,( ), feuille) si s(derniernœud) ) n est n pas défini d alors s(derniernœud) nœud derniernoeud nœud 37

si nœud racine alors si g = longueur(nœud ud) et s(nœud) ) est définid alors nœud s(nœud) g longueur(nœud ud) j j + 1 continuer nœudparent parent(nœud ud) si nœudparent racine alors nœud s(nœudparent) sinon nœud racine g g - 1 38

h i - g tantque g > 0 faire // descente rapide nœud CIBLE-PAR-UNE-LETTRE(nœud ud, y[h]) g longueur(nœud ud) si g > g alors rupture sinon g g - g h h + g si g = 0 alors si s(derniernœud) ) n est n pas défini d alors s(derniernœud) nœud derniernoeud nœud si nœud racine alors g longueur(nœud ud) j j + 1 39

algo COUPE(nœudParent udparent, nœud, g) p position(nœud ud) l longueur(nœud ud) détruire la branche (nœudparent( udparent, nœud) nouveaunoeud nouveau nœudn créer la transition (nœudparent( udparent,, (p,( l), nouveaunœud ud) créer la transition (nouveaun( nouveaunœud,, (p+g,( l g), nœud) retourner nouveaunœud ud 40