• Aucun résultat trouvé

Recherche par automates finis

N/A
N/A
Protected

Academic year: 2022

Partager "Recherche par automates finis"

Copied!
73
0
0

Texte intégral

(1)

Recherche par automates finis

Nadia El-Mabrouk

(2)

Motifs dégénérés

• Alphabet 

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 Chaque position est un caractère de

• Mot dégénéré sur  Chaque position peut

« matcher » différents caractères de .

(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 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 »

(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  par:

Ø, (le mot vide), et tout caractère de 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|  )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) )

(10)

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*

(11)

Grammaire hors contexte

S  G W

1

C

W

1

 U W

2

A | C W

2

G

W

2

 A W

3

U | U W

3

A | C W

3

G | G W

3

C W

3

 A W

3

| U W

3

| C W

3

| G W

3

| 

G Y N C R N

N*

(12)

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| 

G U C A A G A C ?

(13)

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| 

G U C A A G A C

S

G W1 C

(14)

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| 

S

G W1 C

U A

G U C A A G A C

W2

(15)

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| 

G U C A A G A C

S

G W1 C

U W2 A

C W3 G

(16)

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| 

G U C A A G A C

S

G W1 C

U W2 A

C W3 G

W3 A

(17)

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| 

G U C A A G A C

S

G W1 C

U W2 A

C W3 G

W3 A

A W3

(18)

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| 

G U C A A G A C

S

G W1 C

U W2 A

C W3 G

W3 A

A W3

(19)

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| 

G C C A C A C ?

(20)

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| 

G C C A C A C

S

G W1 C

(21)

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| 

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

(22)

Grammaire

• Ensemble de symboles terminaux et non- terminaux;

• Ensemble de règles de réécritures   où

, sont deux séquences de symboles, 

contenant au moins un non-terminal.

(23)

Grammaire

Grammaire régulière: Règles de production de la forme: W  aW ou W  a ou W  

 Une grammaire régulière génère une exp.

régulière.

Grammaire hors contexte: Toutes les règles de

production : W  autorisées.

(24)

Automate Fini Déterministe

Une expression régulière est reconnue par un

Automate Fini Déterministe (AFD): quintuplet A=(Q ;



; q0 ;



; F) où:

Q est un ensemble fini d’états;

est un alphabet fini;

q0 (Є Q) est l’état initial;

F (inclu dans Q) est l’ensemble des états terminaux : Q x  Q est la fonction de transition.

q,a) = p: Si on est dans l’état q et qu’on lit a, on va à l’état p.

(25)

Automate Fini Déterministe

: Q x  Q s’étend à : Q x  Q : Pour u un mot de , (q,u): état de Q atteint (s’il existe) après avoir lu le mot u.

A reconnaît le langage:

LA ={u Є / (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).

(26)

Automate Fini Déterministe

• Q = {q

0

, q

1

, q

2

};  = {0,1}; q

0

est 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 

*

(27)

Automate Fini Déterministe

Langage reconnu par l’automate:

GC  (Alanine)

0 1 2 3

G C A,C,G,T

• Q = {0, 1, 2, 3};  = {A, C, G, T}; 0 est l’état initial; 3 est le seul état terminal.

A,C,G,T

(28)

Automate pour « vérification »

• Exemple: 

ACA 

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

A,C,G,T

(29)

Automate pour « recherche exacte »

• Exemple: ACA

• Rechercher tous les « ACA » dans un texte

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

(30)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

(31)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

(32)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

(33)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

*

(34)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

*

(35)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

*

(36)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

* *

(37)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

* *

(38)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

* * *

(39)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

* * *

(40)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

* * *

(41)

0 1 2 3

A C A

\{A,C}

\{A}

\{A}

C

A

\{A,C}

T : A C A A C A C A G A C

* * *

(42)

Construction d’un AFD pour la recherche exacte d’un mot

Alphabet Mot P= p1 p2 … pi … pm

Algorithme en O(m||temps et espace pour construire l’automate A= (Q={q0, q1,… qm} ; ; q0 ; ; {qm})

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

(43)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

(44)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

(45)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

(46)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

r

A

\{A}

(47)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

r

A

\{A}

\{A}

(48)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

A

\{A}

\{A}

(49)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

A

\{A,C}

r

C

\{A}

(50)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

A

\{A}

r

C

\{A}

A

\{A}

(51)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

A

\{A,C}

C

\{A}

A

\{A}

(52)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

q0

P = A C A

i = 1 2 3

q1 q2 q3

A

\{A,C}

C

\{A}

\{A}

r

A

(53)

Algorithme SMA (String-Matching Algorithm) Pour tout a dans Faire (q0, a) := q0;

Pour i:=1 à m Faire

r:= (qi-1 , pi); (qi-1 , pi):= qi Pour tout a dans Faire

(qi , a):= (r, a) Fin Pour

Fin Pour

P = A C A

i = 1 2 3

q0 q1 q2 q3

A

\{A,C}

C

\{A}

\{A}

A r

C

A

\{A,C}

(54)

Automate fini non-déterministe (AFND)

• Quintuplet A=(Q ;  ; q

0

;  ; F) définit de la même façon qu’un AFD, à part pour  :

: Q x  P (Q)

(q,a) = {p1, p2, …, pn}

A reconnaît le langage:

LA ={u=u1…um Є / il existe q0,… qm Є Q tq qm Є F et pour tout i, qi+1 Є (qi ,ui+1 )}

Pour tout AFND, il existe un AFD qui reconnaît le même langage.

(55)

Automate fini non déterministe (AFND)

• Exemple: 

ACA

0 1 2 3

A C A

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|||)

(56)

Automate avec  -transitions

• Transitions sans lecture de caractère.

G C

• Langage reconnu par l’automate:

G|C

(57)

Automate avec  -transitions et

-états

• Transitions sans lecture de caractère.

• Étiquetage des états

G

C

• Langage reconnu par l’automate:

G|C

(58)

Automate avec  -transitions et

-é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

(59)

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

(60)

• Exemple1: GC (G|C)

G

G C

G: C:

C

GC:

G|C:

G

C

GC(G|C):

G C

G

C

(61)

• Exemple2: ((AC)|G)(A|C)T(T|G)((GT)|C)

Pour la recherche de toutes les occurrences dans un texte:

(62)

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

(63)

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

(64)

« G C T T C » appartient à l’expression régulière

((AC)|G)(A|C)T(T|G)((GT)|C)

(65)

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

(66)

A C A T T G T ?

(67)

A C A T T G T

A

(68)

A C A T T G T

A C

(69)

A C A T T G T

A C A

(70)

A C A T T G T

A C A

(71)

A C A T T G T

A C A

(72)

A C A T T G T

A C A

(73)

A C A T T G T

A C A

Références

Documents relatifs

Mais, si l'on peut, dans la théorie et d'une manière abstraite, distinguer l'observateur de l'expérimentateur, il semble impossible dans la pratique de les séparer,

La construction de l'automate de la Figure 13 à partir de celui de la Figure 12 est le résultat d'un procédé général appliquable à tout automate, connu sous le nom

[r]

Un jour, il avait ramené un petit chat perdu, et aussi, plus tard, un jeune chien abandonné.. Mais sa maman trouvait que ces bêtes faisaient trop

– 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

une fille, un crayon, le premier, une oreille, du travail, une fillette, de la bière, le soleil, un brouillon, mon pied, un fauteuil,

[r]

Cette troisième approche nous permet également de conclure que la suite ( ) u n est strictement