String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q...

22
String Matching

Transcript of String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q...

Page 1: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

String Matching

Page 2: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

Autómata Finito

• Un autómata finito M es una 5-tuple

• (Q, q0, A, , δ), donde– Q es un conjunto finito de estados– q0 ε Q es el estado inicial– A Q es un conjunto de estados de

aceptacion o finales es un alfabeto– δ es la funcion de transicion

Page 3: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

Como trabaja un Automata en estados finitos

• Los automata finito M comienza en el estado q0

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

Page 4: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

Ejemplo• Pattern : gcag

• Text : gcgagcagc

Page 5: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

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

}

Page 6: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

q 0 1 2 3 4

P [q] - g c a g

g c a

0 1 0 0

1 - - -

2 - - -

3 - - -

4 - - -

0 1 2 3 4a gcg

q = 0Min(1,4)=K=1P[1]=g es sufijo P[0]+g=g

δ( 0, g ) = 1

Page 7: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 - -

2 - - -

3 - - -

4 - - -

0 1 2 3 4a gcg

q = 1Min(2,4)=K=2P[2]=gc no es sufijo P[1]+g=gg

k = k – 1 = 1P[1] = g es sufijo de P[0]+g=gδ( 1, g ) = 1

g

q 0 1 2 3 4

P [q] - g c a g

Page 8: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

q 0 1 2 3 4

P [q] - g c a g

g c a

0 1 0 0

1 1 - -

2 1 - -

3 - - -

4 - - -

0 1 2 3 4a gcg

q = 2Min(3,4)= K = 3P[3]=gca no es sufijo de P[2]+g=gcg

k = k – 1 = 2P[2] = gc no es sufijo de P[1]+g=ggk = k – 1 = 1P[1] = g es sufijo de P[0]+g=gδ( 2, g ) = 1

g g

Page 9: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

q 0 1 2 3 4

P [q] - g c a g

g c a

0 1 0 0

1 1 - -

2 1 - -

3 4 - -

4 - - -

0 1 2 3 4a gcg

q = 3Min(4,4)= K = 4P[4]=gcag es sufijo de P[3]+g=gcag

δ( 3, g ) = 4

g g

Page 10: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

q 0 1 2 3 4

P [q] - g c a g

g c a

0 1 0 0

1 1 - -

2 1 - -

3 4 - -

4 1 - -

0 1 2 3 4a gcg

q = 4Min(5,4)= K = 4P[4]=gcag no es sufijo de P[4]+g=gcagg

k = k – 1 = 3P[3]=gca no es sufijo de P[2]+g=gcag

k = k – 1 = 2P[2] = gc no es sufijo de P[1]+g=gcgk = k – 1 = 1P[1] = g es sufijo de P[0]+g=ggδ( 4, g ) = 1

g g

g

Page 11: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

• Pattern : gcag• Text : gcgagcagc

Page 12: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

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

Page 13: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0

δ(q,T[i ]) 1

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

Page 14: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1

δ(q,T[i ]) 1 2

Page 15: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2

δ(q,X) 1 2 1

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

Page 16: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1

δ(q,X) 1 2 1 0

Page 17: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g

g

c

g

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1 0

δ(q,X) 1 2 1 0 1

Page 18: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1 0 1

δ(q,X) 1 2 1 0 1 2

Page 19: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1 0 1 2

δ(q,X) 1 2 1 0 1 2 3

Page 20: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1 0 1 2 3

δ(q,X) 1 2 1 0 1 2 3 4

Page 21: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1 0 1 2 3 4

δ(q,X) 1 2 1 0 1 2 3 4 2

Page 22: String Matching. Autómata Finito Un autómata finito M es una 5-tuple (Q, q0, A, , δ), donde –Q es un conjunto finito de estados –q0 ε Q es el estado.

g c a

0 1 0 0

1 1 2 0

2 1 0 3

3 4 0 0

4 1 2 0

0 1 2 3 4a gcg

g g

g

c

i 1 2 3 4 5 6 7 8 9

T [i] G C G A G C A G C

q 0 1 2 1 0 1 2 3 4

δ(q,X) 1 2 1 0 1 2 3 4 2