Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Transformar Dfa en Er
Transformar Dfa en Er
Cuando tenemos un autómata finito, determinista o no determinista, podemos considerar que los
símbolos que componen a sus transiciones son expresiones regulares. Cuando eliminamos un
estado, tenemos que reemplazar todos los caminos que pasaban a través de él como transiciones
directas que ahora se realizan con el ingreso de expresiones regulares, en vez de con símbolos.
1) La concatenación:
W Y
q0 q2 q1 WX*Y
q0 q1
2) La unión:
V
q0 q1
V+WX*Y
X q0 q1
W
Y
q2
3) El retorno:
W V
Y
Y+VW*X
q2 q0
q0
X
Realmente, el retorno podría verse como un caso particular de la unión, en donde q0 y q1 son el
mismo estado. De esta forma, el camino que va directo desde q0 a q0 es “Y” y el que va desde
q0 a q0 a través de q2 es “VW*X”.
Consejos finales antes de empezar con el ejemplo:
A la hora de reducir un autómata, se recomienda partir eliminando primero todos los estados que no
sean ni el de inicial ni los finales.
Cuando se eliminen todos estos estados y el autómata tenga más de un estado inicial, se deben hacer
tantas copias como estados de aceptación tenga el autómata. En cada una de las copias, se debe elegir
uno de los estados de aceptación diferentes. Todos los demás estados de aceptación de esta copia
pasarán a ser estados ordinarios. Ahora se deben reducir todos los autómatas copias a expresiones
regulares. La expresión regular final será la unión de todas las expresiones regulares resultantes de
cada una de las copias.
W V
Y
q0 q1
X
En este caso, la expresión final de este autómata viene dada por (W + XY*V)*XY*
q0
Supongamos que un autómata particular tuviese dos estados de aceptación y los autómatas copias que
terminaría reduciendo sean estos dos últimos que hemos mostrado hasta el momento. En este caso la
expresion regular total del autómata vendría dada por W* + (W+XY*V)*XY*
Ahora veamos un ejemplo más complejo para aplicar los conocimientos adquiridos. El autómata
de ejemplo es el siguiente:
q1
a,c a
b
c
c q4
q0 q3
b a
q2
Lo primero que se debe hacer es transformar todas aquellas transiciones que contemplan más
de un símbolo en expresiones regulares del tipo “R+P”. En este caso, la única transición que
tenemos como objetivo es la de q0 a q1, que queda como “a+c”. Todas las demás permanecen
iguales, por ser símbolos.
q1
a+c a
b
c
c q4
q0 q3
b a
q2
Ahora procedemos a eliminar el estado q2. Tenemos que fijarnos en todos los caminos que atraviezan a q2:
●q0 puede llegar a q3 pasando por q2.
1) Para llegar a q3, q0 primero debe pasar por q2 usando el símbolo “b”, luego puede pasar repetidas
veces por q2 (o ninguna vez) usando cero, uno o varios símbolos “c” y, por último, pasa de q2 a q3
con el símbolo “a”. Esto queda expresado con la expresión regular
T = bc*a
2) Para pasar de q1 a q3, primero debemos llegar a q2 con una “c”. Después de esto, podemos volver
repetidas veces a q2, usando el símbolo “c”. Podemos pasar cero, una o muchas veces por q2 de
esta forma. Ahora, como último paso, debemos llegar desde q2 a q3 con una “a”. Al concatenar estos
tres caminos obtenemos:
S = cc*a
cc*a=S
q1 a
a+c=U
b c
q0 q3 q4
bc*a=T
a
Ahora, haciendo las simplificaciones correspondiente, sólo dejamos las expresiones regulares resumidas
por las letras mayúsculas (incluyendo a+c = U), y nos queda el autómata así:
q1 a
U
b c
T
q0 q3 q4
a
Como siguiente paso, vamos a eliminar a q1. Las transiciones afectadas son:
1) De q0 a q3, que puede hacerlo a través de q1 o directamente, usando T. La expresión regular que
va de q0 a q3 a través de q1 es US y la expresión que va directamente de q0 a q3 es T. Como puede
ser una o la otra, como resultado queda la siguiente expresión:
V = T + US
2) De q3 a q3, a través de q1. Esto es: Primero llegamos a q1 con una “a”, y luego pasamos de q1 a
q3, usando S. La expresión resultante es:
W = aS
aS=W
b c
T+US=V
q0 q3 q4
1) De q0 a q4, pasando por q3: Primero vamos de q0 a q3 usando la expresión V. Luego vamos
de q3 a q3 repetidas veces, usando W. Por último, pasamos de q3 a q4 usando una “a”. La
expresión regular queda como sigue:
X = V.W*.a
2) De q4 a q4, pasando por q3 o directamente por q4 con una “c”. Para pasar a través de q3,
primero vamos de q4 a q3 con una “b”. Luego vamos de q3 a q3 usando W. Y, por último,
pasamos de q3 a q4 con una “a”. Como podemos ir desde q4 a q4 tanto usando la “c” como a
través de q3, la expresión regular que nos queda es:
Y = (c + bW*a)
VW*a=X
q0 q4
(c+bW*a) = Y
Si dejamos las Expresiones Regulares de forma
resumida, el último autómata nos queda así:
X
q0 q4
Z=Ø
P=Ø
q0 q4
X
Y
a,c q1 a
b
c
c q4
q0 q3
a
d
b q2 a
q5
c d
La eliminación de los estados procedería de manera muy similar, hasta llegar al siguiente autómata de
expresiones regulares:
d
X d
q0 q4 q5
Ahora procedemos a hacer las tres copias correspondientes para este autómata:
X d
q0 q4 q5
d
Y
X d
q0 q4 q5
d
Y
d
X d
q0 q4 q5
Y
Reduzcamos el primero de los tres autómatas:
X d
q0 q4 q5
d
Y
Como se puede apreciar, ninguno de los estados q4 y q5 nos llevan a algún estado de aceptación, por lo
que se pueden eliminar sin tener problemas.
P=Ø
q0
En este caso, el autómata hacepta la expresión regular P* = Ø* = ε. Nótese que el lenguaje de este
autómata no es el conjunto vacío Ø, ya que el autómata es capaz de aceptar el string vacío ε.
Reduzcamos ahora el segundo autómata:
X d
q0 q4 q5
d
Y
En este caso, el estado que no nos llevan a ningún estado de aceptación es el estado q5. Lo eliminamos:
X
q0 q4
El autómata resultante es el mismo que el del ejemplo anterior, al igual que la expresión regular que
genera: XY*
Reduzcamos el último autómata:
d
X d
q0 q4 q5
Lo primero que hacemos es eliminar el estado q4, realizando una concatenación de expresiones
regulares:
XY*d = Z
q0 q5
Ahora obtenemos la expresión regular final del último autómata, la cual está dada por Zd*
Lo último que queda por hacer es unir las tres expresiones regulares de las tres copias del
autómata:
DCC/2006.03.30