Algorithmes sur les mots (séquences)



Documents pareils
STI2D Logique binaire SIN. L' Algèbre de BOOLE

Notes de révision : Automates et langages

Chapitre 2 Le problème de l unicité des solutions

Correction de l épreuve CCP 2001 PSI Maths 2 PREMIÈRE PARTIE ) (

L'algèbre de BOOLE ou algèbre logique est l'algèbre définie pour des variables ne pouvant prendre que deux états.

Baccalauréat S Asie 19 juin 2014 Corrigé

Techniques d analyse de circuits

/HVV\VWqPHVFRPELQDWRLUHV

Séquence 8. Probabilité : lois à densité. Sommaire

Théorème de Poincaré - Formule de Green-Riemann

Conseils et astuces pour les structures de base de la Ligne D30

Synthèse de cours (Terminale S) Calcul intégral

Guide d'utilisation Easy Interactive Tools Ver. 2

Cryptographie RSA. Introduction Opérations Attaques. Cryptographie RSA NGUYEN Tuong Lan - LIU Yi 1

LANGAGES - GRAMMAIRES - AUTOMATES

Sommaire. 6. Tableau récapitulatif Sophos NAC intégré Vs. NAC Advanced - 17 Février

Toyota Assurances Toujours la meilleure solution

Chapitre 11 : L inductance

Probabilités sur un univers fini

Module 2 : Déterminant d une matrice

LOGICIEL FONCTIONNEL EMC VNX

Compression Compression par dictionnaires

Chapitre VI Contraintes holonomiques

Influence du milieu d étude sur l activité (suite) Inhibition et activation

3- Les taux d'intérêt

Université Paris-Dauphine DUMI2E. UFR Mathématiques de la décision. Notes de cours. Analyse 2. Filippo SANTAMBROGIO

ILT. Interfacultair Instituut voor Levende Talen. Actes de communication. Serge Verlinde Evelyn Goris. Katholieke Universiteit Leuven

Guide des bonnes pratiques

LICENCE DE MATHÉMATIQUES DEUXIÈME ANNÉE. Unité d enseignement LCMA 4U11 ANALYSE 3. Françoise GEANDIER

LITE-FLOOR. Dalles de sol et marches d escalier. Information technique

Réalisation de sites Internet PME & Grandes entreprises Offre Premium. Etude du projet. Webdesign. Intégration HTML. Développement.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

A11 : La représentation chaînée (1ère partie)

Le canal étroit du crédit : une analyse critique des fondements théoriques

Statuts ASF Association Suisse Feldenkrais


Chapitre 1 : Fonctions analytiques - introduction

semestre 3 des Licences MISM annnée universitaire

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

Compte rendu de la validation d'un observateur cascade pour la MAS sans capteurs mécaniques sur la plate-forme d'essai de l'irccyn

Thèse Présentée Pour obtenir le diplôme de doctorat en sciences En génie civil Option : structure

INFORMATIONS TECHNIQUES

Factorisation d entiers (première partie)

ANALYSE NUMERIQUE NON-LINEAIRE

COURS D ANALYSE. Licence d Informatique, première. Laurent Michel

Quelques Algorithmes simples

Recherche dans un tableau


Pour développer votre entreprise LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

Avant d utiliser l appareil, lisez ce Guide de référence rapide pour connaître la procédure de configuration et d installation.

Introduction à la modélisation et à la vérication p. 1/8

Commencer DCP-7055W / DCP-7057W /

Rapport de stage de première année de Master Optimisation de cache d instructions

Electrovanne double Dimension nominale Rp 3/8 - Rp 2 DMV-D/11 DMV-DLE/11

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

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

L exclusion mutuelle distribuée

SYSTEME DE TELEPHONIE

Guide de l'utilisateur

L ALGORITHMIQUE. Algorithme

TUBES ET PROFILS CREUX

INSTALLATION DE DETECTION INCENDIE

Licence M.A.S.S. Cours d Analyse S4

Tout ce qu il faut savoir en math

Nouvelle version de Zonecheck, la 3.0, avec tests DNSSEC

Les structures de données. Rajae El Ouazzani

Introduction à l étude des Corps Finis

INSTRUCTIONS POUR L INSTALLATION ET LE FONCTIONNEMENT DES SERRURES À POIGNÉE BÉQUILLE

Partie 4 : La monnaie et l'inflation

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

ManSafe. pour les Utilitiés. La Protection antichute pour les Industries de l'energie. Français. TowerLatch LadderLatch

NEWS PRO ACTIV. [Juillet 2015] Ce mois-ci on vous parle de. L arrêté est applicable à compter du 1er Juillet 2015.

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Qualité du logiciel: Méthodes de test

SOCIÉTÉ LINNÉENNE DE LYO N FONDEE EN 182 2

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Organigramme / Algorigramme Dossier élève 1 SI

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Cours d algorithmique pour la classe de 2nde

DADSU-CTL-V01X09 Version 2.1.8

KL5121. Pour activer des sorties en fonction de la position d'un codeur

DADSU-CTL-V01X08 Version 2.3.1

Chapitre 7. Récurrences

Cours d Analyse IV Suites et Séries de fonctions

TARIFICATION, PROVISIONNEMENT ET PILOTAGE D UN PORTEFEUILLE DÉPENDANCE

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Arbres binaires de recherche

DSN-CTL-V01R02 Version 1.4.3

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Les processus légers : threads. Système L3, /31

Aerodrome chart ALT AD : 309 (11 hpa)

Magister en : Génie Mécanique

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

TRIGONOMETRIE Algorithme : mesure principale

Titrages acidobasiques de mélanges contenant une espèce forte et une espèce faible : successifs ou simultanés?

Bernard HAMM, Évelyne LAVOISIER

Transcription:

Introduction Algorithmes sur les mots (séquences) Algorithmes sur les mots (textes, séquences, chines de crctères) Nomreuses pplictions : ses de données iliogrphiques ioinformtique (séquences de iomolécules) sécurité informtique Livres : M.Crochemore, C.Hncrt, T.Lecroq, Algorithmique du texte, Vuiert 2001 http://igm.univ-mlv.fr/~mc/chl/chl.html 701 702 Recherche d un motif dns un texte Recherche d un motif dns un texte T[1..n] texte P[1..m] motif Tâche : locliser toutes les occurrences de P dns T (vrintes : vérifier si P pprit dns T, compte le nomre d occurrences) T = P = Algorithme nïf : O(n m) T= = n P= = m-1 703 704

Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 705 706 Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 707 708

Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 709 710 Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 711 712

Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 713 714 Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 715 716

Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 717 718 Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 719 720

Recherche d un motif dns un texte Recherche d un motif dns un texte T = P = T = P = 721 722 Recherche d un motif dns un texte Recherche d un motif dns un texte Quelques oservtions : à chque ps on progresse d une lettre dns le texte l étt de l recherche est défini pr les positions dns le texte et dns le motif le déclge du motif est défini en fonction de l position d échec dns le motif et l lettre du texte qui provoqué l échec Quelques oservtions : à chque ps on progresse d une lettre dns le texte l étt de l recherche est défini pr les positions dns le texte et dns le motif le déclge du motif est défini en fonction de l position d échec dns le motif et l lettre du texte qui provoqué l échec T = * * * * * * * * = = = P = * * * * * T = * * * * * * * * = = = P = * * * * * Automte fini! 723 724

Recherche d un motif dns un texte Recherche d un motif dns un texte P utomte fini étt! préfixe de P (position) q! P q = P[1..q] q+1, si =P[q+1] "(q,)= mx{ i P i est un suffixe de P q } sinon P = 0 1 2 3 4 5 Algorithme qui en résulte : 1. Prétritement : clculer l utomte O(m A ) 2. Recherche : fire mrcher l utomte sur le texte O(n) But : otenir un lgorithme ne dépendnt ps de l tille d lphet Invrint: P q est le préfixe mximl de P qui est un suffixe de l prtie lue de T 725 726 Algorithme de Knuth-Morris-Prtt Algorithme de Knuth-Morris-Prtt T = * * * * = = = P = Quels sont les déclges possiles du motif? Fonction d échec (de supplénce) : f(q)=mx{ k k<q et P k =P[1..k] est un suffixe de P q } q f(q) P = c 0 1 2 3 4 5 6 7-1 0 0 1 2 3 0 1 727 728

Algorithme de Knuth-Morris-Prtt Algorithme de Knuth-Morris-Prtt q f(q) P = c 0 1 2 3 4 5 6 7-1 0 0 1 2 3 0 1 Automte de Knuth-Morris-Prtt c 0 1 2 3 4 5 6 7 Une fois l fonction f clculée KMP(T[1..n],f) j=0 /* pointeur dns P */ for i=1 to n do while j#0 nd P[j+1]$T[i] do j=f(j) endwhile j=j+1 if j==m then output(occurrence de P à l position (i-m)) j=f(j) endif endfor 729 730 Algorithme de Knuth-Morris-Prtt Algorithme de Knuth-Morris-Prtt Comment clculer l fonction d échec Clcul de l fonction d échec P i-1 i j 1 j 2 j 1 =f(i-1) j 2 =f(j 1 ) Décler le motif pr rpport à lui-même jusqu à ce que P[j q +1]=P[i] FE(P[1..m]) f[0]=-1 f[1]=0 k=0 for j=2 to m do while k#0 nd P[k+1]$P[j] do k=f(k) endwhile k=k+1 f(j)=k endfor 731 732

Algorithme de Knuth-Morris-Prtt Algorithme de Knuth-Morris-Prtt Version optimisée (KMP vs MP) Clcul de l fonction d échec optimisée h T = * * * * * = = P = c c h(3)=0 h fonction d échec optimisée q f(q) h(q) 0 1 2 3 4 5 6 7-1 0 0 1 2 3 0 1-1 0 0 0 0 3 0 1 déclge inutile FE(P[1..m]) h[0]=-1 h[1]=0 k=0 for j=2 to m do while k#0 nd P[k+1]$P[j] do k=h(k) endwhile k=k+1 f(j)=k if P[j] $P[k] then h(j)=h(k) else h(j)=k endfor 733 734 Algorithme de Knuth-Morris-Prtt Différence vec l pproche utomte : on peut «piétiner» sur une position de texte u plus log % m déclges sur une position, où %=(1+&5)/2 nomre d or Algorithme de Aho-Corsick Complexité mortie O(n) pour l recherche (KMP) O(m) pour le pré-tritement (FE) Historique : Morris-Prtt (1969), Knuth (1970) 735 736

Algorithme de Aho-Corsick Algorithme de Aho-Corsick Les idées de KMP peuvent se générliser pour l recherche simultnée de plusieurs motifs Algorithme de Aho-Corsick (1974) S={,, } rre digitl (trie) 0 1 2 3 4 5 6 7 737 Algorithme de Aho-Corsick Algorithme de Aho-Corsick S={,, } S={,, } rre digitl (trie) + fonction d échec rre digitl (trie) + fonction d échec + étts finux 0 1 2 3 4 5 6 0 1 2 3 4 5 6 7 7

Algorithme de Aho-Corsick S={,, } rre digitl (trie) + fonction d échec + étts finux = Automte de Aho-Corsick (AC) 0 1 2 3 4 7 L utomte de AC peut être construit en temps O(m) où m est l tille totle des mots de S 5 6 Algorithme de Krp-Rin (1987) 742 Algorithme de Krp-Rin Algorithme de Krp-Rin soit A={0,1,2,3,4,5,6,7,8,9} chque mot P[1..m] peut être encodé pr un nomre: p=p[1] 10 m-1 +P[2] 10 m-2 + +P[m-1] 10+P[m] p peut être clculé en temps O(m) vec le schém de Horner : p=p[m]+10 (P[m-1]+10 (P[m-2] + +10 (P[2]+10 P[1]) )) idée générle : comprer p successivement vec les codges t i de T[i..i+m-1], pour i=1..n-m+1 le pssge de t i à t i+1 se fit en temps constnt : t i+1 =10 (t i -10 m-1 T[i])+T[i+m] (en supposnt que 10 m-1 est pré-clculé) soit A={0,1,2,3,4,5,6,7,8,9} chque mot P[1..m] peut être encodé pr un nomre: p=p[1] 10 m-1 +P[2] 10 m-2 + +P[m-1] 10+P[m] p peut être clculé en temps O(m) vec le schém de Horner : p=p[m]+10 (P[m-1]+10 (P[m-2] + +10 (P[2]+10 P[1]) )) idée générle : comprer p successivement vec les codges t i de T[i..i+m-1], pour i=1..n-m+1 le pssge de t i à t i+1 se fit en temps constnt : t i+1 =10 (t i -10 m-1 T[i])+T[i+m] (en supposnt que 10 m-1 est pré-clculé) Prolème : les nomres mnipulés peuvent être très grnds Prde : mnipuler les nomres modulo q 743 744

Algorithme de Krp-Rin Algorithme de Krp-Rin on lors t i+1 =10 (t i -h T[i])+T[i+m] modulo q, où h=10 m-1 modulo q pssge de t i à t i+1 (illustrtion) : ttention, on peut voir des «fux positifs»! dès qu on trouve une fenêtre cndidte (t i =p), on vérifie en comprnt P et T[i..i+m-1] crctère pr crctère 745 746 Algorithme de Krp-Rin l lgorithme nécessite un pré-tritement en O(m) et mrche en temps O(mn) dns le pire des cs en moyenne il mrche en temps O(n + m (v+n/q)) où v est le nomre d occurrences du motif très fcile à implémenter, plus efficce que l lgorithme nïf 747