530 likes | 750 Views
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
E N D
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 »
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
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 N* G Y N C R 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 dansQ) 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 ssiL 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 0 1 1 q0 q1 q2 • Langagereconnu 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. • Langage reconnu par l’automate: GC S S*(Alanine) A,C,G,T 0 1 2 3 G C A,C,G,T
Automate pour « vérification » • Exemple: S*ACA S* S\{A} A,C,G,T S\{A,C} 0 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 0 1 2 3 A C A S\{A} A A S\{A,C}
S\{A} S\{A,C} C 0 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 0 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 0 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 0 1 2 3 A C A S\{A} A A S\{A,C} T : A CA A C A C A G A C *
S\{A} S\{A,C} C 0 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 0 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 0 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 0 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 0 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 0 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 0 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 0 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’automateA= (Q={q0, q1,… qm} ; S ; q0 ; d ; {qm}) Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3 S
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A q0 q1 q2 q3 S
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A r q0 q1 q2 q3 A S\{A}
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A S\{A} r q0 q1 q2 q3 A S\{A} A
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A S\{A} q0 q1 q2 q3 A S\{A} A
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A S\{A,C} r q0 q1 q2 q3 A C S\{A} A
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour 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
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour 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
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour 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
Algorithme SMA (String-Matching Algorithm) Pour tout a dansS Faired(q0, a) := q0; Pour i:=1 à m Faire r:= d(qi-1 , pi); d(qi-1 , pi):= qi Pour tout a dansS Faire d(qi , a):= d(r, a) Fin Pour Fin Pour i = 1 2 3 P = A C A S\{A} S\{A,C} C r q0 q1 q2 q3 A C A S\{A} A A S\{A,C}
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 0 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 • Langagereconnu 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 • Langagereconnu 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.edu/u/brown/173/lectures/flat/formal_lang/FARE2lec.htmlhttp://www.cs.rochester.edu/u/brown/173/lectures/flat/formal_lang/FARE2lec.html
G: C: G C • Exemple1: GC (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 Rliné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