teoría de aut´omatas y lenguajes formales

Anuncio
TEORÍA DE AUTÓMATAS Y LENGUAJES
FORMALES
Grado en Ingenierı́a Informática Online, Curso 2012-2013
Universidad Rey Juan Carlos
GUÍA PARA LA REALIZACIÓN DE LA HOJA DE PROBLEMAS No 3
(Tema 3: Expresiones Regulares)
EJERCICIOS 1 y 2
Se trata en ambos casos de describir mediante expresiones regulares lenguajes dados en
notación conjuntista. Estos ejercicios no tienen una solución única, puesto que pueden
obtenerse como resultado expresiones regulares distintas entre sı́ pero equivalentes. En los
apuntes del tema se han resuelto ejercicios similares. A continuación se discuten algunos
de los ejercicios de esta hoja más interesantes:
Ejercicio 1 (c). El conjunto dado está formado por todas las palabras w ∈ {0, 1}∗ tales
que n0 (w) MOD 2 6= 0, es decir, que contienen un número impar de ceros, o, lo que es lo
mismo, verifican n0 (w) MOD 2 = 1. Estas palabras pueden verse como la concatenación
de una palabra que contiene exactamente un cero (1∗ 01∗ ), seguida de cero o más palabras
conteniendo exactamente dos ceros (1∗ 01∗ 01∗ ): si no se pone ninguna de estas últimas se
obtiene una palabra final con 1 cero; si se pone una, se obtiene una palabra con 3 ceros; si
se ponen dos, la palabra final tendrá 5 ceros, etc. En definitiva, una solución al problema
puede ser la siguiente expresión regular:
1∗ 01∗ (1∗ 01∗ 01∗ )∗
Ejercicio 1 (e). Una opción para resolver este ejercicio es dividir el conjunto dado en la
unión de cuatro conjuntos (uno para cada posible valor de m, m ∈ 0 . . . 3), encontrar una
ER para cada uno de estos lenguajes y finalmente componer todas las ERs anteriores
mediante el operador “+”.
Ejercicio 1 (h). La condición na (w) MOD 5 6= 0 es equivalente a na (w) MOD 5 = i
para algún i ∈ {1, 2, 3, 4}, por lo que se tiene la siguiente igualdad:
L = ∪4i=1 {w ∈ {a, b}∗ | na (w) MOD 5 = i}.
Por ello, una posibilidad es encontrar ERs para cada uno de los cuatro lenguajes anteriores
y posteriormente unirlas mediante “+”. Estos lenguajes son similares al discutido en el
ejercicio 1(c): por ejemplo, si se denota r1 = b∗ ab∗ (palabras con exactamente una a)
y r5 = b∗ ab∗ ab∗ ab∗ ab∗ ab∗ (palabras con exactamente cinco a’s), resulta que la ER r1 r5∗
describe el lenguaje {w ∈ {a, b}∗ | na (w) MOD 5 = 1}.
Ejercicio 2 (b). El conjunto de cadenas que no contienen más de tres a’s se puede dividir
en cuatro subconjuntos, formados por las palabras que contienen exactamente cero, una,
dos o tres a’s.
Ejercicio 2 (c). Si se denota r = (a + b + c)∗ , la ER rarbrcr describe todas las cadenas
que contienen al menos una ocurrencia de cada sı́mbolo, pero obliga a que detrás del
1
último sı́mbolo a haya al menos un sı́mbolo b, y detrás de este al menos una c. Es decir,
faltarı́an palabras como por ejemplo acb, bac, etc. El problema es que el orden en el que
aparecen los sı́mbolos, a → b → c, no es más que una de las 3! = 6 posibles permutaciones
de los tres sı́mbolos, por lo que habrı́a que añadir ERs para los otros cinco casos.
Ejercicio 2 (d). Una opción es dividir el conjunto de palabras que no terminan en abab
en varios subconjuntos: el formado por la palabra vacı́a, el formado por todas las palabras
que terminan en a, el formado por todas las palabras que terminan en c, el formado por
todas las palabras que terminan en bb, el formado por todas las palabras que terminan en
cb, lo mismo para la terminación aab, etc. No olvide que las palabras b, ab y bab también
pertenecen al lenguaje.
EJERCICIOS 3 y 4
Estos ejercicios tratan el problema inverso: dada una ER, encontrar el lenguaje que
describe. La solución en este caso es única.
EJERCICIOS 5 - 13
Se trata en todos los casos de aplicar el algoritmo [AFND ⇒ ER] de los apuntes, basado
en el método de las ecuaciones caracterı́sticas.
EJERCICIO 14 y 15
Para resolver estos problemas hay que realizar los siguientes pasos:
1. Obtener un AFND equivalente a la ER dada aplicando el algoritmo [ER ⇒ AFND].
2. Obtener un AFD equivalente al AFND obtenido en el paso anterior aplicando el
algoritmo [AFND ⇒ AFD] (tema 2.3).
3. Como el algoritmo [AFND ⇒ AFD] no garantiza que el AFD obtenido sea mı́nimo,
a continuación habrá que aplicar el algoritmo de minimización (tema 2.1.) al AFD
obtenido en el paso anterior.
Como ya se ha explicado en el tema anterior, por comodidad en la aplicación del algoritmo
de minimización, se podrá hacer un renombramiento de estados tras el algoritmo [AFND
⇒ AFD].
EJERCICIOS 16-19
Para resolver estos ejercicios hay que realizar los siguientes pasos:
1. Transformar los elementos dados en sus AFDs mı́nimos equivalentes, para lo cual
habrá que:
a) Aplicar los algoritmos adecuados a cada uno de los elementos de partida para
obtener un AFD equivalente:
Algoritmo [AFND ⇒ AFD] en el caso de los AFNDs.
Algoritmos ([GLD ⇒ AFND] + [AFND ⇒ AFD]) en el caso de las GLDs.
Algoritmos ([ER ⇒ AFND] + [AFND ⇒ AFD]) en el caso de las ERs.
2
b) Minimizar el AFD obtenido en el paso anterior (previo renombramiento de sus
estados) aplicando el algoritmo de minimización de AFDs del tema 2.1.
2. Los AFNDs/GLDs/ERs de partida son equivalentes (es decir, describen el mismo
lenguaje) si y sólo si los AFDs mı́nimos obtenidos en el paso anterior son isomorfos
(es decir, iguales salvo en el nombre de los estados).
A continuación se detalla la resolución del ejercicio 17:
Obtención del AFD mı́nimo equivalente al AFND A dado en el enunciado.
Como podemos observar, el autómata proporcionado es un autómata finito no determinista, por lo tanto, para minimizarlo, en primer lugar deberemos hallar un
autómata finito determinista equivalente. Para ello, se aplica el algoritmo [AFND
⇒ AFD], partiendo de f ∗ (p, λ) = {p, v, w}, que será el estado inicial de nuestro
nuevo autómata. Después, procederemos con el algoritmo, descubriendo los estados
a los que vamos transitando con cada uno de los sı́mbolos del alfabeto de entrada,
obteniendo finalmente el siguiente AFD:
fF D
→{p,v,w}
*{p,r,t,v,w}
{q,u}
{q}
*{p,s,v,w}
0
{p,r,t,v,w}
{p,r,t,v,w}
{q}
{q}
{p,r,t,v,w}
1
{q,u}
{q,u}
{p,s,v,w}
{p,s,v,w}
{q,u}
Después, renombraremos los estados para trabajar más cómodamente con ellos, de
forma que obtenemos el siguiente autómata finito determinista equivalente:
AF D = ({A, B, C, D, E}, {0, 1}, fF D, A, {B, E})
fF D 0 1
→A B C
*B B C
C D E
D D E
*E B C
Posteriormente, minimizaremos el autómata para obtener el finito determinista
mı́nimo (y único) que reconoce ese lenguaje. En primer lugar, eliminaremos los
estados inaccesibles que tenga (ninguno en este caso). En segundo lugar, hallaremos
el conjunto de clases de equivalencia de estados.
Q/E0 = {{B, E}, {A, C, D}}
Q/E1 = {{B, E}, {A}, {C, D}}
3
Q/E2 = {{B, E}, {A} , {C, D}} = Q/E1 = Q/E
| {z } |{z} | {z }
B
A
C
Los estados B, E resultan ser equivalentes, al igual que los estados C, D. Por lo tanto, de cada uno de los conjuntos de estados equivalentes tomamos un representante:
tomaremos B como representante de la clase de equivalencia {B, E}, tomaremos A
como representante de la clase de equivalencia {A} y tomaremos C como representante de la clase de equivalencia {C, D}. De esta manera, reescribiendo la tabla de
transiciones en función de los representantes elegidos, obtenemos el autómata finito
determinista mı́nimo equivalente al autómata no determinista que nos señalan en
el enunciado:
AF Dmin = ({A, B, C}, {0, 1}, fF Dmin, A, {B})
fF Dmin 0 1
→A B C
*B B C
C C B
Obtención del AFD mı́nimo equivalente a la ER E dada en el enunciado.
Como podemos observar al analizar la expresión regular, las palabras definidas por
(1(00)∗01) (palabras que empiezan y terminan con un uno y tienen entre medias
un número impar de ceros) son un subconjunto de las definidas por (0 + 10∗ 1)∗ (0 +
10∗ 1), ya que la expresión anterior incluye, en particular, a las palabras 10∗ 1, es
decir, palabra que empiezan y terminan con un uno y tienen entre medias cualquier
número de ceros. Por ello, la segunda parte de la expresión no aporta nada, es decir,
la expresión dada es equivalente a ((0 + 10∗ 1)∗ (0 + 10∗ 1)). Para obtener un AFND
equivalente a la expresión anterior se debe aplicar el algoritmo [ER ⇒ AFND].
Teniendo en cuenta que muchas de las transiciones λ impuestas por el algoritmo
son en este caso concreto innecesarias, el AFND obtenido tras aplicar el algoritmo
resulta equivalente al siguiente:
λ
0
p
1
q
1
r
0
Aer = ({p, q, r}, {0, 1}, fer , p, {q})
0
fer
→p {q}
*q
r {r}
4
1
{r}
λ
{p}
{q}
El siguiente paso es hallar un autómata finito determinista equivalente para poder
minimizarlo. Por lo tanto, aplicaremos el mismo algoritmo que hemos visto anteriormente, [AFND ⇒ AFD], esta vez partiendo de f ∗ (p, λ) = {p}. El AFD resultante
es el siguiente:
ferf d
0
→{p} {p,q}
*{p,q} {p,q}
{r} {r}
1
{r}
{r}
{p,q}
Lo renombraremos para trabajar más cómodamente:
Aerf d = ({P, Q, R}, {0, 1}, ferf d, P, {Q})
ferf d 0
→P Q
*Q Q
R R
1
R
R
Q
Ahora, intentaremos minimizar el autómata. Primero, eliminaremos los estados
inaccesibles que tenga (ninguno en este caso). Después, hallaremos el conjunto de
clases de equivalencia de estados:
Q/E0 = {{Q}, {P, R}}
Q/E1 = {{Q}, {P }, {R}}
Q/E2 = {{Q}, {P }, {R}} = Q/E1 = Q/E
Visto el resultado, determinamos que el autómata analizado ya era mı́nimo. Por lo
tanto, procederemos a comparar ambos autómatas finitos mı́nimos.
fF Dmin 0 1
→A B C
*B B C
C C B
ferf d 0 1
→P Q R
*Q Q R
R R Q
Comparación de los AFDs mı́nimos obtenidos en los pasos anteriores.
Como podemos comprobar, los autómatas AF Dmin y Aerf d son isomorfos (iguales
salvo en lo que respecta al nombre de los estados), por lo tanto, queda demostrado
que ambos elementos generan el mismo lenguaje.
5
Descargar