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

(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

| e

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

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

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

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

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

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

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

G U C A A G A C

S

G W1 C

U W2 A

C W3 G

W3 A

A W3 e

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

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

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

(22)

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.

(23)

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.

(24)

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

(25)

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

(26)

Automate Fini Déterministe

• Q = {q

0

, q

1

, q

2

}; S = {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 S

*

(27)

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

(28)

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

(29)

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}

(30)

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

(31)

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

(32)

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

(33)

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

*

(34)

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

*

(35)

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

*

(36)

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

* *

(37)

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

* *

(38)

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

* * *

(39)

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

* * *

(40)

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

* * *

(41)

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

* * *

(42)

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

(43)

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

(44)

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

(45)

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

(46)

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}

(47)

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}

(48)

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}

(49)

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}

(50)

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}

(51)

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}

(52)

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

(53)

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}

(54)

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 x

S → P

(Q)

d

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

A

reconnaî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.

(55)

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

(56)

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

(57)

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

(58)

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

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

S

(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

Dans le cas général (pas de correspondance), on déplace la fenêtre de recherche de (saut – (k – 1 – j)) positions, la valeur de saut étant donnée par la table de recherche,

La recherche approchée (ou par intervalles) recherche la valeur la plus proche inférieure ou égale à la valeur recherchée, et renvoie la valeur correspondante dans une

La recherche approchée (ou par intervalles) recherche la valeur la plus proche inférieure ou égale à la valeur recherchée, et renvoie la valeur correspondante dans

Chercher sur Internet l‘algorithme DSW (c’est un algorithme qui prend en entrée un arbre de recherche binaire afin de réaliser son équilibrage) et l’algorithme de

Le probl` eme de cet exercice consiste ` a d´ eterminer le nombre de points du plan contenus dans un rectangle donn´ e.. Ce genre de situation apparait tr` es souvent dans les

• Différentes façons de « simuler » un AFND: Structure de donnée que l’on peut utiliser pour différentes fins. –

Tant la recherche en soins primaires que la surveil- lance de la santé publique comportent la collecte et l’analyse des renseignements sur la santé des personnes

La complexité des opérations sur un ABR dépendant de la hauteur de l'arbre, il est important qu'un ABR reste aussi proche que possible d'un arbre binaire parfait de manière à ce