You are on page 1of 9

Ejemplo para transformar un DFA en una Expresin Regular

En este texto vamos a ver uno de los mtodos que se usan para transformar autmatas finitos deterministas en expresiones regulares, el mtodo de eliminacin de estados. Cuando tenemos un autmata finito, determinista o no determinista, podemos considerar que los smbolos que componen a sus transiciones son expresiones regulares. Cuando eliminamos un estado, tenemos que reemplazar todos los caminos que pasaban a travs de l como transiciones directas que ahora se realizan con el ingreso de expresiones regulares, en vez de con smbolos. Los casos bases son los siguientes: 1) La concatenacin:

X W Y q1

q0

q2

q0

WX*Y

q1

2) La unin: V

q0

q1 q0 Y V+WX*Y q1

X W q2

3) El retorno:

V Y q2 q0 Y+VW*X

q0

Realmente, el retorno podra verse como un caso particular de la unin, 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 travs de q2 es VW*X.

Consejos finales antes de empezar con el ejemplo: A la hora de reducir un autmata, 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 autmata tenga ms de un estado inicial, se deben hacer tantas copias como estados de aceptacin tenga el autmata. En cada una de las copias, se debe elegir uno de los estados de aceptacin diferentes. Todos los dems estados de aceptacin de esta copia pasarn a ser estados ordinarios. Ahora se deben reducir todos los autmatas copias a expresiones regulares. La expresin regular final ser la unin de todas las expresiones regulares resultantes de cada una de las copias. Al reducir por completo a un autmata finito se llegar a uno de dos casos: 1) El estado de aceptacin es distinto al estado inicial

Y q1

q0

En este caso, la expresin final de este autmata viene dada por (W + XY*V)*XY* 2) El estado de aceptacin y el de inicio son el mismo

W q0

En este caso, la expresin final de este autmata viene dada por W* Supongamos que un autmata particular tuviese dos estados de aceptacin y los autmatas copias que terminara reduciendo sean estos dos ltimos que hemos mostrado hasta el momento. En este caso la expresion regular total del autmata vendra dada por W* + (W+XY*V)*XY*

Ahora veamos un ejemplo ms complejo para aplicar los conocimientos adquiridos. El autmata de ejemplo es el siguiente:

a,c

q1

a b c q4 a

q0

q3

b q2 c

Lo primero que se debe hacer es transformar todas aquellas transiciones que contemplan ms de un smbolo en expresiones regulares del tipo R+P. En este caso, la nica transicin que tenemos como objetivo es la de q0 a q1, que queda como a+c. Todas las dems permanecen iguales, por ser smbolos.

a+c

q1

a b c q4 a

q0

q3

b q2 c

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. q1 puede llegar a q3 pasando por q2.

Veamos cmo quedan las transiciones del DFA cuando eliminamos q2: 1) Para llegar a q3, q0 primero debe pasar por q2 usando el smbolo b, luego puede pasar repetidas veces por q2 (o ninguna vez) usando cero, uno o varios smbolos c y, por ltimo, pasa de q2 a q3 con el smbolo a. Esto queda expresado con la expresin regular T = bc*a 2) Para pasar de q1 a q3, primero debemos llegar a q2 con una c. Despus de esto, podemos volver repetidas veces a q2, usando el smbolo 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

a+c=U

q1

b q0 bc*a=T q3 a q4

Ahora, haciendo las simplificaciones correspondiente, slo dejamos las expresiones regulares resumidas por las letras maysculas (incluyendo a+c = U), y nos queda el autmata as:

S U q1 a

q0

b q3 a q4

Como siguiente paso, vamos a eliminar a q1. Las transiciones afectadas son: 1) De q0 a q3, que puede hacerlo a travs de q1 o directamente, usando T. La expresin regular que va de q0 a q3 a travs de q1 es US y la expresin que va directamente de q0 a q3 es T. Como puede ser una o la otra, como resultado queda la siguiente expresin: V = T + US 2) De q3 a q3, a travs de q1. Esto es: Primero llegamos a q1 con una a, y luego pasamos de q1 a q3, usando S. La expresin resultante es: W = aS

aS=W q0 T+US=V b q3 a q4 c

En el siguiente paso, eliminaremos q3. Las transiciones afectadas son: 1) De q0 a q4, pasando por q3: Primero vamos de q0 a q3 usando la expresin V. Luego vamos de q3 a q3 repetidas veces, usando W. Por ltimo, pasamos de q3 a q4 usando una a. La expresin 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 travs 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 travs de q3, la expresin regular que nos queda es: Y = (c + bW*a)

q0

VW*a=X

q4

(c+bW*a) = Y

Si dejamos las Expresiones Regulares de forma resumida, el ltimo autmata nos queda as:

q0

q4 Y

Completemos las transiciones vacas (de q4 a q1 y de q1 a q1) con las expresiones regulares vacas Z y P para obtener un autmata similar al que aparece en la pgina 2:

P= q0

Z=

q4 X Y

De esta forma, podemos generar la expresin regular final a partir de la frmula (P + XY*Z)*XY* Esta expresin es equivalente a decir que podemos ir de q0 una o muchas veces usando el camino corto P o el largo XY*Z. Cuando ya nos decidimos de pasar de q0 a q4, usamos X, y estando en q4 podemos hacer Y cero, una o varias veces.

Expresin Final = (P + XY*Z)*XY* = (* + XY*)* XY* = (+)*XY* = *XY* = XY*

Recordemos que las propiedades de las expresiones regulares nos dicen que la clausura del conjunto vaco nos entrega al conjunto con el string vaco: * = Y que la concatenacin con el espacio vaco nos produce al espacio vaco (el operador nulo de la concatenacin): R. =

Ahora imaginemos que tenemos un autmata muy parecido al del ejemplo anterior, pero que adicionalmente tiene al estado inicial q0 como estado de aceptacin y tambin tiene un tercer estado final ms: q5.

a,c

q1

c q4

q0

q3 a

q2 c

a d q5

La eliminacin de los estados procedera de manera muy similar, hasta llegar al siguiente autmata de expresiones regulares:

d X q0 Y Ahora procedemos a hacer las tres copias correspondientes para este autmata: X q0 q4 Y X q4 d q4 d q5

q5 d

q0

q5 d

Y d q0 X q4 Y d q5

Reduzcamos el primero de los tres autmatas:

X q0 q4 Y

q5 d

Como se puede apreciar, ninguno de los estados q4 y q5 nos llevan a algn estado de aceptacin, por lo que se pueden eliminar sin tener problemas.

P= q0

En este caso, el autmata hacepta la expresin regular P* = * = . Ntese que el lenguaje de este autmata no es el conjunto vaco , ya que el autmata es capaz de aceptar el string vaco . Reduzcamos ahora el segundo autmata:

q0

X q4

q5 d

En este caso, el estado que no nos llevan a ningn estado de aceptacin es el estado q5. Lo eliminamos:

q0

X q4

El autmata resultante es el mismo que el del ejemplo anterior, al igual que la expresin regular que genera: XY*

Reduzcamos el ltimo autmata:

d q0 X q4 Y Lo primero que hacemos es eliminar el estado q4, realizando una concatenacin de expresiones regulares: d q5

XY*d = Z q0 d q5

Ahora obtenemos la expresin regular final del ltimo autmata, la cual est dada por Zd* Lo ltimo que queda por hacer es unir las tres expresiones regulares de las tres copias del autmata: Expresin Final = + XY* + Zd*

DCC/2006.03.30

You might also like