Reconnaissance de motifs. Problème localiser les segments d'un texte décrits par une expression rationnelle (régulière) r

Documents pareils
Algorithmes sur les mots (séquences)

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

Notes de révision : Automates et langages

LANGAGES - GRAMMAIRES - AUTOMATES

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

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

Techniques d analyse de circuits

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

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

Tout ce qu il faut savoir en math

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

Chapitre 11 : L inductance

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

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

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

Module 2 : Déterminant d une matrice

Cours d Analyse IV Suites et Séries de fonctions

- Phénoméne aérospatial non identifié ( 0.V.N.I )

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

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

Guide des bonnes pratiques

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

Guide d'utilisation Easy Interactive Tools Ver. 2

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

Chapitre VI Contraintes holonomiques

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

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

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

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

ANALYSE NUMERIQUE NON-LINEAIRE

Toyota Assurances Toujours la meilleure solution

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

LOGICIEL FONCTIONNEL EMC VNX

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

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

Statuts ASF Association Suisse Feldenkrais

Commencer DCP-7055W / DCP-7057W /

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

3- Les taux d'intérêt

semestre 3 des Licences MISM annnée universitaire

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

SYSTEME DE TELEPHONIE

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

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

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

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

Turbine hydraulique Girard simplifiée pour faibles et très faibles puissances

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

/HVV\VWqPHVFRPELQDWRLUHV

Compression Compression par dictionnaires

Probabilités sur un univers fini

La paye. La comptabilité. Comparez et choisissez votre logiciel. Comparez et choisissez votre logiciel. Paye Bâtiment Paye Agricole 2013


INFORMATIONS TECHNIQUES

INSTALLATION DE DETECTION INCENDIE

Partie 4 : La monnaie et l'inflation

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Algorithmique et Programmation, IMA

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII


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

CREATION DMP En Accès Web

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

Baccalauréat S Asie 19 juin 2014 Corrigé

ARBRES BINAIRES DE RECHERCHE

4. Les structures de données statiques

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)

Algorithmique, Structures de données et langage C

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

FIG. 1 Module de stockage en position horizontale ; positionnement des jauges de déformation.

Glossaire des nombres

Inclure la vidéo comme levier de sa stratégie marketing

Release notes Release BE.12.27

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

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

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

TP1 - Prise en main de l environnement Unix.

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

Clients légers IGEL et bureaux virtuels : synergie idéale et coût minimal

La spirale de Théodore bis, et la suite «somme=produit».

Classeur courtier d assurance. Comment organiser son activité et se préparer à un contrôle

Algorithmique et structures de données I

Directives COV et alternative lipochimique : peintures, encres, nettoyage, dégraissage...

Quelques Algorithmes simples

McAfee Firewall Enterprise Control Center

Commun à tous les candidats

1 Recherche en table par balayage

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

transforming tomorrow

Régression multiple : principes et exemples d application. Dominique Laffly UMR CNRS Université de Pau et des Pays de l Adour Octobre 2006

EnsEignEmEnt supérieur PRÉPAS / BTS 2015

Modification simultanée de plusieurs caractéristiques d un bien hédonique : une nouvelle méthode de calcul de la variation de bien-être des ménages

Chapitre 1 : Fonctions analytiques - introduction

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Les arbres binaires de recherche

La plateforme Next Generation Mini guide

Théorie des graphes et optimisation dans les graphes

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Transcription:

Reconnissnce de motifs Prolème locliser les segments d'un texte décrits pr une expression rtionnelle (régulière) r texte t segment x décrit pr r Applictions édition : vi, emcs, sed, ed,... recherche : grep, egrep,... trduction : lex, sed, lngges : wk, perl, compression : compress, gzip, 701 GREP unix > grep toto t.txt produit les lignes de t.txt qui contiennent le mot toto Applictions recherche de fichiers pr le contenu contrôle du contenu d un fichier Versions egrep, fgrep,... 702

Algorithme de se Deux phses 1 génértion d un utomte A( r ) 2 nlyse du texte vec A( r ) les phses peuvent être intégrées texte r génértion A( r ) utomte équivlent nlyse segments reconnus 703 Expression / lngge Expression rtionnelle r Lngge représenté L( r ),, {, {,, A, e, {mot vide [ u, v L(u), L(v) ] (u) L(u) u + v L(u) L(v) uv { xy x L(u), y L(v) u* { x 1 x 2 x k k 0, x i L(u) 1(0+1)*0 {écritures inires des entiers pirs (*)** {suites finies de et (c*l)*c*f {fichiers textes 704

Anlyse des expressions Une grmmire des expressions rtionnelles E fi T T + E T fi F F T F fi S G G fi e * G S fi e ( E ) E expression, T terme F fcteur, S fcteur simple (+)*c {suites finies de et terminées pr c 705 Anlyse de (+)*c E Arre de l nlyse T Grmmire E fi T T + E T fi F F T F fi S G G fi e * G S fi e ( E ) S ( E ) T + E F G * G ε T S c F G ε F T S G F ε S G ε 706

Digrmmes syntxiques Expression Terme + Expression Terme Fcteur Terme Fcteur e ( Expression ) * 707 Algorithme d nlyse crctère cr; /* crctère suivnt, glol */ Anlyse(expression rtionnelle r){ cr premier crctère de r ; Expression(); si(cr fin d expression) erreur(); Expression(){ Terme(); si(cr = + ){ cr crctère suivnt; Expression(); Terme(){ Fcteur(); si(cr {,,, e, ( ) Terme(); 708

Algorithme d nlyse (suite) Fcteur(){ si(cr {,,, e ){ cr crctère suivnt; sinon si(cr = ( ){ cr crctère suivnt; Expression(); si(cr = ) ) cr crctère suivnt; sinon erreur(); sinon erreur(); tnt que(cr = * ) cr crctère suivnt; 709 Digrmmes syntxiques (utre) Expression Terme + Terme Fcteur Fcteur e ( Expression ) * 710

Algorithme d nlyse (utre) crctère cr; /* crctère suivnt, glol */ Anlyse(expression rtionnelle r){ cr premier crctère de r ; Expression(); si(cr fin d expression) erreur(); Expression(){ Terme(); tnt que(cr = + ){ cr crctère suivnt; Terme(); Terme(){ répéter Fcteur(); tnt que(cr {,,, e, ( ) 711 Expression / utomte A( r ) utomte ssocié à l expression rtionnelle r sur l lphet A Invrints de l construction A( r ) possède un seul étt initil i un seul terminl t ucune flèche n entre dns i ucune flèche ne sort de t Grphique A( r ) : i r t 712

Trnsformtion Expr. rt. Aut. équiv. Expr. rt. Aut. équiv. e u + v u v (u) u u* u uv u v 713 Automte otenu Proposition A( r ) reconnît le lngge L( r ) Propriétés supplémentires A( r ) possède 2. r étts, sns compter ( ni ) de chque étt sortent u plus 2 flèches si exctement 2, elles sont sns étiquette sur chque étt rrivent u plus 2 flèches 714

Exemple Expression : (* + + )* 1 2 9 3 4 10 15 5 6 7 8 16 11 12 13 14 17 18 19 20 reconnu? non, mis infinité de chemins d origine 17 et d'étiquette 715 étt = indice tle des flèches struct{ crctère lettre; étt suiv1, suiv2; Trns[MAX]; utomte (identifié à 2 étts) struct{ étt initil; étt terminl; utomte; Trns p p1 q q1 q2 Implnttion dptée initil = 17 terminl = 20 1 2 2 1 4 3 1 4 4 10 5 6 6 7 7 8 8 10 9 3 5 10 16 11 12 12 13 13 14 14 16 15 9 11 16 15 18 17 15 18 18 19 19 20 20 716

Algorithme de trduction Production de l utomte A( r ) ssocié à l expression rtionnelle r Anlyse(expression rtionnelle r){ cr premier crctère de r ; A Expression(); si(cr fin d expression) erreur(); sinon retour A; 717 Algorithme de trduction (suite) Expression(){ A Terme(); tnt que(cr = + ){ cr crctère suivnt; B Terme(); A Union(A,B); retour A; Terme(){ A Fcteur(); tnt que(cr {,,, e, ( ){ B Fcteur(); A Produit(A,B); retour A; 718

Algorithme de trduction (suite) Fcteur(){ si(cr {,,, e ){ A Automte-élémentire(cr); cr crctère suivnt; sinon si(cr = ( ){ cr crctère suivnt; A Expression(); si(cr = ) ) cr crctère suivnt; sinon erreur(); sinon erreur(); tnt que(cr = * ){ A Etoile(A); cr crctère suivnt; retour A ; 719 Reconnissnce (vec utomte non-déterministe) Écrire une fonction ooléen reconnît( utomte A, mot x ) qui prend l vleur vrie ssi il existe un chemin d'étiquette x depuis A.initil jusqu à A.terminl Progrmmtion pr essis et erreurs (ttention ux cycles) progrmmtion dynmique (mémoristion des étts possiles) Clôture clôture(p) = { étts ccessiles à prtir p pr chemins sns étiquette 720

Clôture Clôture de 17 = {1,3,4,5,9,10,11,15,16,17,18,19 17 15 18 1 2 3 9 5 11 19 9 3 4 10 1 4 15 5 6 7 8 16 10 11 12 13 14 17 18 19 20 16 721 Reconnissnce Expression : (* + + )* Reconnissnce de 1 2 9 3 4 10 15 5 6 7 8 16 11 12 13 14 17 18 19 20 Étt initil 17 Clôture {1, 3, 4, 5, 9, 10, 11, 15, 16, 17, 18, 19 722

Reconnissnce (suite) Expression : (* + + )* Reconnissnce de 1 2 9 3 4 10 15 5 6 7 8 16 11 12 13 14 17 18 19 20 {1, 3, 4, 5, 9, 10, 11, 15, 16, 17, 18, 19 Trnsition pr {2, 20 Clôture {1, 2, 3, 4, 5, 9, 10, 11, 15, 16, 18, 19, 20 723 Reconnissnce (suite) Expression : (* + + )* Reconnissnce de 1 2 9 3 4 10 15 5 6 7 8 16 11 12 13 14 17 18 19 20 {1, 2, 3, 4, 5, 9, 10, 11, 15, 16, 18, 19, 20 Trnsition pr {6, 12 Clôture {6, 7, 12, 13 724

Reconnissnce (suite) Expression : (* + + )* Reconnissnce de 1 2 9 3 4 10 15 5 6 7 8 16 11 12 13 14 17 18 19 20 {6, 7, 12, 13 Trnsition pr {14 Clôture {1, 3, 4, 5, 9, 10, 11, 14, 15, 16, 18, 19 non reconnu cr 20 non tteint 725 Algorithme de reconnissnce ooléen reconnît(utomte A, mot x){ ensemle E; E clôture(a.initil); tnt que(non fin de x){ cr lettre suivnte de x; E clôture(trnsition(e,cr)); si(a.terminl E) retour(vri); sinon retour(fux); Lecture séquentielle du mot. Mémoristion (tmpon) d'une seule lettre de x. Temps : O(n étts de A. x ) (si onne gestion de l ensemle E) 726

Recherche de motif Motif défini pr l'expression rtionnelle r A( r ) utomte ssocié à r Motif dns le texte texte t segment x reconnu pr A( r ), x L(r) Principe de l recherche comme reconnissnce vec : jout l étt initil à chque position rrêt de l recherche dès que l étt terminl est tteint 727 Algorithme de recherche ooléen recherche(utomte A, mot t){ ensemle E; E clôture(a.initil); tnt que(non fin de t){ cr lettre suivnte de t; E clôture({a.initil trnsition(e,cr)); si(a.terminl E) retour(vri); retour(fux); Lecture séquentielle du texte. Mémoristion (tmpon) d'une seule lettre de t. Temps : O(n étts de A. t ) (si onne gestion de l ensemle E) 728

Compromis temps-espce expression rtionnelle r utomte non-déterministe A ( n d'étts 2 r ) déterministion utomte déterministe (n d'étts = O(2 r ) ) simultion de l'utomte déterministe recherche dns t en temps O( t ) recherche dns t en temps O( r. t ) 729 déterministion simultion temps de O( t ) O( r. t ) l recherche espce O(2 r ) O( r ) 730

LEX Crétion d'nlyseurs lexicux ou de trducteurs lex.1 spécifictions en Lex compilteur Lex lex.yy.c nlyseur lexicl en C compilteur C.out nlyseur lexicl source Spécifictions : déclrtions %% règles de trductions %% procédures uxiliires suite des unités lexicles (trduction) 731 % {/* définitions des constntes littérles */ PPQ, PPE, EGA, DIF, PGQ, PGE, SI, ALORS, SINON, ID, NB, OPREL % /* définitions régulières */ délim [ \t\n] l {delim+ lettre [A-Z-z] chiffre [0-9] id {lettre+({lettre {chiffre)* nomre {chiffre+(\.{chiffre+)?(e[+\-]?{chiffre+)? %% {l {/* ps d'ction et ps de retour */ si {return (SI) ; lors {return (ALORS) ; sinon {return (SINON) ; {id {yylvl = RngerId ( ) ; return (ID) ; {nomre {yylvl = RngerN ( ) ; return (NB) ; "<" {yylvl = PPQ ; return (OPREL) ; "<=" {yyvl = PPE ; return (OPREL) ; "=" {yyvl = EGA ; return (OPREL) ; "<>" {yyvl = DIF ; return (OPREL) ; ">" {yyvl = PGQ ; return (OPREL) ; ">=" {yyvl = PGE ; return (OPREL) : 732

%% RngerId(){ /* procédure qui rnge dns l tle des symoles le lexème dont le premier crctère est pointé pr yytext et dont l longueur est yyleng, et retourne un pointeur sur son entrée */... RngerN(){ /* procédure similire pour rnger un lexème qui est un nomre */... 733 Recherche d'un mot Recherche des positions du mot x dns le texte t Pr lyges (guche-droite) et déclges texte t mot x fenêtre c c d... c d Vriles de trvil 0 pos j n texte t mot x 0 i m 734

Algorithme nïf Nif(mot x, longueur m, mot t, longueur n){ j 0; i 0; tnt que (i < m) et (j < n){ si (x[i] = t[j]){ j j+1; i i+1; sinon { j j-i+1; i 0; fin ; si (i > m) écrire(mot trouvé à l position j-i); sinon écrire(ps d'occurrence de x dns t); Temps mximl O(m.n)» m.n comprisons u pire Temps moyen O(n)» 2.n comprisons moyennes sur lphet inire (équiproilité et indépendnce) 735 Méthode de Knuth, Morris & Prtt KMP : lyges guche-droite et déclges comptiles texte t mot x fenêtre c c d... c d c d Bords : Bord(c) = Longueur des ords des préfixes : ord [ i ] = Bord( x[0..i-1] ) i 0 1 2 3 4 5 6 7 8 x[ i ] c d ord [ i ] -1 0 0 1 0 1 2 3 0 736

Recherche KMP 0 pos j n texte t mot x i = ord [ i ] 0 i m 0 i m 737 Algorithme KMP(mot x, longueur m, mot t, longueur n){ j 0 ; i 0 ; tnt que (i < m) et (j < n){ tnt que (i > 0) et (x[i] t[j]) i ord[i] ; j j+1 ; i i+1 ; si (i = m) écrire(mot trouvé à l position j-m); sinon écrire(ps d'occurrence de x dns t); Temps O(n) moins de 2.n comprisons recherche séquentielle (j ne décroît jmis) recherche linéire mis ps en temps réel 738

Clcul des ords Bords : Bord(u) = plus long préfixe et suffixe propre de u Note : le ord d un ord est un ord Bord( c c) = c Bord( c ) = Bord( c d) = ε mot x 0 j i m j = ord [ i ] si = ord [ i+1 ] = ord [ i ] +1 = j +1 sinon fire le clcul vec sur Bord(x[0.. j-1]) 739 Algorithme BORDS(mot x, longueur m){ ord[0] -1 ; pour i 0 à m-1 fire { j ord[i] ; tnt que (j 0) et (x[i] x[j]) j ord[j] ; ord[i+1] j+1 ; retour ord ; Temps O(m), moins de 2.m comprisons Comme l recherche! mot x 0 j i m j = ord [ i ] 740

Méthode de Boyer-Moore (simplifiée) BM : lyges droite-gucheet déclges comptiles vec l lettre différente du texte texte t mot x fenêtre d c d... c c c c c c Positions c d e... Pos x [ ] 1 6 2 8 8... c c c Pos x [ ]=6 741 Recherche BM texte t mot x 0 j j n 0 i m 0 i Vleurs de i et j près déclge Pos[ ] i = m j = j + Pos x [ t [ j ] ] si Pos x [ t [ j ] ] > m - i + 1 m - i + 1 sinon 742

Algorithme BM BM(mot x, longueur m, mot t, longueur n){ j m-1 ; j m-1 ; tnt que (i 0) et (j < n) si(x[i] = t[j]){ j j-1 ; i i-1 ; sinon { j j + mx{pos[j],m-i+1 ; i m-1 ; si (i = -1) écrire(mot trouvé à l position j+1); sinon écrire(ps d'occurrence de x dns t); Temps mximl O(m.n) Temps, sur des textes en lngue nturelle, proche du miniml : Θ(n / m) 743 Clcul de Pos Positions(mot x, longueur m){ pour chque lettre fire Pos[] m ; pour i 0 à m-2 fire Pos[x[i]] m-i-1 ; retour Pos ; 0 1 7 c c c Pos[]=6 Temps O(m + crd A) 744