Recherche par automates finis

Slides:



Advertisements
Présentations similaires
Transformation de documents XML
Advertisements

24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Bioinformatique et Perl
Colloque Traitement et Analyse de séquences : compte-rendu
Domaines nominaux XSLT
Chap 1 Grammaires et dérivations.
Automate asynchrone.
Expressions rationnelles
Chapitre 1 Automates finis
LI.A ça ressemble à ça… des fois…. Ou pas… Rappels et définition de lIA – Lidée quon sen fait – Jusquoù on va aujourdhui / dans le futur? – Petit Etat.
Recherche exacte de motifs
Chapitre II.Rappels mathématiques et complexité
IFT313 Introduction aux langages formels
Sensibilité de graines espacées du type Subset seed Gregory Kucherov, Laurent Noé, Mikhaïl Roytberg LORIA (Nancy) 9-10 décembre 2004, Lille AS Indexation.
Automates et systèmes de transitions
Introduction à l'informatique linguistique
Commande optimale des systèmes dynamiques hybrides
IFT313 Introduction aux langages formels
Cours d’Automatique MASTER OIV
Conception et analyse des algorithmes
Analyse lexicale Généralités Expressions rationnelles Automates finis
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
1. L’ADN et l’information génétique
Notions de base de la théorie des langages
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°3.
Rappel... Solution itérative de systèmes linéaires (suite et fin).
Alignement de séquences (suite)
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Révision de mi-session.
IFT313 Révision finale Département d’informatique
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
Rappels de logique des prédicats du 1er ordre
Expressions régulières et hash tables
Chapitre 3 Machines de Turing.
IFT Complexité et NP-complétude
Courbes de Bézier.
Chapitre 7: Le théorème de Kleene
Hiver 2003SEG2501 analyse lexicale1 Notes supplémentaires au sujet de lanalyse lexicale Exemples Dérivation dun NFA qui accepte le même langage (algorithme:
Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison.
Partie II Sémantique.
Questions abordées Aujourd’hui Qu’est-ce qu’une expression régulière ?
IFT313 – Introduction aux langages formels Éric Beaudry Exercices Expressions régulières, ADF et AFN Été 2010.
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
Programmation non procédurale Le projet ECOLE 2000
Rappel Modèle analyse-synthèse de la compilation
Indécidabilité.
Recherche heuristique dans les bases de données L’algorithme BLAST
Modélisation géométrique de base
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Paradigmes des Langages de Programmation
Chapitre II Analyse Lexical.
Les machines de Turing Lionel Blavy Sébastien Giraud Fabien Tricoire
Programmation linéaire en nombres entiers
Recherche exacte de motifs
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
Le langage Racket (Lisp)
Alignement de séquences biologiques
Les transducteurs En anglais transducers.
Abdelkader Heni FUNDP Syntaxe et sémantique Abdelkader Heni FUNDP
Recherche de motifs par projections aléatoires
STAN (Suffix Tree ANalyser) Un outil de recherche de motif dans les génomes Grégory Ranchy Anne-Sophie Valin 9 décembre 2004.
ASI 3 Méthodes numériques pour l’ingénieur
Chap 1 Grammaires et dérivations.
Recherche heuristique dans les bases de données L’algorithme BLAST
Chapitre 3 La numération octale et hexadécimale.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
MES STRATÉGIES DE LECTURE
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
Recherche par automates finis
Transcription de la présentation:

Recherche par automates finis Nadia El-Mabrouk

Motifs dégénérés Alphabet S ADN: {A,C,G,T} ARN:{A,C,G,U} Protéines: {g,a,v,l,i,p,f,y,c,m,h,k,r,w,s,t,d,e,n,q,b,z} Mot sur S: Chaque position est un caractère de S Mot dégénéré sur S: Chaque position peut « matcher » différents caractères de S.

Motifs dégénérés Exemple 1: Alanine encodée par GC{A,C,G,T} On note N={A,C,G,T}. Alanine identifiée par le codon  « dégénéré» GCN Il existe une convention de notations pour les symboles dégénérés. En particulier: Purines: R = {A,G}; Pyrimidines: Y = {T,C} Exemple 2: leucine encodée par CT{A,C,G,T} ou TT{A,G}. On peut l’écrire « CTN ou TTR »

[Ala or Cys]-any-Val-any-any-any-any-{any but Glu or Asp} Contexte biologique PROSITE: Banque de données de protéines. Regroupe les protéines en familles. Identifie les domaines ou les sites fonctionnels par des « mots dégénérés » ou « signatures » Par exemple: [AC]-x-V-x(4)-{ED}. [Ala or Cys]-any-Val-any-any-any-any-{any but Glu or Asp} Les “signatures” sont déduites à partir d’alignements multiples de protéines de la même famille

http://cs124.cs.ucdavis.edu/Workshop5/PROSITE.html

Contexte biologique Familles d’ARN caractérisées par des «motifs clefs », identifiés par alignement multiple. Identifier toutes les occurrences d’une famille donnée d’ARN dans le génome  Recherche de « mots clefs » dégénérés.

Contexte biologique Une structure consensus de l’ARNt

Expression régulière Définie récursivement sur un alphabet S par: Ø, e (le mot vide), et tout caractère de S sont des expressions régulières. Si S et R sont deux expressions régulières alors: RS est une expression régulière (concaténation) R | S est une exp. Reg. (ou) R* est une ex. reg (étoile de Kleene) Exemple: a(bc|e)d = {ad, abcd}

Expression régulière Exemple 1: Alanine GC{A,C,G,T} GC (A|C|G|T) Exemple2: leucine « CTN ou TTR » ( CT(A|C|G|T) ) | ( TT(A|G) ) Exemple3: hélice G (C|U)(A|C|G|U)(A|C|G|U)*(A|C|G|U)(A|G)C G Y N C R N N*

Automate Fini Déterministe Une expression régulière est reconnue par un Automate Fini Déterministe (AFD): quintuplet A=(Q ; S ; q0 ; d ; F) où: Q est un ensemble fini d’´etats; S est un alphabet fini; q0 (Є Q) est l’état initial; F (inclu dans Q) est l’ensemble des états terminaux d: Q x S  Q est la fonction de transition. d (q,a) = p: Si on est dans l’état q et qu’on lit a, on va à l’état p.

Automate Fini Déterministe d: Q x S  Q s’étend à d: Q x S*  Q : Pour u un mot de S, d(q,u): état de Q atteint (s’il existe) après avoir lu le mot u. A reconnaît le langage: LA ={u Є S*/ d(q,u) Є F} D’après le Théorème de Kleene, un langage L est reconnaissable par AFD ssi L est un langage régulier (défini par une expression régulière).

Automate Fini Déterministe Q = {q0, q1, q2}; S = {0,1}; q0 est l’état initial; F={q2} est l’ensemble des états terminaux 0, 1 1 1 q0 q1 q2 Langage reconnu par l’automate: 0*11 S*

Automate Fini Déterministe Q = {0, 1, 2, 3}; S = {A, C, G, T}; 0 est l’état initial; 3 est le seul état terminal. A,C,G,T 1 2 3 G C A,C,G,T Langage reconnu par l’automate: GC S S* (Alanine)

Automate pour « vérification » Exemple: S*ACA S* S\{A} A,C,G,T S\{A,C} 1 2 3 A C A S\{A} A

Automate pour « recherche exacte » Exemple: S*ACA Rechercher tous les « ACA » dans un texte S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A S\{A,C}

T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C

T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C

T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C

* T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C *

* T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C *

* T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C *

* * T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C * *

* * T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C * *

* * * T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C * * *

* * * T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C * * *

* * * T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C * * *

* * * T : A C A A C A C A G A C S\{A} S\{A,C} C 1 2 3 A C A S\{A} A A 1 2 3 A C A S\{A} A A S\{A,C} T : A C A A C A C A G A C * * *

Construction d’un AFD pour la recherche exacte d’un mot Alphabet S, Mot P= p1 p2 … pi … pm Algorithme en O(m|S|), temps et espace pour construire l’automate A= (Q={q0, q1,… qm} ; S ; q0 ; d ; {qm}) Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3 S

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3 S

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A r q0 q1 q2 q3 A S\{A}

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A S\{A} r q0 q1 q2 q3 A S\{A} A

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A S\{A} q0 q1 q2 q3 A S\{A} A

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A S\{A,C} r q0 q1 q2 q3 A C S\{A} A

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A S\{A} S\{A} A r q0 q1 q2 q3 A C S\{A} A

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A S\{A} S\{A,C} A q0 q1 q2 q3 A C S\{A} A

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A S\{A} S\{A,C} r q0 q1 q2 q3 A C A S\{A} A

P = A C A Algorithme SMA (String-Matching Algorithm) Pour tout a dans S Faire d(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dans S Faire d(qi , a):= d(r, a) Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3 A S\{A,C} C S\{A} r

Automate fini non-déterministe (AFND) Quintuplet A=(Q ; S ; q0 ; d ; F) définit de la même façon qu’un AFD, à part pour d : d: Q x S  P (Q) d (q,a) = {p1, p2, …, pn} A reconnaît le langage: LA ={u=u1…um Є S*/ il existe q0,… qm Є Q tq qm Є F et pour tout i, qi+1 Є d(qi ,ui+1 )} Pour tout AFND, il existe un AFD qui reconnaît le même langage.

Automate fini non déterministe (AFND) Exemple: S*ACA 1 2 3 A C A S Généralement difficile de construire directement un AFD. Méthode généralement utilisée: Construire un AFND Le transformer en AFD  en temps O(|QDFA||QNFA||S|)

Automate avec e-transitions Transitions sans lecture de caractère. G e e e e C e e e Langage reconnu par l’automate: G|C

Automate avec e-transitions et e-états Transitions sans lecture de caractère. Étiquetage des états e G e e e e C e Langage reconnu par l’automate: G|C

Automate avec e-transitions et e-états Transitions sans lecture de caractère. Étiquetage des états G C Pour toute expression régulière, on peut construire un AFND par induction, de la façon suivante:

http://www. cs. rochester http://www.cs.rochester.edu/u/brown/173/lectures/flat/formal_lang/FARE2lec.html

Exemple1: GC (G|C) G: C: G C GC: G C G G|C: C GC(G|C): G G C C

Exemple2: ((AC)|G)(A|C)T(T|G)((GT)|C) Pour la recherche de toutes les occurrences dans un texte: S

Automate fini non-déterministe Soit R une expression régulière de taille r (nombre de caractères dans R, plus les | et *) Construction de l’AFND reconnaissant R linéaire en r en temps et en espace. Déterminiser l’AFND: peut-être couteux en espace. Différentes façons de « simuler » un AFND: Structure de donnée que l’on peut utiliser pour différentes fins. Recherche exacte Recherche multiple: L’algorithme de Aho-Corasick peut-être réécrit en utilisant un automate plutôt qu’un arbre de mots clefs Recherche approchée: Simulation par programmation dynamique