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 »
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
Ssont 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) )
Grammaire hors contexte
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.
G Y N C R N
N*
Grammaire hors contexte
S → G W
1C
W
1→ U W
2A | C W
2G
W
2→ A W
3U | U W
3A | C W
3G | G W
3C W
3→ A W
3| U W
3| C W
3| G W
3| e
G Y N C R N
N*
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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 S → G W1 C N*
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
S
G W1 C
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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
U A
G U C A A G A C
W2
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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
S
G W1 C
U W2 A
C W3 G
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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
S
G W1 C
U W2 A
C W3 G
W3 A
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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
S
G W1 C
U W2 A
C W3 G
W3 A
A W3
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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
S
G W1 C
U W2 A
C W3 G
W3 A
A W3 e
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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 S → G W1 C N*
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
S
G W1 C
Grammaire hors contexte
G Y N C R N S → G W1 C N*
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
S
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 ; q
0; 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 xS →
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 xS →
Q s’étend àd
: Q xS
*→
Q : Pour uun mot de S, d
(q,u): état de Qatteint (s’il existe) après avoir lu le mot u.
•
Areconnaît le langage:
LA ={
u Є S
*/ d
(q,u) Є F}• D’après le Théorème de Kleene, un langage
Lest
reconnaissable par AFD ssi
Lest un langage régulier
(défini par une expression régulière).
Automate Fini Déterministe
• Q = {q
0, q
1, q
2}; S = {0,1}; q
0est l’état initial;
F={q
2} est l’ensemble des états terminaux
q0 1 q1 1 q2
0 0, 1
• Langage reconnu par l’automate:
0
*11 S
*Automate Fini Déterministe
• Langage reconnu par l’automate:
GC S S
*(Alanine)
0 1 2 3
G C A,C,G,T
• 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
Automate pour « vérification »
• Exemple: S
*ACA S
*0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
A,C,G,T
Automate pour « recherche exacte »
• Exemple: S
*ACA
• Rechercher tous les « ACA » dans un texte
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C A G A C
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T :
AC A A C A C A G A C
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C A G A C
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C
AA C A C A G A C
*
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A
AC A C A G A C
*
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C A G A C
*
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C
AC A G A C
* *
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C A G A C
* *
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C
AG A C
* * *
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C A G A C
* * *
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
A S\{A,C}
T : A C A A C A C A G
A C* * *
0 1 2 3
A C A
S\{A,C}
S\{A} A
S\{A}
C
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
Fin Pour
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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
S
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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
S
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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
r
A S\{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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
r
A S\{A}
A S\{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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
A S\{A}
A S\{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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
A S\{A,C}
A r
C S\{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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
A S\{A}
A r
C S\{A}
A
S\{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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
A S\{A,C}
A
C S\{A}
A
S\{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
Fin Pour
q0
P = A C A
i = 1 2 3
q1 q2 q3
A S\{A,C}
A
C S\{A}
S\{A}
r
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
Fin Pour
P = A C A
i = 1 2 3
q0 q1 q2 q3
A S\{A,C}
A
C S\{A}
S\{A}
A r
C
A S\{A,C}
Automate fini non-déterministe (AFND)
• Quintuplet A =(Q ; S ; q
0; d ; F) définit de la même façon qu’un AFD, à part pour d :
d
: Q xS → P
(Q)d
(q,a) = {p1, p2, …, pn}•
Areconnaît le langage:
LA ={
u=u
1…u
mЄ S
*/ il existe q
0,… qm Є Q tq qmЄ F et pour tout i, q
i+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
C e
e
e e
e e
• Langage reconnu par l’automate:
G|C
e
Automate avec e -transitions et e -états
• Transitions sans lecture de caractère.
• Étiquetage des états
e
e e
e G
C 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
Pour toute expression régulière, on peut construire un AFND par induction, de la façon suivante:
G
C
http://www.cs.rochester.edu/u/brown/173/lectures/flat/formal_lang/FARE2lec.html
• Exemple1: GC (G|C)
G
G C
G: C:
CGC:
G|C:
G
C
GC(G|C):
G C
G
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
A C
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