Recherche par automates finis

Slides:



Advertisements
Présentations similaires
Chapitre 1 Automates finis
Advertisements

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.
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.
Alignement de séquences (suite)
IFT313 Révision finale Département d’informatique
IFT313 Introduction aux langages formels
IFT Complexité et NP-complétude
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:
Rappel Modèle analyse-synthèse de la compilation
Recherche heuristique dans les bases de données L’algorithme BLAST
Modélisation géométrique de base
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.
Recherche par automates finis
Abdelkader Heni FUNDP Syntaxe et sémantique Abdelkader Heni FUNDP
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
Nouveaux programmes de Seconde Géométrie dans le plan et dans l'espace.
VECTEURS. I Translation II Vecteurs III Somme de vecteurs IV Produit d ' un vecteur par un réel V Coordonnées d ' un vecteur.
Chapitre 1. Automates finis 1. INTRODUCTION L’informatique est une discipline assez récente. Il est difficile de déterminer le moment exact de sa naissance.
Master ESEEC Rédaction de documents (longs) structurés Patrice Séébold Bureau 109, Bât B.
Exploitation de logiciels :
Equipe pédagogique: Comptabilité générale
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Rappel - analyse et.
Sujet 1 : Wrapper stats sur les jeux de données ARN non codants
CHAPITRE 3 Calcul numérique et puissances
IFT313 Introduction aux langages formels
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Préambule.
Information, Calcul, Communication
Semaine #1 INF130 par Frédérick Henri.
Les expressions régulières en javascript
Information, Calcul, Communication
Les bases de données et le modèle relationnel
Sujet 1 : Wrapper stats sur les jeux de données ARN non codants
CCNP Routage Chapitre 4 - Questionnaire N°1
Cyber-Sphinx Séance 2.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Semaine #6 INF130 par Frédérick Henri.
Techniques d’Optimisation Chapitre 3: Programmation en 0-1 (bivalente)
LES PRINCIPES DE LA THERMODYNAMIQUE
Algorithmes de filtrage
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Structure D’une Base De Données Relationnelle
IFT313 IFT313 Introduction aux langages formels Froduald Kabanza Département d’informatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
Calcul Scientifique Initiation à SCILB
Pierre Dumouchel 20 juillet 2009
DESSIN DE DEFINITION RAPPEL DES NOTIONS DE BASE.  Dessin technique Consiste à apporter des informations techniques (dimensions, matière…) par une représentation.
CHAPITRE 3 Calcul numérique et puissances
I Définition : Elle est définie ...
Mots de passe Apprenez à composer.
IFT313 Introduction aux langages formels
«  Numération décimale, fractions et décimaux : continuités et ruptures dans la construction du nombre » échanges et analyse de pratiques autour du QSort.
Algorithmes de filtrage
02/02/2019Module Compilation1. Introduction:  petite historique sur flex/lex  définitions de l’outil flex/lex  l’objectif de l’outil flex/lex  Versions.
Définition :. Pourquoi le GEMMA ? GEMMA : l'acronyme GEMMA signifie : Guide d'Etude des Modes de Marche et d'Arrêt. Comme son nom l'indique, c'est un guide.
IFT313 Introduction aux langages formels
CSI 3505 Algorithmes Voraces
RABAH M ed Ali 2018/2019
Flowchart Itération Cours 04.
Piles et files.
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Chapitre 2 Résolution des Problèmes et Jeux. Objectifs  Comment ? – Modéliser un Problème. – Modéliser un Jeu.  Comment ? – Passer d’un état à un autre.
A. Zemmari SDRP & MA Problème du rendez vous : un algorithme probabiliste et une analyse probabiliste A. Zemmari.
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 notation 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}

( CT(A|C|G|T) ) | ( TT(A|G) ) 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) )

Grammaire hors contexte G Y N C R N N* G (C|U)(A|C|G|U)(A|C|G|U)*(A|C|G|U)(A|G)C ? NON! GCCACAC n’est pas une structure valide. Une structure secondaire d’ARN n’est pas une expression régulière C’est une grammaire hors contexte.

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e G U C A A G A C ?

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G U C A A G A C G W1 C

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G U C A A G A C G W1 C U A W2

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G U C A A G A C G W1 C U A W2 C W3 G

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G U C A A G A C G W1 C U A W2 C W3 G A W3

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G W1 C G U C A A G A C U A W2 C W3 G A W3 A W3

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G W1 C G U C A A G A C U A W2 C W3 G A W3 A W3 e

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e G C C A C A C ?

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G C C A C A C G W1 C

Grammaire hors contexte G Y N C R N N* S  G W1 C W1  U W2 A | C W2 G W2  A W3 U | U W3 A | C W3 G | G W3 C W3  A W3 | U W3 | C W3 | G W3| e S G C C A C A C G W1 C Pas de règle de dérivation permettant de continuer => GCCACAC n’est pas un mot de la grammaire

Grammaire Ensemble de symboles terminaux et non-terminaux; Ensemble de règles de réécritures a  b où a, b sont deux séquences de symboles, a contenant au moins un non-terminal.

Grammaire Grammaire régulière: Règles de production de la forme: W  aW ou Wa ou W  e Une grammaire régulière génère une exp. régulière. Grammaire hors contexte: Toutes les règles de production : W  b autorisées.

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’états; 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 en AFD: 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

Alignement d’une expression régulière avec une séquence Revient à l’alignement d’automates (Myers and Miller 1989) Exemple: E = (A|C) T (T|G) S = A T A T

« G C T T C » appartient à l’expression régulière ((AC)|G)(A|C)T(T|G)((GT)|C)

Structure secondaire représentée par la grammaire hors contexte: S  A C W1G U | G W1C W1 A W2T | C W2G W2 T Reconnue par un Automate à piles

A C A T T G T ?

A C A T T G T A

A C A T T G T C A

A C A T T G T A C A

A C A T T G T A C A

A C A T T G T A C A

A C A T T G T A C A

A C A T T G T A C A