Equivalencia de AFnD y AFD

Anuncio
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
Descargar