1 / 48

Recherche par automates finis

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

axel-brock
Télécharger la présentation

Recherche par automates finis

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recherche par automates finis Nadia El-Mabrouk

  2. 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.

  3. 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 »

  4. 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

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

  6. 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.

  7. Contexte biologique Une structure consensus de l’ARNt

  8. 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}

  9. 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

  10. 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.

  11. 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).

  12. 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*

  13. 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

  14. 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

  15. 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}

  16. 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

  17. 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

  18. 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

  19. 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 *

  20. 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 *

  21. 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 *

  22. 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 * *

  23. 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 * *

  24. 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 * * *

  25. 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 * * *

  26. 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 * * *

  27. 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 * * *

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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}

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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}

  40. 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.

  41. 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|)

  42. 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

  43. 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

  44. 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:

  45. 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

  46. G: C: G C • Exemple1: GC (G|C) GC: G C G G|C: C GC(G|C): G G C C

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

  48. 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

More Related