Está en la página 1de 8

TEORA DE AUTMATAS Y LENGUAJES FORMALES Prctica 3

1. Equivalencia entre autmatas 1.1. Equivalencia entre AFD y AFN 1.1. Equivalencia entre AFD y AF 2. Ejercicios propuestos

1. Equivalencia entre autmatas 1.1 Equivalencia entre AFD y AFN


La equivalencia entre AFD y AFN es clara entendiendo todo AFD como un caso particular de un AFN. En el otro sentido, a partir un AFN A=(Q,, ,q0,F) se puede

construir otro AFD A'=(Q',, ', q0', F') equivalente (que acepte el mismo lenguaje), de la siguiente forma:

Q' = 2Q q0' = {q0} '(q',a) =

F' = { q' Q' | q' F }

(q q')(q,a) : q' Q, a

Figura 1. Autmata finito no determinista del ejemplo 1. Ejemplo 1. Dado el autmata de la figura 1, el proceso de construccin de un AFD equivalente parte del estado inicial {q0}, y determina el conjunto de estados alcanzables

con cada smbolo del alfabeto. De esta forma, por ejemplo, al considerar el smbolo a se alcanzan los estados {q0, q1, q2}. Cada uno de los conjuntos de estados que aparezcan se considera como uno de los estados del AFD equivalente, determinandose para cada uno de ellos su funcin de transicin. El proceso se repite mientras aparezcan nuevos estados. La figura 2 muestra la tabla de transiciones del AFD.
a b c {q0,q1,q2} {q1,q2} {q2} {q0} {q0,q1,q2} {q0,q1,q2} {q1,q2} {q2} {q1,q2} {q2} {q1,q2} {q2} {q2}

Figura 2. Tabla de transiciones del AFD equivalente al AFN de la figura 1 a partir de esta tabla el diagrama de transiciones queda como muestra la figura 3.

Figura 3. Autmata finito determinista equivalente. Ejemplo 2. Dado el AFN de la figura 4 la tabla de transiciones del AFD equivalente sera la mostrada en la figura 5, con lo que el diagrama de transiciones del AFD quedaria como se muestra en la figura 6

Figura 4. AFN ejemplo.


a {q0} {q0} b {q0,q1} {q0,q1,q2}

{q0} {q0,q1}

{q0,q1,q2} {q0,q1,q2} {q0,q1,q2}

Figura 5. Tabla de transiciones del AFD equivalente al AFN de la figura 4.

Figura 6. AFD equivalente al AFN de la figura. El estado {q0,q1,q2} es el nico estado final del AFD porque es el nico que contiene el estado q2, estado final del AFN original.

1.2 Equivalencia entre AFD y AF


A partir de todo autmata finito no determinista con -transiciones A=(Q,, ,q0,F), se puede construir un AFD equivalente. Para ello seguiremos los siguientes pasos: 1. Obtener un AFN A'=(Q,,', q0, F') donde:

F' = F, si -clausura(q0) F = .

F' = F {q0}, si -clausura(q0) F '(q,a) = (q,a) tomando a , x *, q Q y donde: (q,) = -clausura(q)

(q,xa) = -clausura

( (p (q,x)) (p,a))

de esta forma A' no posee -transiciones. 2. A partir del AFN obtenido, aplicar el mtodo de la seccin 1.1 para obtener un AFD a partir de un AFN.

Figura 7. Ejemplo de autmata finito con transiciones vacias Ejemplo 3. Dado el AF de la figura 7, representamos en la figura 8 su tabla de transiciones y la -clausura de cada estado.
a q0 b {q2} clausura {q0,q1}

{q0,q1} q1 {q1} {q3} q2 {q1} {q2,q3} {q0,q1,q2} q3 {q0,q1,q3}

Figura 8. Tabla de transiciones y -clausura de cada estado del AF de la figura 7. Para obtener el conjunto de transiciones del AFN equivalente aplicaremos la construccin indicada al principio de la seccin. Por ejemplo, para obtener el conjunto de

transiciones del estado q0 con el smbolo b en el AFN equivalente:


partiremos de la -clausura de q0 ({q0,q1}) obtendremos los estados que se alcanzan a partir de {q0,q1} utilizando una b ({q2}

{q3})

obtendremos la -clausura de este conjunto: -clausura({q2,q3}) = {q0,q1,q2} {q0,q1,q3} = {q0,q1, q2, q3}

Procediendo de igual forma para todo q Q y todo a , obtenemos la tabla de transiciones del AFN sin transiciones vacias que se muestra en la figura 9. En este AFN, el nico estado final es q3 porque -clausura(q0) F = . Una vez obtenida la tabla de transiciones del AFN, se puede construir el AFD equivalente que queda como muestra la figura 10.
a b q0 {q0,q1} {q0,q1,q2,q3} q1 {q0,q1} {q0,q1,q2,q3} q2 {q0,q1} {q0,q1,q2,q3} q3 {q0,q1} {q0,q1,q2,q3}

Figura 9. Tabla de transiciones del AFN equivalente al AF de la figura 7.

Figura 10. Autmata finito determinista equivalente al AF de la figura 7. Ejemplo 4. Otro ejemplo de AF es el mostrado en la figura 11.

Figura 11. Autmata finito con transiciones vacas. La tabla de transiciones y la -clausura de cada estado del autmata de la figura 11 se muestran en la figura 12.
clausura {q1} {q0,q2,q3} {q1} {q3} 0 1 {q2} {q3}

q0 q1

q2 {q0} {q3} q3 {q3}

Figura 12. Tabla de transiciones y -clausura de cada estado en el AF de la figura 11. Como ejemplo del paso a AFN, para obtener el conjunto de transiciones del estado q1 con el smbolo a:

partiremos de la -clausura de q1 ({q1}) obtendremos los estados que se alcanzan a partir de {q1} utilizando una a (conjunto vacio) -clausura() =

F . Al repetir el proceso para cada estado se obtiene la tabla de transiciones de la figura 13. A partir de ella, se puede obtener el AFD de la figura 14.
0 1 q0 {q0,q1,q2,q3} {q3} {q3} q1 q2 {q0,q2,q3} {q3} {q3} q3

El AFN resultado tiene como estados finales {q0, q3} porque en este caso -clausura(q0)

Figura 13. Tabla de transiciones del AFN equivalente al AF de la figura 11

Figura 14.Autmata finito determinista equivalente al AF de la figura 11

2. Ejercicios propuestos
Ejercicio 1. Disear un mdulo en Mathematica que reciba un AFN y devuelva un AFD equivalente al introducido.

Ejercicio 2. Disear un mdulo en Mathematica para calcular la -clausura de un estado de un autmata. Ejercicio 3. Sirvindose del ejercicio 2, disear un mdulo para calcular la -clausura de un conjunto de estados. Ejercicio 4. Disear un mdulo en Mathematica que reciba un AF y devuelva un AFD equivalente al introducido.
Solucin al ejercicio 2

(* lambda clausura de un estado *) lc[q_,A_]:=Module[{xrevisar,lclausura,est,trans}, (* inicializacion *) lclausura={q}; xrevisar={q}; (* mientras queden estados por comprobar... *) While[xrevisar =!={}, (* ... considerar el primero de ellos ... *) est=First[xrevisar]; xrevisar=Rest[xrevisar]; (* ... y las transiciones vacias que parten de l *) trans=Cases[A[[3]],{est,{},_}]; (* Para todas ellas ... *) For[i=1,i<=Length[trans],i++, (* ... si se alcanza un nuevo estado ... *) If[!MemberQ[lclausura,trans[[i,3]]], (* ... se almacena para considerarlo *) AppendTo[lclausura,trans[[i,3]]]; AppendTo[xrevisar,trans[[i,3]]] ] ] ]; Return[Union[lclausura]]; ]

También podría gustarte