Documente Academic
Documente Profesional
Documente Cultură
Diseo de AFDs
b
q2
Ejemplo
Disear un AFD que acepte todas las palabras sobre {0, 1} que tengan un nmero impar de 1s.
No se requiere saber cuantos 1s se han ledo sino slo si llevamos un nmero par o impar de 1s. Esta respuesta permanece igual si enseguida leemos un 0 y cambia si leemos un 1. Representar esto como una lista de posibilidades y asignar un estado a cada posibilidad: a) par hasta ahorita. B) impar hasta ahorita. Asignar las transiciones. Definir el estado inicial, el que corresponde a la palabra nula l. Definir el estado final, el que corresponde a palabras de longitud impar. 1 qpar 0 qimpar 1
Disear un AFD que reconozca palabras que contienen la cadena 001 como 0010, 1001, 11111110011111, pero no como 11, 0000, 1100, 10101. Posibilidades:
No hemos ledo ningn smbolo. Estado q. Hemos ledo un 0. Estado q0. Hemos ledo 00. Estado q00. Hemos ledo 001. Estado q001.
1 0
Otro ejemplo
0,1
q
1
q0
q00
q001
5
Ejemplos
Disear un AFD que acepte exactamente el lenguaje sobre {0, 1} en que las palabras no comienzan con 00.
0,1
q0
1
q1
1
q2
q3
0,1
6
Ejemplo
Palabras sobre {a, b, c} en las cuales toda b es inmediatamente seguida de al menos una c.
a,c a,c a,c
q0
q1
a,b b
q3
q0
c
q1
a,b
q2
a,b,c
q2
a,b,c
7
Otro ejemplo
Construir un autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras que terminan con 10, es decir, reconoce el lenguaje (0 + 1)*10.
0 0
00
1
0
0
01
0 1
i
1
0
10
0
11
1
B
0
0
1
Un ejemplo ms
Construir un autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras que terminan con 1, es decir, (0 + 1)*1.
10
Y un ejemplo ms
Construir un autmata finito determinsta que reconozca el lenguaje sobre {0, 1} que consiste de las palabras cuyo penltimo smbolo es 1, es decir, su expresin regular es (0 + 1)*1(0 + 1).
0
0 0 1
C
0 1
D
1
11
Y an otro ms
Construir un autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras cuyo antepenltimo smbolo es 1, es decir, su expresin regular es (0 + 1)*1(0 + 1)(0 + 1).
1
0 0
E
C
0 1 0 1
F
1 0
B
1 0
G
0
H
1
12
Y varios ms
Cuntos estados tendra el autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras cuyo ante-antepenltimo smbolo es 1, es decir, su expresin regular es (0 + 1)*1(0 + 1)3?
Resp: 24 = 16.
Cuntos estados tendra el autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras cuyo dcimo smbolo, contado de derecha a izquierda es 1, es decir, su expresin regular es (0 + 1)*1(0 + 1)9?
Resp: 210 = 1024.
Cuntos estados tendra el autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras cuyo vigsimo smbolo, contado de derecha a izquierda es 1, es decir, su expresin regular es (0 + 1)*1(0 + 1)19?
Resp: 220 = 1M.
Cuntos estados tendra el autmata finito determinista que reconozca el lenguaje sobre {0, 1} que consiste de las palabras cuyo vigsimo quinto smbolo, contado de derecha a izquierda es 1, es decir, su expresin regular es (0 + 1)*1(0 + 1)24?
Resp: 225 = 32M.
13
14
15
Ejemplo
a
a,b
b a b
a,b b a b
q0
q1
q2
q0
q1
q2
M1
M2
17
Ejemplo
0
0
1
1 0 q0 q1 1 1 0
0 1
q1
q0
q2
M1
M2
Son M1 y M2 equivalentes? No! Por qu? Porque M1 acepta 0 y M2 no. Porque M2 acepta 01 y M1 no.
18
Ejemplo
0
0
1
1 0 q0 q1 1 1 0
0 1
q1
q0
q2
M1
M2
Son M1 y M2 equivalentes? S! Por qu? Porque todas las palabras que son aceptadas por M1 tambin lo son 19 por M2 y viceversa.
Cmo podemos verificar TODAS las palabras? Cmo podemos encontrar una palabra que es aceptada por uno de los autmatas pero no por el otro?
20
21
Comparacin de los autmatas M=(K, S, d, s0, F) y M = (K, S, d, s0, F). Se construye la tabla de comparacin con 1+|S| columnas. La primera columna ponemos (q, q) como encabezado. El encabezado de las columnas restantes son los smbolos del alfabeto. 1) Inicialmente escribimos (s0, s0) en el primer rengln de la primera columna. 2) Completamos el rengln poniendo en cada columna a la pareja de estados donde el primer elemento de la pareja es el estado a donde se transfiere el autmata M del estado en la primera columna despus de leer el smbolo que encabeza la columna correspondiente. El segundo elemento de la pareja es la transicin correspondiente a M. 3) Cada pareja de estados generado en el punto 2) que no est en la primera columna se escribe en esa primera columna. 4) Se completa el rengln para la siguiente pareja de estados en la primera columna. 5) Si en la primera columna aparece una pareja de estados incompatible, entonces se termina el proceso y se concluye que los autmatas no son equivalentes. 6) Si en la primera columna no aparecieron parejas de estados incompatibles y si ya no aparecen nuevas parejas que no estn en la primera columna, entonces se 22 concluye el proceso y decimos que los autmatas son equivalentes.
Algoritmo de Moore
Arbol de comparacin
a a 4 b b b 5 (1,3) a a b
(2,4)
a
1 b
a a
2 b
a (2,5)
(1,5) b (1,4)
23
A:
0
0 7
1
0 1
B:
6 1
0
9
1
10
0 1
0,1 11 0 12 18 0,1
1 1 1
14 1
15
0 1 0 16 0,1 1 17
C:
13 0
24
25
Simplificacin de autmatas
Decimos que un autmata es una simplificacin de otro si tiene menos estados pero ambos aceptan el mismo lenguaje. Decimos que en un AFD dos estados son equivalentes si al tomar uno o el otro como estado inicial, los lenguajes aceptados por los AFDs resultantes son iguales. En otras palabras, dado un AFD M = (K, S, d, s0, F) y dos estados q0 y q1 K, decimos que q0 y q1 son equivalentes o redundantes (q0 q1) si (K, S, d, q0, F) (K, S, d, q1, F). Una vez que sabemos que dos estados son equivalentes, entonces podemos eliminar uno de ellos. Pero, y las flechas que entran y salen del estado eliminado?
Las flechas que salen del estado eliminado son eliminadas. Las flechas que entraban al estado eliminado se redirigen al estado equivalente.
26
Estados equivalentes
a b 3 a 5 a 4 b 3 a 5 a b b
27
b
a
Borrar transiciones
b 3 a a
a
5
a
b
3
a 4
5 b
28
Redirigir transiciones
a b 3 a 4
5
b b 3 a 5 b
29
Ejercicio.- simplificar:
0 0 0 6 0 1 7 1
8
0,1
1
9 10
0
11 0 1 12
31
Respuesta
Definamos el autmata M = (K, S, d, s0, F) donde
K = K1 K2 s0 = (s1, s2) d((p, q), a) = (d1(p, a), d2(q, a)) para pK1, qK2 y aS Si F = {(p, q) | pF1 o qF2}, entonces M acepta al lenguaje L1L2. Si F = {(p, q) | pF1 y qF2}, entonces M acepta al lenguaje L1L2. Si F = {(p, q) | pF1 y qF2}, entonces M acepta al lenguaje L1-L2.
Ejemplo
Consideremos los lenguajes sobre el alfabeto S={0, 1}:
L1 = {x | 00 no es una subcadena de x} L2 = {x | x termina con 01} 1 0 0,1
0 1
L1
Q
1
L2
35
K 1 K2
1 1
AP
0
BP
CP
0
0
1
AQ
0
BQ
CQ
0
AR
BR
CR
36
L1 L2
1 1
AP
0
CP
0
0
1 0 0
BQ
CQ
1
AR
CR
37
L1 L2
1 1
AP
0
CP
0
0
1 0 0
BQ
CQ
1
AR
CR
38
L1 - L2
1 1
AP
0
CP
0
0
1 0 0
BQ
CQ
1
AR
CR
39
C A
1
L1
L1C
40
q1
1
r
1 0 0,1
t
0 1 1 1
q0
0
s
0,1
0
u
1
q0
q4
0
1
p q2 q3
41
43