String Matching Autmata Finito Un autmata finito M

  • Slides: 22
Download presentation
String Matching

String Matching

Autómata Finito • • Un autómata finito M es una 5 -tuple (Q, q

Autómata Finito • • Un autómata finito M es una 5 -tuple (Q, q 0, A, , δ), donde – Q es un conjunto finito de estados – q 0 ε Q es el estado inicial – A Q es un conjunto de estados de aceptacion o finales – es un alfabeto – δ es la funcion de transicion

Como trabaja un Automata en estados finitos • • Los automata finito M comienza

Como trabaja un Automata en estados finitos • • Los automata finito M comienza en el estado q 0 Lee los caracteres desde uno a la vez Si M esta en el estado q y lee un caracter “a”, entonces M se mueve al estado δ(q, a) Los nodos correspondientes a los estados de aceptación están marcados por un doble círculo. Los que no con un círculo sencillo.

Ejemplo • • Pattern : gcag Text : gcgagcagc

Ejemplo • • Pattern : gcag Text : gcgagcagc

Funcion de transicion • For( q = 0; q<= m; q ++ ) For(

Funcion de transicion • For( q = 0; q<= m; q ++ ) For( cada carácter x del alfabeto ){ k = min( q +1, m) while( P[ k] no es sufijo de P[ k] + c ){ k=k– 1 } δ( q, x ) = k }

0 q 0 1 2 3 4 P [q] - g c a g

0 q 0 1 2 3 4 P [q] - g c a g g 1 c q=0 Min(1, 4)=K=1 P[1]=g es sufijo P[0]+g=g δ( 0, g ) = 1 2 a 3 g g c a 0 1 0 0 1 - - - 2 - - - 3 - - - 4

q 0 1 2 3 4 P [q] - g c a g g

q 0 1 2 3 4 P [q] - g c a g g c a 0 1 0 0 1 1 - - 2 - - - 3 - - - 4 - - - g 0 g 1 c 2 q=1 Min(2, 4)=K=2 P[2]=gc no es sufijo P[1]+g=gg k=k– 1=1 P[1] = g es sufijo de P[0]+g=g δ( 1, g ) = 1 a 3 g 4

q 1 0 P [q] - 2 g c g 0 g 3 4

q 1 0 P [q] - 2 g c g 0 g 3 4 a g g c a 0 1 0 0 1 1 - - 2 1 - - 3 - - - 4 - - - g 1 c 2 a q=2 Min(3, 4)= K = 3 P[3]=gca no es sufijo de P[2]+g=gcg k=k– 1=2 P[2] = gc no es sufijo de P[1]+g=gg k=k– 1=1 P[1] = g es sufijo de P[0]+g=g δ( 2, g ) = 1 3 g 4

0 q P [q] - 1 g 2 c g 0 g 3 a

0 q P [q] - 1 g 2 c g 0 g 3 a 4 g g c a 0 1 0 0 1 1 - - 2 1 - - 3 4 - - - g 1 c 2 q=3 Min(4, 4)= K = 4 P[4]=gcag es sufijo de P[3]+g=gcag δ( 3, g ) = 4 a 3 g 4

0 q P [q] - 1 g 2 c g 0 g 3 a

0 q P [q] - 1 g 2 c g 0 g 3 a 4 g g g c a 0 1 0 0 1 1 - - 2 1 - - 3 4 - - 4 1 - - g 1 c 2 a q=4 Min(5, 4)= K = 4 P[4]=gcag no es sufijo de P[4]+g=gcagg k=k– 1=3 P[3]=gca no es sufijo de P[2]+g=gcag k=k– 1=2 P[2] = gc no es sufijo de P[1]+g=gcg k=k– 1=1 P[1] = g es sufijo de P[0]+g=gg δ( 4, g ) = 1 3 g 4

 • • Pattern : gcag Text : gcgagcagc g g 0 g g

• • Pattern : gcag Text : gcgagcagc g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c 2 a 3 c g 4

Algorithm • Entrada : T [1. . n], δ and m • • String_matcher_automata_finito

Algorithm • Entrada : T [1. . n], δ and m • • String_matcher_automata_finito (T, m, δ) n ← length[T ] q← 0 for i ← 1 to n q ← δ (q, T [i]) if q = m print “pattern” i-m

g 0 c a 0 1 0 0 1 1 2 0 2 1

g 0 c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 δ(q, T[i ]) 1

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 δ(q, T[i ]) 1 2

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 δ(q, X) 1 2 1

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 δ(q, X) 1 2 1 0

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 0 δ(q, X) 1 2 1 0 1

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 0 1 δ(q, X) 1 2 1 0 1 2

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 0 1 2 δ(q, X) 1 2 1 0 1 2 3

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 0 1 2 3 δ(q, X) 1 2 1 0 1 2 3 4

g g 0 g g c a 0 1 0 0 1 1 2

g g 0 g g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g 1 c a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 0 1 2 3 4 δ(q, X) 1 2 1 0 1 2 3 4 2

g g 0 g c a 0 1 0 0 1 1 2 0

g g 0 g c a 0 1 0 0 1 1 2 0 2 1 0 3 3 4 0 0 4 1 2 0 g g c 1 a 2 g 3 4 c i 1 2 3 4 5 6 7 8 9 T [i] G C G A G C q 0 1 2 1 0 1 2 3 4 δ(q, X) 1 2 1 0 1 2 3 4 2