Algorithme de Boyer Moore. Thierry Lecroq Université de Rouen 1



Documents pareils
DOCM Solutions officielles = n 2 10.

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

Intégration et probabilités TD1 Espaces mesurés Corrigé

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

Plus courts chemins, programmation dynamique

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

FORD C-MAX + FORD GRAND C-MAX CMAX_Main_Cover_2013_V3.indd /08/ :12

Cours d Analyse. Fonctions de plusieurs variables

Chapitre 5 : Flot maximal dans un graphe

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

ARBRES BINAIRES DE RECHERCHE

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

L ALGORITHMIQUE. Algorithme

Organigramme / Algorigramme Dossier élève 1 SI

Continuité d une fonction de plusieurs variables

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

Algorithmique et Programmation, IMA

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Vecteurs. I Translation. 1. Définition :

1 Recherche en table par balayage

CORRECTION EXERCICES ALGORITHME 1

Image d un intervalle par une fonction continue


Théorie et codage de l information

Chapitre 7 : Intégration sur un intervalle quelconque

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

Perl Orienté Objet BioPerl There is more than one way to do it

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

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

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

LES ACCORDS : APPLICATION A LA GUITARE

LE PROBLEME DU PLUS COURT CHEMIN

Équations non linéaires

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

Rappels et compléments, première partie : Nombres complexes et applications à la géométrie

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Algorithmique et structures de données I

TSTI 2D CH X : Exemples de lois à densité 1

Intégration et probabilités TD1 Espaces mesurés

Algorithmique I. Algorithmique I p.1/??

Simulation de variables aléatoires

Chapitre 7. Récurrences

SAV ET RÉPARATION. Savoir-faire.

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

V- Manipulations de nombres en binaire

Circuits RL et RC. Chapitre Inductance

Baccalauréat S Nombres complexes Index des exercices sur les complexes de septembre 1999 à juin 2012 Tapuscrit : DENIS VERGÈS

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

Séminaire TEST. 1 Présentation du sujet. October 18th, 2013

4. Les structures de données statiques

Licence Sciences et Technologies Examen janvier 2010

La mesure de Lebesgue sur la droite réelle

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

document proposé sur le site «Sciences Physiques en BTS» : BTS AVA 2015

Développement décimal d un réel

Par combien de zéros se termine N!?

Continuité et dérivabilité d une fonction

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

Correction TD algorithmique

chapitre 4 Nombres de Catalan

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Chp. 4. Minimisation d une fonction d une variable

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

ELEMENTS DE COMPTABILITE NATIONALE

Quelques Algorithmes simples

La problématique des tests. Cours V. 7 mars Comment quantifier la performance d un test? Hypothèses simples et composites

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

Encryptions, compression et partitionnement des données

Fonctions holomorphes

Adama MBODJI MBODJ.SYSTEM

Styler un document sous OpenOffice 4.0

Programmation Objet - Cours II

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Mécanique : Cinématique du point. Chapitre 1 : Position. Vitesse. Accélération

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

Chap 4. La fonction exponentielle Terminale S. Lemme : Si est une fonction dérivable sur R telle que : = et 0! = 1 alors ne s annule pas sur R.

Algorithmique et Programmation

Quels sont les espaces disponibles sur l ordinateur pour stocker ses documents et comment accéder facilement au dossier «My Documents»?

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Cours 02 : Problème général de la programmation linéaire

Les arbres binaires de recherche

Cours d Informatique

alg - Classes, instances, objets [oo] Exercices résolus

n N = u N u N+1 1 u pour u 1. f ( uv 1) v N+1 v N v t

Installer un espace de travail collaboratif et d e learning.

Bases de programmation. Cours 5. Structurer les données

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

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

3. Conditionnement P (B)

Algorithmes récursifs

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Références : Loi n du 29 décembre 1979 modifiée par la loi n du 2 février 1996 (article 53).

Logique. Plan du chapitre

I. Polynômes de Tchebychev

PEUT-ON «VOIR» DANS L ESPACE À N DIMENSIONS?

INFORMATIONS DIVERSES

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

Transcription:

Algorithme de Boyer Moore 1

Phase de recherche Problème : localiser toutes les occurrences d un mot x de longueur m dans un texte y de longueur n Méthode : fenêtre glissante 2

Fenêtre glissante x y fenêtre sens des décalages 3

Fenêtre glissante x y 4

Fenêtre glissante x y 5

Algorithme de recherche de mot Succession de tentatives (comparaison du mot et du contenu de la fenêtre) décalages (de la fenêtre vers la droite) 6

Algorithme de Boyer Moore tentative : compare les lettres du mot et les lettres de la fenêtre, de la droite vers la gauche, en commençant par la lettre la plus à droite 7

Fenêtre glissante x i a z y b z j sens des comparaisons Le suffixe z = x[i+1..m 1] est égal au facteur z = y[j m+i+2..j] et la lettre a = x[i] est différente de la lettre b = y[j m+i+1] 8

Décalage Alors le décalage consiste à choisir le maximum entre aligner en face de y[j m+i+1..j] le facteur cz de x[0..m 2] le plus à droite ou s il n existe pas, à aligner le plus long préfixe de x suffixe de z en face de y[j m+i+1] l occurrence de b la plus à droite dans x 9

Décalage Alors le décalage consiste à choisir le maximum entre aligner en face de y[j m+i+1..j] le facteur cz de x[0..m 2] le plus à droite ou s il n existe pas, à aligner le plus long préfixe de x suffixe de z ne dépend que de x en face de y[j m+i+1] l occurrence de b la plus à droite dans x dépend de A 10

3 types de décalages x a z y b z x c z pas de contrainte sur c (éventuellement c = a) : décalage de faible suffixe c a : décalage du bon suffixe c = b : décalage du meilleur facteur 11

Décalage On définit deux conditions, pour 0 i m 1, 1 d m et b A la condition de suffixe Cs Cs(i,d) = 0 < d i+1 et x[i d+1..m d 1] suff x ou i+1 < d et x[0..m d 1] suff x 12

Décalage On définit deux conditions, pour 0 i m 1, 1 d m et b A la condition d occurrence Co Co(b,i,d) = 0 < d i et x[i d] = b ou i < d 13

Décalage Alors la fonction de meilleur facteur est définie comme suit, pour 0 i m 1, et b A meil fact(i,b) = min { d Cs(i,d) et Co(b,i,d) sont satisfaites } 14

algo BM(x,m,y,n) j m 1 tantque j < n faire i m 1 tantque i 0 et x[i] = y[j m+1+i] faire i i 1 si i < 0 alors signaler une occurrence de x j j + pér(x) sinon j j + meil fact(i,y[j m+1+i]) 15

Décalage On définit la condition Co aff, pour 0 i m 1 et 1 d m par Co aff(i,d) = 0 < d i et x[i d] x[i] ou i < d 16

Décalage Alors la table du bon suffixe est définie comme suit, pour 0 i m 1 bon suff[i] = min { d Cs(i,d) et Co aff(i,d) sont satisfaites } 17

algo BM FAIBLE(x,m,y,n) j m 1 tantque j < n faire i m 1 tantque i 0 et x[i] = y[j m+1+i] faire i i 1 si i < 0 alors signaler une occurrence de x j j + pér(x) sinon j j + bon suff[i] 18

Décalage On définit la table dern occ : A de la façon suivante { 1,2,, m } dern occ[a] = min { { m 1 k 0 k m 2 et pour a A x[k] = a } {m}} 19

algo BM FAIBLE AVEC DERN OCC(x,m,y,n) j m 1 tantque j < n faire i m 1 tantque i 0 et x[i] = y[j m+1+i] faire i i 1 si i < 0 alors signaler une occurrence de x j j + pér(x) sinon j j + max{bon suff[i], dern occ[y[j m+1+i]] m+1+i} 20

Décalage Remarque pér(x) = meil fact(0,a) = bon suff[0] a A 21

Phase de prétraitement : calcul de la table bon suff x i a z bon suff[i] x c z suff[j] j 22

Calcul de la table bon suff On définit la table suff par : suff[i] = lsc(x, x[0..i]) où lsc(x,y) = longueur du plus long suffixe commun à x et y 23

algo SUFFIXES(x,m) g m 1 suff[m 1] m pour i m 2 à 0 faire si i > g et suff[i+m 1 f] i g alors suff[i] min{suff[i+m 1 f], i g} sinon g min{i,g} f i tantque g 0 et x[g] = x[g+m+1 f] faire g g 1 suff[i] f g retourner suff 24

Invariants de l algorithme SUFFIXES(x,m) x 0 g i f j i+m 1 f m 1 b z a z z = lsc(x,x[0..f]) 25

Proposition 1 Complexité de l algorithme SUFFIXES(x,m) L algorithme SUFFIXES(x,m) calcule les valeurs de la table suff en temps et espace O(m). Preuve (idée) : Chaque lettre comparée positivement n est pas recomparée : m comparaisons. Chaque lettre comparée négativement implique une décrémentation de i : m 1 comparaisons. Au total : 2m 1 comparaisons. 26

Phase de prétraitement : calcul de la table bon suff x i a z m j 1 x c z j suff[j] bon suff[i] = m j 1 avec i = m 1 suff[j] 27

Phase de prétraitement : calcul de la table bon suff x i z m j 1 x j bon suff[i] = m j 1 28

algo BON SUFFIXES(x,m,suff) i 0 pour j m 2 à 1 faire si j = 1 ou suff[j] = j+1 alors tantque i < m 1 j faire bon suff[i] m 1 j i i+1 pour j 0 à m 2 faire bon suff[m 1 suff[j]] m 1 j retourner bon suff 29

Proposition 2 Complexité de l algorithme BON SUFFIXE(x,m,suff) L algorithme BON SUFFIXE(x,m,suff) calcule les valeurs de la table bon suff en temps et espace O(m). Preuve (idée) : i varie de m 2 à 1 dans la première boucle pour ; j varie de 0 à m 1 min{i}=m dans la première boucle pour ; i varie de 0 à m 2 dans la deuxième boucle pour. 30

Lemme 3 Lemme 3 Soient x un mot, y un texte, v un mot primitif et k un entier tels que v 2 suff x, y=v k et k 2. Durant l exécution de l algorithme BM FAIBLE(x,m,y,n), s il existe une tentative T 0 à une position j 0 sur y qui n est pas de la forme l v (l N), celle ci est suivie, immédiatement ou non, d une tentative à la position j = min{ h h = l v, h > j 0, l N }. 31

Lemme 3 : figure y j 0 j v v v v v v v v v v x v v x v v 32

Lemme 3 : preuve Preuve v est primitif donc au plus v comparaisons peuvent être effectuées lors de T 0. Soit a = x[i] la lettre du mot qui provoque la comparaison négative (b = y[j 0 m+1+i] a). Soit d 0 =j 0 j. Cs(i,d 0 ) est satisfaite : d 0 i et x[i d 0 +1..m d 0 1] suff x Co aff(i,d 0 ) est satisfaite : b = x[i d 0 ] x[i] = a. donc bon suff[i] d 0. 33

Lemme 3 : figure j 0 j y v v v v b v v v v v v x v av d 0 i x v b v 34

Lemme 3 : preuve Si bon suff[i] < d 0 alors une tentative T 1 suit la tentative T 0 sur laquelle on peut appliquer le même raisonnement. Une suite finie de telles tentatives mène à une tentative à la position j. 35

Analyse de la phase de recherche Soit T une tentative à la position j sur y avec bz suff y[0..j], az suff x, a b, z = wv k, w suff v, aw suff x, k 2 et v primitif. 36

Lemme 4 Lemme 4 Il n y a pas eu de tentatives aux positions j l v avec 1 l k 1 avant la tentative T. 37

Lemme 4 : preuve Preuve Par l absurde. Soit T 0 une tentative à une position j 0 = j l 0 v avec 1 l 0 k 1 : bwv k l 0 suff y[0..j 0 ] awv k l 0 suff x i 0 = m w (k l 0 ) v on alors d 0 = bon suff[i 0 ] > l 0 v. 38

Lemme 4 : figure j 0 j y b w v v v v v v T a w v v i v v v v après T c w v v v v v v v v T 0 i 0 a w v v v d 0 après T 0 c w v v v v v v v v 39

Lemme 4 : preuve Tout décalage plus petit et non multiple de v contredit le fait que v est primitif. Tout décalage plus petit et multiple de v alignerait une lettre de a de x en face de la lettre b de y donc bon suff[i 0 ] > l 0 v ce qui signifie que la tentative T à la position j n a pas pu avoir lieu d où la contradiction. 40

Lemme 5 Lemme 5 Avant la tentative T il n y a pas eu de tentative aux positions l telles que j z + v l j v. Preuve Lemme 4 : pas de tentative aux positions j l v avec 1 l k 1. Lemme 3 : toute tentative à une position comprise entre j z + v et j v est suivie (immédiatement ou non) par une tentative à une position j l v avec 1 l k 1. 41

Corollaire 6 Corollaire 6 Avant la tentative T au plus 3 v 3 lettres du facteur z de y ont été comparées à des lettres de x. Preuve Lemme 5 : les tentatives précédant T et pendant lesquelles des lettres de z ont pu être comparées n ont pu intervenir qu à des positions dans les intervalles : [j z +1,j z + v 1] et [j v +1,j 1]. 42

Corollaire 6 : preuve Comme v est primitif, ces tentatives effectuent au plus v comparaisons. D où 3( v 1) lettres de z déjà comparées. 43

Corollaire 6 : figure j y b w v v v v v v v 1 v 1 v 1 44

Théorème 7 Théorème 7 Lors de la localisation d un mot x de longueur m tel que pér(x) > m/3 dans un texte y de longueur n, l algorithme BM FAIBLE(x,m,y,n) effectue moins de 4n comparaisons entre des lettres de x et des lettres de y. 45

Théorème 7 : preuve Preuve Pour une tentative T à la position j, on note t le nombre d occurrences de lettres de y comparées pour la première fois au cours de cette tentative et d la longueur du décalage qui suit. Nous allons borner le nombre de comparaisons effectuées lors de la tentative T par 3d+t. 46

Théorème 7 : preuve Soit z = lcs(x,y[0..j]). Si z 3d, le nombre de comparaisons effectuées lors de la tentative T est au plus z +1 et la lettre y[j] n avait pas été comparée avant T (t 1). Donc, dans ce cas, z +1 3d+t. 47

Théorème 7 : preuve Si z > 3d, cela implique z=wv k, bz suff y[0..j], az suff x, a b, k 2, aw suff v et d v. Corollaire 6 : au plus 3 v 3 lettres de z ont déjà été comparées donc t z 3 v +3 z 3d+3 d où z +1 3d+ z 3d+3 = z +3 3d+t. 48

Algorithme de Galil Pour les mots périodiques on applique une technique dite de «mémorisation de préfixe» [Galil 1979] : complexité en O(n). 49

algo GALIL(x,m,y,n) l 0 j m 1 tantque j < n faire i m 1 tantque i l et x[i] = y[j m+1+i] faire i i 1 si i < l alors signaler une occurrence de x l m pér(x) j j + pér(x) sinon l 0 j j + max{bon suff[i], dern occ[y[j m+1+i]]} 50

Algorithme de Smyth [Smyth 2003] : la technique de «mémorisation de préfixe» peut s appliquer à chaque fois que la longueur du décalage est supérieure à i : preuve simple en 4n. 51

algo SMYTH(x,m,y,n) l 0 j m 1 tantque j < n faire i m 1 tantque i l et x[i] = y[j m+1+i] faire i i 1 si i < l alors signaler une occurrence de x l m pér(x) j j + pér(x) sinon si bon suff[i] > i et bon suff[i] > dern occ[y[j m+1+i]] alors l m bon suff[i] sinon l 0 j j + max{bon suff[i], dern occ[y[j m+1+i]]} 52

Algorithme TURBO BM Mémorisation du facteur du texte reconnu lors de la tentative précédente [CCGJLPR 1994] Deux avantages : saut ; turbo décalage. 53

Saut y z z x z x z z 54

Turbo décalage : si z < z y z b z x z d x x z a z a z a z u turbo décalage 55

Turbo décalage : si z < z u = x[m d..i] z uz suff x et z suff x donc z suff z uz donc z est un bord de z uz donc d = uz est une période de z uz les lettres a et b de y sont à distance d donc ne peuvent pas être dans une occurrence du suffixe z uz de x donc le décalage doit être supérieur à z z. 56

algo TURBO BM(x,m,y,n) d 0 mémoire 0 j m 1 tantque j < n faire i m 1 tantque i 0 et x[i] = y[j m+1+i] faire si i = m d alors i i mémoire 1 sinon i i 1 si i < 0 alors signaler une occurrence de x d pér(x) mémoire m d sinon turbo mémoire m+1+i si turbo bon suff[i] alors d bon suff[i] mémoire min{m d,m i} sinon d max{turbo,m i 1} mémoire 0 j j + d // saut 57

Algorithme TURBO BM Complexité : au pire 2n comparaisons entre lettres du mot et lettres du texte. 58

Algorithme Apostolico Giancarlo Mémorisation des facteurs du texte plus long suffixe du mot aux positions droites des fenêtres : S[j ] = k k < m et x[m k..m 1] = y[j k+1..j ] et x[m k 1] y[j k] ou k = m et x = y[j m+1..j ] suff[i] = lcs(x[0..i],x) 59

Algorithme Apostolico Giancarlo S[j ] y j j x? suff[i] i 60

Algorithme Apostolico Giancarlo 4 cas : cas 1 : suff[i] S[j ] et suff[i] = i+1 : S[j] = m et d = pér(x) 61

Algorithme Apostolico Giancarlo S[j ] y j j x i suff[i] S[j] 62

Algorithme Apostolico Giancarlo 4 cas : cas 2 : suff[i] < S[j ] et suff[i] i : S[j] = m 1 i+suff[i] et d = bon suff[i suff[i]] 63

Algorithme Apostolico Giancarlo S[j ] y j j x i suff[i] S[j] 64

Algorithme Apostolico Giancarlo 4 cas : cas 3 : suff[i] > S[j ] et suff[i] i : S[j] = m 1 i+s[j ] et d = bon suff[i S[j ]] 65

Algorithme Apostolico Giancarlo S[j ] y j j x i suff[i] S[j] 66

Algorithme Apostolico Giancarlo 4 cas : cas 4 : suff[i] = S[j ] : saut 67

Algorithme Apostolico Giancarlo S[j ] y j j x i suff[i] 68

Algorithme Apostolico Giancarlo Nombres de comparaisons dans le pire des cas : 2n [Apostolico & Giancarlo 1986] 3n/2 [Crochemore & Lecroq 1997] 69