Equivalencia de Autómatas finitos deterministas y no deterministas Elvira Mayordomo, Universidad de Zaragoza 15 de octubre de 2012 1. Teorema Teorema 1 Dado un AFnD M, existe un AFD M tal que L(M) = L(M ). Proof. Primero demostramos el teorema para M un AFnD que no tiene ǫ-transiciones y luego para el caso general. Sea el AFnD M = (Q,Σ,δ,q 0,F) que no tiene ǫ-transiciones. δ (R,a) = r Rδ(r,a) para cada R Q, para cada a Σ. I = {q 0 }. Veamos que L(M) = L(M ). Sea w L(M). Si (r 0,r 1,...,r n ) es una computación aceptadora de M con entrada w = w 1...w n, entonces r i+1 δ(r i,w i+1 ). Sea la computación de M con entrada w, (R 0,...,R n ). Como R i+1 = δ (R i,w i+1 ), entonces R 0 = I = {q 0 }, q 0 = r 0 R 0. Si r i R i entonces r i+1 δ(r i,w i+1 ) R i+1. Luego r n R n y r n F por lo que R n F. Por tanto (R 0,...,R n ) es la computación aceptadora de M con entrada w. Luego w L(M ). Sea w L(M ). Si la computación aceptadora de M con entrada w es (R 0,...,R n ) entonces R n F por lo que existe q n R n F. Por tanto existe un q n 1 R n 1 tal que q n δ(q n 1,w n ). 1
Existe q n 2 R n 2 tal que q n 1 δ(q n 2,w n 1 ). Continuamos obteniendo q n 3,...,q 0 tales que q i R i, q i+1 δ(q i,w i+1 ). Notar que R 0 = I = {q 0 }. De esta forma tenemos (q 0,...,q n ) una computación aceptadora de M con entrada w. Luego w L(M). Para el caso general, sea M = (Q,Σ,δ,q 0,F) un AFnD cualquiera (que puede tener ǫ-transiciones). Para cada R Q definimos E(R), el conjunto de estados alcanzables desde R mediante ǫ-transiciones: E(R) = {q q es alcanzable desde algún estado de R siguiendo 0 ó más ǫ-transiciones} δ (R,a) = r RE(δ(r,a)) para cada R Q, para cada a Σ. I = E({q 0 }). Veamos que L(M) = L(M ). Sea w L(M). Si (r 0,r 1,...,r m ) es una computación aceptadora de M con entrada w = w 1...w n, entonces w = y 1...y m con y i Σ ǫ, r i+1 δ(r i,y i+1 ). Si w = y a1 y a2...y an, es decir, el resto de los símbolos de y para cada a i < j < a i+1 son y j = ǫ, podemos quitar las ǫ-transiciones de (r 0,r 1,...,r m ) y obtener una computación aceptadora de M con entrada w como sigue. Para cada a i < j < a i+1, r j δ (r ai 1,w i ). Además para cada j < a 1, r j E({r 0 }) y para cada a n < j, r j δ (r an 1,w n )). Sea la computación de M con entrada w, (R 0,...,R n ). Como R i+1 = δ (R i,w i+1 ), entonces R 0 = I = E({q 0 }), q 0 = r 0 R 0. r a1 1 E({q 0 }) = R 0. Si r ai+1 1 R i entonces r ai+2 1 E(δ(r ai+1 1,w i+1 )) R i+1. r m E(δ(r an 1,w n )) R n. Luego r m R n y r m F por lo que R n F. Por tanto (r 0,r a2 1,...,r an 1,r m ) es una computación de M con entrada w, y es aceptadora porque R n F. Luego w L(M ). Sea w L(M ). Si la computación aceptadora de M con entrada w = w 1...w n es (R 0,...,R n ) entonces R n F por lo que existe r 1 R n F. ComoR n = r R n 1 E(δ(r,w n )),exister 2 R n 1 talquer 1 E(δ(r 2,w n )). Existen también estados q 1 1,...,q1 k 1 tales que q 1 1 δ(r2,ǫ), q 1 i+1 δ(q1 i,ǫ), 2
r 1 δ(qk 1 1,ǫ). Así que (r 2,q1 1,...,q1 k 1,r 1 ) es el final de una computación aceptadora en M. De la misma forma, como R n 1 = r R n 2 E(δ(r,w n 1 )), existe r 3 R n 2 tal que r 2 E(δ(r 3,w n 1 )). Existen también estados q1 2,...,q2 k 2 tales que q1 2 δ(r 3,ǫ), qi+1 2 δ(q2 i,ǫ), r2 δ(qk 2 2,ǫ). Así que (r 3,q1 2,...,q2 k 2,r 2,q1 1,...,q1 k 1,r 1 ) es el final de una computación aceptadora en M. Continuamos obteniendo r 4,...,r n+1 tales que existe r i R n i+1 tal que r i 1 E(δ(r i,w n i+2 )) que forman parte de una computación aceptadora en M. Como r n+1 R 0 = I = E({q 0 }), existen también estados q1 n+1,...,q n+1 tales que q1 n+1 = q 0, q n+1 i+1 δ(qn+1 i,ǫ), r n+1 δ(q n+1,ǫ). De esta forma tenemos (q n+1 1,...,q n+1,r n+1,q n 1,...,q n k n,r n,...,r 3,q 2 1,...,q 2 k 2,r 2,q 1 1,...,q 1 k 1,r 1 ) una computación aceptadora de M con entrada w. Luego w L(M). 3
2. Método para convertir un AFnD en un AFD equivalente 2.1. Si no tiene ǫ-transiciones Tenemos un AFnD M = (Q,Σ,δ,q 0,F) sin ǫ-transiciones. δ (R,a) = r Rδ(r,a) para cada R Q, para cada a Σ. I = {q 0 }. Intuitivamente, construimos δ como sigue: 1. Construir una tabla con columnas una por cada a Σ. 2. En la primera fila escribir {q 0 } y en la columna a escribir δ({q 0 },a), es decir, todos los estados a los que puedo llegar desde q 0 con entrada a. 3. Copiar las casillas de la fila anterior como principio de nuevas filas. 4. Para cada fila R pendiente, rellenar la fila R escribiendo en cada columna a δ(r,a), es decir, todos los estados a los que puedo llegar desde algún estado de R con entrada a. 5. Copiar las casillas de la fila anterior como principio de nuevas filas. 6. Repetir los pasos 4 y 5 hasta que no queden filas por rellenar. 2.2. Si tiene ǫ-transiciones Tenemos un AFnD M = (Q,Σ,δ,q 0,F) que puede tener ǫ-transiciones. Para cada R Q definimos E(R), el conjunto de estados alcanzables desde R mediante ǫ-transiciones: E(R) = {q q es alcanzable desde algún estado de R siguiendo 0 ó más ǫ-transiciones} δ (R,a) = r RE(δ(r,a)) para cada R Q, para cada a Σ. I = E({q 0 }). 4
Intuitivamente, construimos δ como sigue: 1. Construir una tabla con columnas una por cada a Σ. 2. En la primera fila escribir E({q 0 }) (es decir, todos los estados a los que puedo llegar desde q 0 mediante (0 ó más) ǫ-transiciones) 3. En la primera fila, en la columna a escribir r E({q 0}) E(δ(r,a)), es decir, todos los estados a los que puedo llegar desde E({q 0 }) con entrada a poniendo (0 ó más) ǫ-transiciones después de a. 4. Copiar las casillas de la fila anterior como principio de nuevas filas. 5. Para cada fila R pendiente, rellenar la fila R escribiendo en cada columna a, r RE(δ(r,a)), es decir, todos los estados a los que puedo llegar desde algún estado de R con entrada a poniendo(0 ó más) ǫ-transiciones después de a. 6. Copiar las casillas de la fila anterior como principio de nuevas filas. 7. Repetir los pasos 5 y 6 hasta que no queden filas por rellenar. 3. Referencias Sipser (2a edición), páginas 54 a 58 (en sección 1.2). Kelley, secciones 2.6 y 2.7. 5