300 likes | 474 Views
Diseño de AFN’s. F 1. s 1. . i. . s 2. F 2. Unión de lenguajes. Si M 1 = (K 1 , S , 1 , s 1 , F 1 ) y M 2 = (K 2 , S , 2 , s 2 , F 2 ) aceptan L 1 y L 2 , respectivamente, la combinación M 1 2 acepta L 1 È L 2. M 1. M 1 2. M 2. En notación formal.
E N D
F1 s1 i s2 F2 Unión de lenguajes • Si M1 = (K1, S, 1, s1, F1) y M2 = (K2, S, 2, s2, F2) aceptan L1 y L2, respectivamente, la combinaciónM12 acepta L1È L2 M1 M1 2 M2
En notación formal • M1 = (K1, S, 1, s1, F1)M2 = (K2, S, 2, s2, F2) • M1 2 = (K1 ÈK2 È{i}, S,1 È 2È{(i, , s1),(i, , s2)}, i, F1 È F2)
b 1 2 b 0 a a 3 6 a 4 a 5 b a,b a,b Ejemplo • Construir un AFD sobre {a, b} que reconoce palabras con un número impar de b’s o que contienen la cadena aab.
s2 F2 Concatenación de lenguajes • Si M1 = (K1, S, 1, s1, F1) y M2 = (K2, S, 2, s2, F2) aceptan L1 y L2, respectivamente, la combinación M12 acepta L1L2 M1 M2 F1 s1 M12
En notación formal • M1 = (K1, S, 1, s1, F1)M2 = (K2, S, 2, s2, F2) • M12 = (K1 ÈK2, S1 ÈS2,1È2È{(p, , s2) | p Î F1}, s1, F2)
a 4 3 1 a a a a 0 2 b b Ejemplo:AFN que reconoce palabras que tienen grupos de aa’s (eventualmente separados por b’s) y después tienen grupos de aaa’s (eventualmente separados por b’s)
F1 s0 i Cerrradura de Kleene • Si M = (K, S, , s0, F) acepta el lenguaje L, M* acepta el lenguaje L*: M*
Complemento de lenguajes • Si AFD acepta L, es posible construir AFDc que acepta el lenguaje complemento de L, Lc. • Si M = (K, S, d, s, F), entonces Mc = (K, S, d, s, K-F)
Cerradura bajo intersección • Si L1 y L2 son regulares, entonces L1Ç L2 también lo es. • Para construir un AF que acepte L1Ç L2:
Ejercicio • Obtener un AFD que acepte el lenguaje de las palabras en {a,b} que si no tienen la subcadena “aba”entonces tienen un número par de b’s. • Utilizar equivalencia: Si A entonces B º (no A) o B
Ejercicio • Obtener un AFD que acepte el lenguaje de las palabras en {0,1} que no contienen la subcadena “011” y además son de longitud impar. • Utilizar equivalencia:
E q0 q1 Lenguajes regulares y Autómatas finitos • Recordemos que los lenguajes regulares son los representados por expresiones regulares. • Teorema: Un lenguaje es regular si y solo si es aceptado por algún autómata finito. • Para convertir una expresión regular E en un autómata finito se inicia con la gráfica de transición:y se aplican recursivamente las siguientes reglas de reemplazo hasta que no sea posible aplicar ninguna de estas reglas.
a b b q1 q0 b a a 0 q1 q0 1 0 0 q1 q0 a b 1 s Ejemplos de ER AF • (a + ab)* • (ba + a)*bb • (0 + 1)*010
a,b a,b a b 8 1 2 AF ER ¿Expresión regular?
a,b a,b b a b 8 1 2 AF ER ¿Expresión regular? (a + b)*ab*b(a + b)*
6 3 a b b a a a 8 1 2 5 a b b a 4 7 AF ER Eliminar el estado 5
aa*a ba*b 6 3 a a ba*a a 8 1 2 aa*b b b 4 7 AF ER Eliminar el estado 5
AF ER • Convertir el AF a uno en el que sólo haya un estado inicial al que no llegue ninguna transición, y un solo estado final del que no salga ninguna transición. • Añadir un nuevo estado inicial i con una transición del que salga una transición vacía al antiguo estado inicial. • Añadir un nuevo estado final f al que lleguen transiciones vacías desde los antiguos estados finales. • Eliminar nodos intermedios sin que se alteren las cadenas que hay que utilizar para pasar de un estado “origen”, vecino del eliminado, a un estado “destino”, vecino del eliminado. • Una vez que se hayan eliminado todos los nodos intermedios y sólo quede el inicial y el final, entonces fusionar todas las expresiones regulares entre ellos en una sola por medio de +’s.
1 p1 q1 1 1 q … … m n pn qm k AF ER F1 s1 i f • Paso 1: • Paso 2: • Paso 3: 1(1 +...+ k)*1 p1 q1 n(1 +...+ k)*1 1(1 +...+ k)*m … … n(1 +...+ k)*m pn qm R1 R2 R1 + R2 + ... + Rn … Rn
Ejemplos de AF ER a a,b q0 a*b(a + b)* b q1 a,b q0 a q1 a b (bb*a)*a(a + b)* + (bb*a)*bb* q2 b b a q0 q1 a (a(aa + b)*ab + b)((ba + a)(aa + b)* ab + bb)*((ba + a)(aa + b)* + ) + a(aa + b)* b b a q2
0 0 4 1 2 3 1 1 1 1 0 0 Otro ejemplo
Solución al otro ejemplo 0 + (1 + 00)(0 + 10)*1 + (01 + (1 + 00)(0 + 10)*11)((0 + 10)*11)*((0 + 10)*1 + (0 + 10)+)
¿Hay lenguages que no sean regulares? Sí
Lema de bombeo (Pumping lemma) • Si L es un lenguaje regular, entonces existe un número n (la longitud de bombeo) tal que si w es cualquier cadena en L de longitud mayor o igual que n, entonces w puede ser dividido en tres partes, w = xyz, que satisfacen las siguientes tres condiciones: • 1) xyizL para toda i 0. • 2) |y| > 0. • 3) |xy| ≤n. Recuerde que |...| representa la longitud de la cadena, es decir, es el número de símbolos del alfabeto que integran la cadena.
y z qm x q1 qj=qk “Demostración” del Lema de bombeo • Sea M un AFD que reconoce L y sea n el número de estados de este autómata. Demostraremos que cualquier cadena de longitud mayor o igual que n puede ser descompuesta en tres partes xyz que satisfacen las tres condiciones. • Si el lenguaje no contiene cadenas de longitud mayor o igual que n, entonces el teorema es verdadero por vacuidad, es decir, no existen cadenas que lo contradigan, es decir, no existen cadenas que hagan que el teorema sea falso. • Si una cadena aceptada por L tiene longitud mayor o igual que n y si denotamos por q1, q2, ..., qm, los estados visitados por el autómata conforme se procesa la cadena, iniciando en el estado inicial q1 y terminando en un estado final qm, entonces existe al menos un estado que se repite. Sean qj y qk los primeros que se repiten. • Tomamos x = q1 ... qj-1, y = qj ... qk-1, z = qk ... qm. Nota: cualquier lenguaje finito es regular.
Ejemplos de lenguajes no regulares • B = {0i1i | i 0} no es regular.Supongamos que sí. Sea M un autómata que acepta B. Sea n la longitud de bombeo.Consideremos la cadena w = 0n1n B. Bajo la suposición de que B es regular, entonces la cadena w puede ser descompuesta en tres partes w = xyz tal que xyiz pertenece a B para toda i 0, en particular, para i=2. Por lo tanto, xyyz debe ser parte del lenguaje. Hay tres casos para y: • y consiste solo de 0’s. En este caso xyyz tiene más 0’s que 1’s. Contradicción. • y consiste solo de 1’s. En este caso xyyz tiene más 1’s que 0’s. Contradicción. • y consiste de 0’s y 1’s. En este caso xyyz tiene algunos 1’s antes que 0’s. Contradicción.
...Ejemplos • C = {w | w tiene el mismo número de 0’s y 1’s}Si C fuera regular, entonces C (0*1*) también lo sería, pero esta intersección es el lenguaje B del ejemplo anterior, por lo que C no puede ser regular. • Ejercicio: Demuestre queD = {w | w tiene el mismo número de 01’s que de 10’s} es regular.101 D porque tiene un “01” y un “10”, pero 1010 D porque tiene dos “10” y un “01”.
¿{w | w tiene el mismo número de 01’s que de 10’s} = {w | símbolo inicial de w = símbolo final de w}?
Tarea 4 (en equipo) • Parte 1: Obtenga el AFD mínimo equivalente al autómata M en la lámina 34 del TLarchivo05.ppt • Parte 2: Ejercicios 3.17, 3.33, 4.10 (a, b, c e, f), 4.20, 4.29, 4.35 y 4.36 del texto de John Martin. • Fecha de asignación: 01/Abril/2004 • Fecha de entrega: 19/Abril/2004 • NOTA IMPORTANTE: en el texto “FA” significa “Autómata Finito Determinista”