161
De todo un poco... / generar un autómata a partir de una gramática
« en: 16 de Enero 2014, 09:43 »
PREGUNTA: Dada la siguiente gramática regular no determinista, donde A es su símbolo inicial:
A -- > xA
A -- > yA
A -- > xB
B -- > xA
B -- > yA
B -- > xB
B -- > xC
C -- > yD
C -- > xB
D -- > λ
D -- > xB
D -- > yA
Podemos construir un autómata finito determinista con solo 2 estados que reconozca el mismo lenguaje.
a) Verdadero.
b) Falso.
RESPUESTA:
Tenemos que prestar atención al enunciado:
a) Nos dice que es una gramática regular no determinista con símbolo inicial A
b) Nos pregunta si podemos construir un autómata finito determinista que reconozca el mismo lenguaje
Por tanto no nos pide ni siquiera transformar la gramática en un autómata, sino ver si podemos construir un autómata que reconozca el mismo lenguaje.
Lo primero que haremos será reflexionar sobre el lenguaje y las cadenas que genera el lenguaje.
Si transformamos la gramática en autómata finito no determinista obtenemos esto:
Este autómata finito es indeterminista, pero sabemos que un AFN se puede transformar en un AFD. Ahora trataremos de encontrar algunas de las cadenas aceptadas por el autómata:
xxy: es la cadena más corta que acepta, podríamos representarla con un AFD de dos estados, uno inicial que acepta indefinidamente x y otro final al que se llega con una y. Sin embargo, aparte de ser la cadena más corta que acepta es la secuencia final obligatoria para llegar a aceptación y se permiten expresiones del tipo x(intercarlar x´s e y´s)xxy. Si usamos un estado inicial que acepta indefinidamente x´s e y´s que nos lleve a aceptación con una y, no podemos asegurar que el final será xxy. Para asegurar este final, con un AFD necesitaremos más de dos estados.
Respondemos entonces b) Falso.
Otro razonamiento: cuando se pasa de AFD a AFN se definen nuevos estados a partir del conjunto potencia de los estados del AFN. En el paso de AFD a AFN nos podemos encontrar:
a) Caso peor: se generan 2n estados en el AFD
b) Caso mejor: se mantienen los n estados del AFN
Por tanto el AFD no tendrá menos de 4 estados y respondemos la opción b) Falso.
Aunque con lo dicho ya no es necesario, vamos a construir el AFD usando la técnica de subconjuntos a modo de ejercicio. Para ello partimos del estado inicial y vamos representando los conjuntos de estados alcanzables (y las transiciones desde cada uno de ellos) mediante cierres ε. En este caso como no tenemos transiciones ε simplemente tenemos que fijarnos en los estados alcanzables directamente en base al símbolo leído.
Nos queda este autómata:
En este caso estamos en el caso “mejor”: no se ha incrementeado el número de estados respecto del AFN.
A -- > xA
A -- > yA
A -- > xB
B -- > xA
B -- > yA
B -- > xB
B -- > xC
C -- > yD
C -- > xB
D -- > λ
D -- > xB
D -- > yA
Podemos construir un autómata finito determinista con solo 2 estados que reconozca el mismo lenguaje.
a) Verdadero.
b) Falso.
RESPUESTA:
Tenemos que prestar atención al enunciado:
a) Nos dice que es una gramática regular no determinista con símbolo inicial A
b) Nos pregunta si podemos construir un autómata finito determinista que reconozca el mismo lenguaje
Por tanto no nos pide ni siquiera transformar la gramática en un autómata, sino ver si podemos construir un autómata que reconozca el mismo lenguaje.
Lo primero que haremos será reflexionar sobre el lenguaje y las cadenas que genera el lenguaje.
Si transformamos la gramática en autómata finito no determinista obtenemos esto:
Este autómata finito es indeterminista, pero sabemos que un AFN se puede transformar en un AFD. Ahora trataremos de encontrar algunas de las cadenas aceptadas por el autómata:
xxy: es la cadena más corta que acepta, podríamos representarla con un AFD de dos estados, uno inicial que acepta indefinidamente x y otro final al que se llega con una y. Sin embargo, aparte de ser la cadena más corta que acepta es la secuencia final obligatoria para llegar a aceptación y se permiten expresiones del tipo x(intercarlar x´s e y´s)xxy. Si usamos un estado inicial que acepta indefinidamente x´s e y´s que nos lleve a aceptación con una y, no podemos asegurar que el final será xxy. Para asegurar este final, con un AFD necesitaremos más de dos estados.
Respondemos entonces b) Falso.
Otro razonamiento: cuando se pasa de AFD a AFN se definen nuevos estados a partir del conjunto potencia de los estados del AFN. En el paso de AFD a AFN nos podemos encontrar:
a) Caso peor: se generan 2n estados en el AFD
b) Caso mejor: se mantienen los n estados del AFN
Por tanto el AFD no tendrá menos de 4 estados y respondemos la opción b) Falso.
Aunque con lo dicho ya no es necesario, vamos a construir el AFD usando la técnica de subconjuntos a modo de ejercicio. Para ello partimos del estado inicial y vamos representando los conjuntos de estados alcanzables (y las transiciones desde cada uno de ellos) mediante cierres ε. En este caso como no tenemos transiciones ε simplemente tenemos que fijarnos en los estados alcanzables directamente en base al símbolo leído.
Estado | x | y | Observaciones | |
{A} | {A, B} | {A} | Estado inicial | |
{A, B} | {A, B, C} | {A} | ||
{A, B, C} | {A, B, C} | {A,D} | ||
{A, D} | {A, B} | {A} | De aceptación |
Nos queda este autómata:
En este caso estamos en el caso “mejor”: no se ha incrementeado el número de estados respecto del AFN.