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, Σ, δ, q0 , F ) que no tiene ǫ-transiciones. Definimos un AFD M ′ = (Q′ , Σ, δ ′ , I, F ′ ) como sigue: Q′ = P(Q), es decir, cada estado de M ′ es un conjunto de estados de M . S δ ′ (R, a) = r∈R δ(r, a) para cada R ⊆ Q, para cada a ∈ Σ. F ′ = {R | R ∩ F 6= ∅ }. I = {q0 }. Veamos que L(M ) = L(M ′ ). Sea w ∈ L(M ). Si (r0 , r1 , . . . , rn ) es una computación aceptadora de M con entrada w = w1 . . . wn , entonces ri+1 ∈ δ(ri , wi+1 ). Sea la computación de M ′ con entrada w, (R0 , . . . , Rn ). Como Ri+1 = δ ′ (Ri , wi+1 ), entonces R0 = I = {q0 }, q0 = r0 ∈ R0 . Si ri ∈ Ri entonces ri+1 ∈ δ(ri , wi+1 ) ⊆ Ri+1 . Luego rn ∈ Rn y rn ∈ F por lo que Rn ∈ F ′ . Por tanto (R0 , . . . , Rn ) 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 (R0 , . . . , Rn ) entonces Rn ∈ F ′ por lo que existe qn ∈ Rn ∩ F . Por tanto existe un qn−1 ∈ Rn−1 tal que qn ∈ δ(qn−1 , wn ). 1 Existe qn−2 ∈ Rn−2 tal que qn−1 ∈ δ(qn−2 , wn−1 ). Continuamos obteniendo qn−3 , . . . , q0 tales que qi ∈ Ri , qi+1 ∈ δ(qi , wi+1 ). Notar que R0 = I = {q0 }. De esta forma tenemos (q0 , . . . , qn ) una computación aceptadora de M con entrada w. Luego w ∈ L(M ). Para el caso general, sea M = (Q, Σ, δ, q0 , 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} Definimos un AFD M ′ = (Q′ , Σ, δ ′ , I, F ′ ) como sigue: Q′ = P(Q), es decir, cada estado de M ′ es un conjunto de estados de M . S δ ′ (R, a) = r∈R E(δ(r, a)) para cada R ⊆ Q, para cada a ∈ Σ. F ′ = {R | R ∩ F 6= ∅ }. I = E({q0 }). Veamos que L(M ) = L(M ′ ). Sea w ∈ L(M ). Si (r0 , r1 , . . . , rm ) es una computación aceptadora de M con entrada w = w1 . . . wn , entonces w = y1 . . . ym con yi ∈ Σ ∪ ǫ, ri+1 ∈ δ(ri , yi+1 ). Si w = ya1 ya2 . . . yan , es decir, el resto de los sı́mbolos de y para cada ai < j < ai+1 son yj = ǫ, podemos quitar las ǫ-transiciones de (r0 , r1 , . . . , rm ) y obtener una computación aceptadora de M ′ con entrada w como sigue. Para cada ai < j < ai+1 , rj ∈ δ ′ (rai −1 , wi ). Además para cada j < a1 , rj ∈ E({r0 }) y para cada an < j, rj ∈ δ ′ (ran −1 , wn )). Sea la computación de M ′ con entrada w, (R0 , . . . , Rn ). Como Ri+1 = ′ δ (Ri , wi+1 ), entonces R0 = I = E({q0 }), q0 = r0 ∈ R0 . ra1 −1 ∈ E({q0 }) = R0 . Si rai+1 −1 ∈ Ri entonces rai+2 −1 ∈ E(δ(rai+1 −1 , wi+1 )) ⊆ Ri+1 . rm ∈ E(δ(ran −1 , wn )) ⊆ Rn . Luego rm ∈ Rn y rm ∈ F por lo que Rn ∈ F ′ . Por tanto (r0 , ra2 −1 , . . . , ran −1 , rm ) es una computación de M ′ con entrada w, y es aceptadora porque Rn ∈ F ′ . Luego w ∈ L(M ′ ). Sea w ∈ L(M ′ ). Si la computación aceptadora de M ′ con entrada w = w1 . . . wn es (R0S , . . . , Rn ) entonces Rn ∈ F ′ por lo que existe r1 ∈ Rn ∩ F . Como Rn = r∈Rn−1 E(δ(r, wn )), existe r2 ∈ Rn−1 tal que r1 ∈ E(δ(r2 , wn )). 1 Existen también estados q11 , . . . , qk11 tales que q11 ∈ δ(r2 , ǫ), qi+1 ∈ δ(qi1 , ǫ), 2 r1 ∈ δ(qk11 , ǫ). Ası́ que (r2 , q11 , . . . , qk11 , r1 ) es el final de una computación aceptadora en M . S De la misma forma, como Rn−1 = r∈Rn−2 E(δ(r, wn−1 )), existe r3 ∈ Rn−2 tal que r2 ∈ E(δ(r3 , wn−1 )). Existen también estados q12 , . . . , qk22 tales que q12 ∈ 2 δ(r3 , ǫ), qi+1 ∈ δ(qi2 , ǫ), r2 ∈ δ(qk22 , ǫ). Ası́ que (r3 , q12 , . . . , qk22 , r2 , q11 , . . . , qk11 , r1 ) es el final de una computación aceptadora en M . Continuamos obteniendo r4 , . . . , rn+1 tales que existe ri ∈ Rn−i+1 tal que i−1 r ∈ E(δ(ri , wn−i+2 )) que forman parte de una computación aceptadora en M. Como rn+1 ∈ R0 = I = E({q0 }), existen también estados q1n+1 , . . . , qkn+1 n+1 n+1 tales que q1n+1 = q0 , qi+1 , ǫ). ∈ δ(qin+1 , ǫ), rn+1 ∈ δ(qkn+1 n+1 De esta forma tenemos (q1n+1 , . . . , qkn+1 , rn+1 , q1n , . . . , qknn , rn , . . . , r3 , q12 , . . . , qk22 , r2 , q11 , . . . , qk11 , r1 ) n+1 una computación aceptadora de M con entrada w. Luego w ∈ L(M ). 2 3 2. Método para convertir un AFnD en un AFD equivalente 2.1. Si no tiene ǫ-transiciones Tenemos un AFnD M = (Q, Σ, δ, q0 , F ) sin ǫ-transiciones. Definimos un AFD M ′ = (Q′ , Σ, δ ′ , I, F ′ ) como sigue: Q′ = P(Q), es decir, cada estado de M ′ es un conjunto de estados de M . S δ ′ (R, a) = r∈R δ(r, a) para cada R ⊆ Q, para cada a ∈ Σ. F ′ = {R | R ∩ F 6= ∅ }. I = {q0 }. Intuitivamente, construimos δ ′ como sigue: 1. Construir una tabla con columnas una por cada a ∈ Σ. 2. En la primera fila escribir {q0 } y en la columna a escribir δ({q0 }, a), es decir, todos los estados a los que puedo llegar desde q0 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, Σ, δ, q0 , 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} Definimos un AFD M ′ = (Q′ , Σ, δ ′ , I, F ′ ) como sigue: Q′ = P(Q), es decir, cada estado de M ′ es un conjunto de estados de M . S δ ′ (R, a) = r∈R E(δ(r, a)) para cada R ⊆ Q, para cada a ∈ Σ. F ′ = {R | R ∩ F 6= ∅ }. I = E({q0 }). 4 Intuitivamente, construimos δ ′ como sigue: 1. Construir una tabla con columnas una por cada a ∈ Σ. 2. En la primera fila escribir E({q0 }) (es decir, todos los estados a los que puedo llegar desde q0 mediante (0 ó más) ǫ-transiciones) S 3. En la primera fila, en la columna a escribir r∈E({q0 }) E(δ(r, a)), es decir, todos los estados a los que puedo llegar desde E({q0 }) 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 S cada fila R pendiente, rellenar la fila R escribiendo en cada columna a, r∈R E(δ(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