Académique Documents
Professionnel Documents
Culture Documents
s
_
HLCR / 0
c
c
_
LRHC
h
h
_
HLRC
r
_
RHLC
_
LHCR
c
`
c
c
`
c
_
HCRL
_
HLCR
l
_
CHLR
h
_
HCLR
c
_
/ 0HLCR
_
Figura 1: Diagrama de transicin para el problema del hombre, el lobo, la cabra y el repollo.
El problema se modela observando que la informacin pertinente es la de quien ocupa cada ribera
del ro despus de un cruce, esos sern los posibles estados, 16 en total. Un estado se denotar, por
ejemplo, LRHC que signicar que en la ribera izquierda estn el lobo y el repollo y en la ribera
derecha estn el hombre y la cabra. Algunos de los 16 estados posibles, tal como HLCR, son fatales
y por lo tanto nunca debemos entrar" a ellos.
Los inputs" del sistema son las acciones que el hombre toma. l puede cruzar slo (input h), con
el lobo (input l), con la cabra (input c) o con el repollo (input r). El estado inicial es HLCR / 0 y el
nal es / 0HLCR. El diagrama de transicin (de todos los estados posibles no fatales y sus inputs) se
muestra en la Fig. 1.
4
Hay dos soluciones cortas a este problema, tal como se deduce del grco: son caminos que salen
del estado inicial (el crculo marcado con una echa) y llegan al estado nal (en doble crculo). Hay
tambin un nmero innito de soluciones, que, excepto las dos cortas tienen ciclos intiles. Dado
un sistema de estados nitos podemos denir el siguiente lenguaje: el conjunto de todas las cadenas
de inputs que llevan del estado inicial al estado nal. Por ejemplo chlcrhc, chrclhc, chhhlcrhc son
cadenas de este lenguaje (las dos primeras corresponden a las soluciones cortas).
Finalmente debemos observar que este ejemplo tiene dos caractersticas particulares que en gen-
eral los sistemas de estados nitos no tienen. La primera es que hay un solo estado nal, cosa que en
general no ocurre y la segunda es que por cada transicin hay una transicin inversa.
2.3 Autmatas nitos
Denicin 2.1. Un autmata nito determinstico (DFA) es una 5-upla (Q, , , q
0
, F) que consiste de
1. un conjunto nito Q =q
1
, q
2
, . . . , q
m
de estados,
2. un conjunto nito =a
1
, a
2
, . . . , a
n
de smbolos de entrada o input,
3. un conjunto de reglas de transicin que transforma un estado con un input dado en otro estado,
independientemente de lo que haya sucedido en las lecturas anteriores. Formalmente las reglas
de transicin se denen con una funcin : Q Q.
4. Adems habr un estado inicial q
0
y un conjunto de estados F, que llamaremos estados nales.
Muchas veces representaremos las reglas de transicin por una tabla a doble entrada: buscando el
cruce entre la entrada de un estado y la entrada de un input sabemos como cambia el estado.
Ejemplo 2.4. Sea M un autmata nito determinstico con estados q
0
, q
1
, q
2
, smbolos de entrada
= a, b y las siguientes reglas de transicin: el estado q
0
se transforma en q
1
si el input es a y en
q
0
si el input es b; el estado q
1
se transforma en q
1
si el input es a y en q
2
si el input es b; nalmente,
el estado q
2
se transforma en q
2
si el input es a y en q
0
si el input es b. Es decir : Q Q est
denida por:
(q
0
, a) = q
1
, (q
0
, b) = q
0
(q
1
, a) = q
1
, (q
1
, b) = q
2
(q
2
, a) = q
2
, (q
2
, b) = q
0
que puede ser representada (en forma ms compacta) con la siguiente tabla.
a b
q
0
q
1
q
0
q
1
q
1
q
2
q
2
q
2
q
0
Hablando en forma estricta el Ejemplo 2.3 no es un autmata en el sentido de la Denicin 2.1
pues hay estados que no aceptan ciertos inputs. Sin embargo, en la seccin siguiente extenderemos el
concepto de autmata, con lo cual este tipo de situaciones ser admisible.
Ejemplo 2.5. En el Ejemplo 2.3 los estados son:
HCLR, LRHC, etc.
el estado inicial es HCLR y el estado nal es HCLR. los smbolos de input son h, c, l, r y las
reglas de transicin son: HCLR con input c va a LRHC, etc.
5
Como se observa en los Ejemplos 2.3 y 2.5 hay una relacin estrecha entre un autmata nito
determinstico y grafos". A cada autmata nito determinstico se le puede asignar un dibujo, que
llamaremos grafo, de la siguiente manera: a cada estado le corresponde un crculo con el nombre
del estado dentro, el estado inicial est distinguido con una echa apuntando al crculo y los estados
nales se dibujan con doble crculo. En lo sucesivo llamaremos a estos crculos y doble crculos
nodos. Si hay una transicin del estado q al estado p con input a, entonces se dibuja una echa que va
del nodo correspondiente a q al nodo correspondiente a p, adems a esta echa le ponemos la etiqueta
a. A este tipo de grafo lo llamaremos un diagrama de transicin.
Es claro adems, que si tenemos un diagrama de transicin hay un autmata nito asociado a l;
y por lo tanto en el futuro no distinguiremos autmatas nitos y diagramas de transicin.
Ejemplo 2.6. Sea M un autmata con estados q
0
, q
1
, q
2
, q
3
, smbolos de input 0, 1, estado inicial
q
0
y estado nal q
0
tambin. Las reglas de transicin estn dadas por la Tabla 1.
0 1
q
0
q
2
q
1
q
1
q
3
q
0
q
2
q
0
q
3
q
3
q
1
q
2
Tabla 1:
El diagrama de transicin de M ser el dado por la Fig. 2
`
_
`
_
q
0
1
`
_
q
1
0
`
0
0
`
0
`
_
q
2
1
`
_
q
3
Figura 2:
Ejemplo 2.7. El siguiente autmata sirve para modelar el mecanismo de control de un ascensor au-
tomtico, en este caso de un edicio con pisos 0, 1 y 2.
Un estado debe describir el piso en que se encuentra el ascensor (piso 0, 1 o 2) , si est detenido (p)
o va hacia arriba (u) o abajo (d), y las demandas no satisfechas. Por ejemplo podramos representar
el estado: el ascensor est en el piso 1, va hacia arriba y debe ir al piso 0, por la upla (1, u,V, F, F),
las ltimas tres componentes de la upla denotan los tres pisos posibles, una V denota que debe ir a ese
piso, mientras que F denota que no debe ir. Los posibles inputs son los llamados que hace la gente
a ciertos pisos (no es necesario distinguir si el llamado se hace desde dentro del ascensor o desde un
piso) por lo tanto los inputs posibles son 0, 1 y 2. Adems hay otro input que no viene dado por los
usuarios si no por el movimiento del ascensor: cuando, por ejemplo, el ascensor tiene el piso 1 como
6
demanda insatisfecha y llega a este piso, entonces la demanda deja de ser insatisfecha. Denotemos este
input con m. Notemos que hay ciertos estados que no son posibles, como por ejemplo (1, u, F,V, F),
pues si estamos en cierto piso no tiene sentido pedir que vaya al mismo piso. Tampoco tienen sentido,
por ejemplo, (1, u, F, F, F) o (1, u,V, F, F), pues si no hay demandas insatisfechas arriba del piso en
que est el ascensor, este no puede ir hacia arriba. Otro caso no admisible es un estado en que el
ascensor est detenido y hay demandas insatisfechas, pues si el ascensor est detenido y entra una
demanda, el ascensor comienza a moverse en el sentido de la demanda. Los estados nales sern
aquellos en que el ascensor est detenido. Consideremos que el estado inicial es (0, p, F, F, F). La
Tabla 2 da los posibles cambios de estados.
0 1 2 m
(0, p, F, F, F) (0, p, F, F, F) (0, u, F,V, F) (0, u, F, F,V) (0, p, F, F, F)
(0, u, F,V, F) (0, u, F,V, F) (0, u, F,V, F) (0, u, F,V,V) (1, p, F, F, F)
(0, u, F, F,V) (0, u, F, F,V) (0, u, F,V,V) (0, u, F, F,V) (1, u, F, F,V)
(0, u, F,V,V) (0, u, F,V,V) (0, u, F,V,V) (0, u, F,V,V) (1, u, F, F,V)
(1, p, F, F, F) (1, d,V, F, F) (1, p, F, F, F) (1, u, F, F,V) (1, p, F, F, F)
(1, u, F, F,V) (1, u,V, F,V) (1, u, F, F,V) (1, u, F, F,V) (2, p, F, F, F)
(1, d,V, F, F) (1, d,V, F, F) (1, d,V, F, F) (1, d,V, F,V) (0, p, F, F, F)
(1, u,V, F,V) (1, u,V, F,V) (1, u,V, F,V) (1, u,V, F,V) (2, d,V, F, F)
(1, d,V, F,V) (1, d,V, F,V) (1, d,V, F,V) (1, d,V, F,V) (0, u, F, F,V)
(2, p, F, F, F) (2, d,V, F, F) (2, d, F,V, F) (2, p, F, F, F) (2, p, F, F, F)
(2, d,V, F, F) (2, d,V, F, F) (2, d,V,V, F) (2, d,V, F, F) (1, d,V, F, F)
(2, d, F,V, F) (2, d,V,V, F) (2, d, F,V, F) (2, d, F,V, F) (1, p, F, F, F)
(2, d,V,V, F) (2, d,V,V, F) (2, d,V,V, F) (2, d,V,V, F) (1, d,V, F, F)
Tabla 2:
Nos interesa ahora estudiar las sucesiones de smbolos de input de un autmata dado que nos
lleven del estado inicial a uno nal. Ms precisamente
Denicin 2.2. Sea M = (Q, , , q
0
, F) un autmata nito determinstico. Una cadena en M es un
elemento de
. Sean p y q estados de M y =a
0
a
1
. . . a
n
una cadena en M, diremos que transforma
q en p (un estado de M) si partiendo del estado q y aplicando sucesivamente los inputs a
0
, a
1
, hasta
a
n
, obtenemos el estado p. Tambin deniremos que transforma un estado en si mismo. Finalmente,
diremos que una cadena es aceptada por M, si transforma el estado inicial en uno nal.
A nivel de diagramas de transicin, podemos mirar el diagrama como un conjunto de sitios o
ciudades (los nodos) con rutas que conectan a algunos de ellos (las echas), entonces una cadena
= a
0
a
1
. . . a
n
, que tambin llamaremos recorrido, es aceptada si partiendo del sitio q
0
y yendo por
las rutas a
0
, a
1
, . . . , a
n
llegamos a un sitio nal.
Observacin 2.1. Denotaremos el hecho de que un smbolo de input a transforma un estado q en p,
por
q
a
p.
Sea = a
0
a
1
. . . a
n
una cadena que transforma un estado q en p, entonces se denota
q
a
0
q
1
a
1
a
n1
q
n1
a
n
p o bien q
7
Observemos que q
q, para todo estado q.
Notemos que esta notacin tiene la siguiente propiedad : si = , donde , y son cadenas,
entonces
q
p si y slo si existe r Q tal que q
r
p. (1)
Denicin 2.3. Sea M un autmata nito determinstico, entonces el lenguaje aceptado por M, deno-
tado L(M), es el conjunto de cadenas aceptadas por el autmata. Si M y M
/
son dos autmatas nitos
diremos que son equivalentes si L(M) = L(M
/
).
En la notacin explicada ms arriba si M = (Q, , , q
0
, F) es un autmata nito determinstico,
entonces
L(M) =
p.
Ejemplo 2.8. El lenguaje aceptado por el autmata del Ejemplo 2.6 es L(M) = el conjunto de cadenas
que tienen un nmero par de 0s y un nmero par de 1s.
Demostracin. Si observamos el diagrama de transicin correspondiente notamos que ir de izquierda
a derecha o de derecha a izquierda signica aplicar el input 1. Ir de arriba a abajo o de abajo a arriba
signica aplicar el input 0. Ahora bien, como q
0
es el estado inicial y nal, una palabra aceptada va
recorriendo" el diagrama de tal forma que cuando termina subi tantas veces como baj y fue a la
izquierda tantas veces como fue a la derecha. Es decir que esta palabra tiene un nmero par de 0s y
un nmero par de 1s.
Por otro lado, si una palabra tiene un nmero par de 0s y un nmero par de 1s es claro, por las
mismas razones expuestas arriba, que termina su recorrido en q
0
.
Observemos que es una cadena aceptada, debido a que q
0
es estado nal y que q
0
q
0
. Clara-
mente, la cadena tiene un nmero par de ceros y unos, pues tiene 0 ceros y 0 unos.
Ejemplo 2.9. El lenguaje reconocido por el siguiente autmata es el de las cadenas de 0s y 1s con
tres o un mltiplo de tres 1s. Por ejemplo las cadenas 00, 01011, 110011011, pertenecen a este
lenguaje.
_
`
_
q
0
1
`
_
q
1
1
`
_
q
2
0
.
1
-
1
_
`
_
p
0
1
`
_
p
1
1
`
_
p
2
Demostracin. Como en el anterior ejemplo la idea es geomtrica: observemos que para que una
cadena termine en q
0
o p
0
, debe haber ido a un estado con subndice 1, luego a otro con subndice 2 y
luego volver a un estado con subndice 0, y esto se puede hacer un nmero arbitrario de veces. Ahora
8
bien, cada vez que se hace esto estamos usando tres 1s de la cadena. Adems, el nmero de ceros es
arbitrario. Luego una cadena aceptada por el autmata tiene la propiedad requerida. La recproca es
similar.
2.4 Autmatas no determinsticos
Ahora introduciremos la nocin de autmata nito no determinstico. No es difcil ver que un conjunto
aceptado por un autmata no determinstico tambin es aceptado por uno determinstico y viceversa.
Sin embargo, el autmata nito no determinstico resultar til para probar ciertos resultados y para
ciertas aplicaciones. Daremos una denicin no formal de este tipo de autmatas. El lector interesado
en la denicin formal puede consultar la subseccin 2.4.1.
Modiquemos la denicin de autmata nito permitiendo cero, una, o ms transiciones de un
estado con el mismo smbolo de input. Es decir de un estado pueden partir un nmero arbitrario de
echas cada una etiquetada con cualquier smbolo de input. Tambin permitamos transiciones sin in-
puts. Esta nueva denicin nos da los autmatas nitos no determinsticos (NFA) con -movimientos.
A nivel de diagramas de transicin los grafos que representan estos autmatas sern de la siguiente
forma: de cada nodo puede partir ninguna, una o varias echas con la misma etiqueta de input.
Adems puede haber echas que no se correspondan a ningn input, los -movimientos. A estas
echas les pondremos la etiqueta . Como en el caso de los autmatas determinsticos los NFA tienen
un estado inicial y estados nales, que se denotarn en el diagrama de transicin de la misma forma
que en el caso determinstico
Ejemplo 2.10. El siguiente es el diagrama de un autmata nito no determinstico con -movimientos:
los estados son q
0
, q
1
y q
2
. Los smbolos de input son a y b. El estado inicial es q
0
y el estado nal es
q
2
.
`
_
q
0
a
`
_
q
1
b
-
a
-
b
`
_
`
_
q
2
`
_
q
0
`
_
q
1
`
_
q
2
`
_
2
El nombre no determinstico" viene del hecho que si un estado recibe un input, entonces no est
determinado cual es el prximo estado, si no que hay ciertos estados posibles. Los -movimientos
reejan la posibilidad de cambio de estado sin que necesariamente haya un input. Observar tambin,
que existe la posibilidad que dado un estado no salga ninguna echa de l. Esto denotar que en este
9
estado el autmata aborta". Es claro que no es fcil imaginarse una mquina" que se comporte de
esta manera, sin embargo el concepto de NFA con -movimientos resulta muy til en la teora de
lenguajes.
Las tablas que describirn las reglas de transicin de los NFA con -mov sern similares a las
tablas que hemos hecho para los autmatas nitos determinsticos. Las diferencias son que cuando
aplicamos un input a un estado obtenemos un conjunto de estados (hacia donde van las echas) o / 0 en
el caso que no salga ninguna echa. Adems debemos agregar una entrada en la tabla para reejar
los posibles cambios de estado que producen los -movimientos.
Ejemplo 2.12. La tabla de transicin correspondiente al NFA con -mov del ejemplo 2.10 es dada
por la siguiente tabla:
a b
q
0
q
1
q
0
q
2
q
1
/ 0 q
0
, q
2
/ 0
q
2
q
1
/ 0 / 0
Ejemplo 2.13. La tabla de transicin correspondiente al NFA con -mov del ejemplo 2.11 es dada
por la siguiente tabla:
0 1 2
q
0
q
0
/ 0 / 0 q
1
q
1
/ 0 q
1
/ 0 q
2
q
2
/ 0 / 0 q
2
/ 0
Veamos ahora el lenguaje asociado a un NFA con -movimientos.
Denicin 2.4. Sea M un NFA con -movimientos con smbolos de input . Si
, diremos que
transforma p en q y lo denotaremos p
q, si existen a
0
, a
1
, . . . , a
n
tal que = a
1
a
2
. . . a
n
y tal
que existe un recorrido por echas con etiquetas a
0
, a
1
, . . . , a
n
que va del estado p al estado q. En el
recorrido se pueden intercalar arbitrariamente echas con etiqueta .
Es conveniente tambin denir que transforma todo estado en s mismo, es decir q
q.
Ejemplo 2.14. En el autmata del ejemplo 2.11 tenemos, por ejemplo, que q
0
01
q
1
, pues hay un
camino que lleva q
0
a q
0
por 0, q
0
a q
1
por y q
1
a q
1
por 1.
Observacin 2.2. Si p y q estados, a smbolo de input y p
a
q, no podemos asegurar que de p
podemos pasar directamente a q por una echa con etiqueta a. Por denicin p
a
q signica que
podemos llegar de p a q usando -movimientos adems de una transicin por a. Observando el
autmata del ejemplo 2.11 vemos que q
0
0
q
1
, pero no es cierto que hay una echa con etiqueta 0
que manda q
0
a q
1
.
En gran parte de las situaciones que necesitemos usar transiciones podremos tomarnos la licencia
de usar la notacin
p
a
0
q
1
a
1
a
n1
q
n
a
n
q,
para indicar que hay un camino de echas con etiquetas a
0
, . . . , a
n
que pasa por los estados q
1
, . . . , q
n
y que va de p a q (aqu permitiremos que los a
i
puedan ser s).
Ejemplo 2.15. Sea M un NFA con -movimientos,con diagrama de transicin :
10
`
_
q
0
a
`
_
q
1
a
-
b
`
_
`
_
q
2
q
0
, q
2
q
0
a
q
1
q
0
b
q
0
, q
2
q
1
q
1
q
1
b
q
0
, q
2
q
2
a
q
1
q
2
q
2
q
2
a
q
1
donde denotamos p
a
q, q
/
cuando p
a
q y p
a
q
/
. La mayora de las transformaciones son obvias y
las otras se deducen de la denicin. Sin embargo, creemos conveniente explicar algunas de ellas. Por
ejemplo, recordemos que, por denicin, q
q para todo q estado, de all que se justica la primera
columna de transformaciones. La transformacin q
1
b
q
2
se deduce de que podemos llegar de q
1
a
q
2
primero aplicando b y luego . En forma anloga se justica q
0
b
q
2
.
Como en el caso de autmatas determinsticos los estados nales nos determinan el lenguaje
asociado al autmata.
Denicin 2.5. Una cadena es aceptada por el autmata si transforma el estado inicial en uno
nal. Finalmente el lenguaje aceptado por M es el conjunto L(M) de todas las cadenas aceptadas.
Simblicamente:
L(M) =
[ q
0
p, para algn p F.
A nivel de diagramas de transicin podemos entender que el lenguaje aceptado por M, un NFA
con -movimientos, est formado por las cadenas =b
0
b
1
. . . b
n
tal que existe un recorrido por echas
con etiquetas b
0
, b
1
, . . . , b
n
que va del estado inicial a uno nal, en el recorrido se pueden intercalar
arbitrariamente echas con etiqueta .
Observemos que como el es la cadena vaca el intercalar echas con etiqueta no agrega nada
a la palabra, y la palabra o cadena denitiva es aquella que no tiene ningn . Tambin observemos
que dada una cadena puede haber muchos recorridos partiendo del estado inicial, algunos de ellos
pueden terminar en un estado nal y otros no, sin embargo lo que interesa, para saber si una cadena
es aceptada o no, es si por lo menos un recorrido alcanza un estado nal.
Ejemplo 2.16. Averigemos el lenguaje del autmata denido en el Ejemplo 2.11: observemos
primero que si abandonamos el estado q
0
entonces vamos al estado q
1
y no podemos volver atrs.
Anlogamente si abandonamos el estado q
1
, vamos al estado q
2
y ya no podemos salir de este estado.
Luego si una cadena w alcanza el estado nal, entonces comienza por q
0
, pasa por q
1
y llega a q
2
.
11
Es decir que w es de la forma 0
i
1
j
2
k
(i, j, k enteros mayores o iguales a 0). Recprocamente una ca-
dena de la forma 0
i
1
j
2
k
puede alcanzar el estado nal con el siguiente recorrido: 0, 0, . . . , 0 (i-veces),
, 1, 1, . . . , 1 ( j-veces), , 2, 2, . . . , 2 (k-veces). Es decir que el lenguaje asociado a este autmata es
0
i
1
j
2
k
: 0 i, j, k.
2.4.1 Formalizacin de los NFA
La denicin formal de NFA es:
Denicin 2.6. Un autmata nito no determinstico con -movimientos (NFA con -mov) es una
5-upla (Q, , , q
0
, F) que consiste de
1. un conjunto nito Q =q
1
, q
2
, . . . , q
n
de estados,
2. un conjunto nito =a
1
, a
2
, . . . , a
n
de smbolos de entrada o input,
3. un conjunto de reglas de transicin que transforma un estado con un input dado, en un conjunto
posible de estados. Tambin las reglas de transicin describen la transformacin de un estado
en un conjunto de estados sin haber recibido input (-movimiento). Formalmente, las reglas
de transicin son dadas por una funcin : Q() P(Q), donde P(Q) es el conjunto
formado por los subconjuntos de Q.
4. Adems, como en el caso del DFA, hay un estado inicial q
0
y un conjunto de estados nales F.
Veamos ahora el lenguaje asociado a un NFA con -movimientos:
Denicin 2.7. Sea M = (Q, , , q
0
, F) un NFA con -movimientos. Si
, diremos que
transforma p en q y lo denotaremos p
q, si existen a
0
, a
1
, . . . , a
n
y q
1
, . . . , q
n
en Q , tal
que = a
1
a
2
. . . a
n
y
q
1
(p, a
0
), q
2
(q
1
, a
1
), . . . q
i+1
(q
i
, a
i
), . . . q
n
(q
n1
, a
n1
), q (q
n
, a
n
).
Es conveniente tambin denir que transforma todo estado en s mismo, es decir q
q.
Observacin 2.3. Sea M = (Q, , , q
0
, F) un NFA con -movimientos.
1. Como dijimos antes, si a , entonces si q (p, a) tenemos que p
a
q. Pero no necesaria-
mente si p
a
q, entonces se cumple que q (p, a). La denicin de p
a
q denota el hecho
de que podemos llegar de p a q mediante -movimientos, luego a, luego -movimientos. En el
autmata del ejemplo 2.11 es cierto que q
0
0
q
1
, pues q
0
(q
0
, 0) y q
1
(q
0
, ), pero no es
cierto que q
1
(q
0
, 0).
2. Cuando un autmata no tiene -mov, entonces coinciden la funcin de transicin y las transfor-
maciones por smbolos de input, es decir si p, q son estados y a es un smbolo de input,
p (q, a) si y slo si q
a
p.
Por lo tanto, la notacin p
q para NFA con -mov, es consistente con la misma notacin para
DFA.
3. Es claro, en forma intuitiva, que si ,
, entonces para p, q Q,
p
q si y slo si existe r Q tal que p
r
q. (2)
12
4. Sea M
/
= (Q, ,
/
, q
0
, F) con
/
denida de la siguiente manera:
q
/
(p, a) sii p
a
q.
Entonces M
/
resulta ser un NFA con -mov que acepta el mismo lenguaje que M. La de-
mostracin se deja como ejercicio.
5. Debido a la observacin anterior, en gran parte de las situaciones que necesitemos usar transi-
ciones podremos tomarnos la licencia de usar la notacin
p
a
0
q
1
a
1
a
n1
q
n
a
n
q,
para indicar que hay un camino de echas con etiquetas a
0
, . . . , a
n
que pasa por los estados
q
1
, . . . , q
n
y que va de p a q. Dicho ms formalmente:
q
1
(p, a
0
), q
2
(q
1
, a
1
), . . . q
n
(q
n1
, a
n1
), q (q
n
, a
n
).
Repetimos la
Denicin 2.8. Una cadena es aceptada por el autmata si transforma el estado inicial en uno
nal. Finalmente el lenguaje aceptado por M es el conjunto L(M) de todas las cadenas aceptadas.
Simblicamente:
L(M) =
[ q
0
p, para algn p F.
El siguiente Teorema fue anunciado al comienzo de la seccin:
Teorema 2.1. Los lenguajes aceptados por los autmatas nitos determinsticos son los mismos que
los aceptados por los autmatas nitos no determinsticos con -movimientos. Ms precisamente,
dado un DFA (NFA con -movimientos) M, existe un NFA con -movimientos (resp. DFA) M
/
, tal que
L(M) = L(M
/
).
Demostracin. Si M = (Q, , , q
0
, F) un DFA, entonces sea M
/
= (Q, ,
/
, q
0
, F) el NFA denido
por
/
(q, a) =(q, a) para q Q y a . Es trivial comprobar, entonces, que L(M) = L(M
/
).
Veremos ahora que, dado M = (Q, , , q
0
, F) un NFA con -mov, podemos construir M
/
= (Q
/
,
,
/
, q
/
0
, F
/
) un DFA, tal que L(M) = L(M
/
).
Sea q M, denamos [q] = p Q [ q
p Q. Sean q
1
, . . . , q
i
elementos de Q, entonces
denotemos
[q
1
, . . . , q
i
] =
i
j=1
[q
j
].
Denamos M
/
de la siguiente manera: Q
/
=[q
1
, . . . , q
i
] [ q
1
, . . . , q
i
Q. El nuevo conjunto de estados
nales, F
/
, es el conjunto de estados que contienen un estado que se transforma por en un estado
nal de M. El estado inicial ser q
/
0
= [q
0
]. Finalmente, denimos
/
([q
1
, . . . , q
i
], a) igual al conjunto
p Q [ existe q
s
tal que q
s
a
p. Es decir, un a transforma q
/
Q
/
en p
/
Q
/
, si el conjunto
p
/
est formado por todos los elementos de Q que son los transformados por a de los elementos de q
/
.
Resumiendo, si q
/
Q
/
y a :
Q
/
=[q
1
, . . . , q
i
] [ q
1
, . . . , q
i
Q P(Q)
q
/
0
= [q
0
]
F
/
=[q
1
, . . . , q
i
] [ existe k y p F tal que q
k
p
(q
/
, a) =p Q [ q q
/
tal que q
a
p o equivalentemente
q
/
a
p Q [ q q
/
tal que q
a
p.
13
No es difcil comprobar que M
/
= (Q
/
, ,
/
, q
/
0
, F
/
) es un autmata nito determinstico.
No es difcil comprobar que si q
/
Q
/
entonces
q
/
=p Q [ q q
/
tal que q
p. (3)
Esto se debe a que como q
/
= [q
1
, . . . , q
i
], por denicin
q
/
=
i
j=1
[q
j
] =
i
j=1
p Q [ q
j
p
=p Q [ q
j
tal que q
j
p p Q [ q q
/
tal que q
p.
Para demostrar la otra inclusin, consideremos p tal que q
p con q q
/
. Como q q
/
existe q
j
tal que q
j
q, luego q
j
q
p, de lo cual se deduce que q
j
p y por lo tanto p p Q [
q
j
tal que q
j
p.
Veamos ahora que si
, q
/
en Q
/
, entonces:
q
/
p Q [ q q
/
tal que q
p.
Supongamos que q
/
p
/
y veamos que p
/
= p Q [ q q
/
tal que q
p: hagamos induccin
sobre [ [. Cuando [ [=0, es decir cuando =, tenemos que q
/
q
/
y el prrafo anterior demuestra
el resultado. Cuando [ [= 1 el resultado se deduce trivialmente por denicin de transicin. Si
[ [> 1, entonces = a, con [ [ 1 y a . Por (1) de la observacin 2.1 sabemos que existe
r
/
Q
/
tal que q
/
r
/
a
p
/
. Por hiptesis inductiva y el caso de longitud 1 tenemos que
q
/
r
/
=r Q [ q q
/
tal que q
r,
r
/
a
p
/
=p Q [ r r
/
tal que r
a
p.
Si p p
/
, existe r r
/
tal que r
a
p, como r r
/
, existe q q
/
, tal que q
r. Es decir que q
a
p
o equivalentemente q
p. Por lo tanto est probado p
/
p Q [ q q
/
tal que q
p. Por otro
lado, si p p Q [ q q
/
tal que q
p, existe q q
/
tal que q
p, luego existe r Q tal que
q
r
a
p, por lo tanto r r
/
y p p
/
. Esto prueba la otra inclusin y por lo tanto la igualdad deseada.
La aplicacin directa del resultado anterior a q
/
0
, nos dice que dada
, entonces
q
/
0
p Q [ q
0
p. (4)
Ahora bien, sea L(M
/
), es decir q
/
0
p
/
, con p
/
F
/
. Como p
/
es nal de M
/
, entonces existe p
en p
/
que tambin pertenece a F, luego por (4) obtenemos que q
0
p
/
. De esto se deduce que p
/
F
/
y L(M
/
).
Finalmente, el prrafo anterior prueba que L(M) = L(M
/
).
Ejemplo 2.17. Sea M el NFA con -mov con estados q
0
, q
1
, un solo smbolo de input a, estado inicial
q
0
, estado nal q
1
y las siguientes leyes de transicin:
(q
0
, a) =q
0
, (q
0
, ) =q
1
.
Encontremos un autmata determinstico con el mismo lenguaje que M. Por la demostracin del
teorema el nuevo autmata, M
/
, tendr estados / 0, [q
0
]. Observar que [q
0
] = [q
1
] = [q
0
, q
1
] =q
0
, q
1
,
14
pues q
0
q
1
. El estado nal e inicial es entonces [q
0
]. Por denicin, del estado / 0 no sale ninguna
echa y ([q
0
], ) = [q
0
], ([q
0
], a) = [q
0
]. Claramente, el lenguaje aceptado por ambos autmatas es
el de todas las cadenas de as.
Veamos un ejemplo menos trivial.
Ejemplo 2.18. Sea M = (Q, , , q
0
, F) un NFA con -movimientos denido por el siguiente diagrama
de transicin.
`
_
q
0
a
`
_
q
1
b
-
a
-
b
`
_
`
_
q
2
-
Encontremos un DFA que acepte el mismo lenguaje. Debemos primero establecer los estados del
nuevo autmata:
[q
0
] =p Q [ q
0
p =q
0
, q
2
[q
1
] =p Q [ q
1
p =q
1
[q
0
, q
1
] = [q
0
] [q
1
] =q
0
, q
1
, q
2
Otro estado, siempre presente es / 0. Observemos que cualquier otro posible estado es uno de los ya
listados ms arriba, por ejemplo, [q
2
] = [q
0
] y [q
1
, q
2
] = [q
1
] [q
2
] = [q
0
, q
1
]. Establezcamos ahora las
transiciones.
[q
0
]
a
p Q [ q [q
0
] tal que q
a
p =
=p Q [ q
0
a
pp Q [ q
2
a
p =q
1
q
1
= [q
1
]
[q
0
]
b
p Q [ q
0
b
pp Q [ q
2
b
p =q
0
, q
2
/ 0 = [q
0
]
[q
1
]
a
p Q [ q
1
a
p = / 0
[q
1
]
b
p Q [ q
1
b
p =q
0
, q
2
= [q
0
]
[q
0
, q
1
]
a
p Q [ q [q
0
, q
1
] tal que q
a
p = [q
1
] / 0 = [q
1
]
[q
0
, q
1
]
b
[q
0
] [q
0
] = [q
0
]
Por denicin, es claro que toda transicin que sale de / 0 vuelve a / 0. Finalmente, el estado inicial y
nal es [q
0
]. El diagrama de transicin del autmata recin construido es:
`
_
`
_
[q
0
]
`
b
a
`
_
[q
1
]
-
a
-
b
`
_
`
_
[q
0
, q
1
]
.
b
a
`
_
/ 0
.
b
a
15
2.5 Expresiones regulares
Los lenguajes aceptados por los autmatas nitos se pueden describir fcilmente por expresiones sim-
ples llamadas expresiones regulares. En esta seccin introduciremos las operaciones de concatenacin
y clausura sobre conjuntos de cadenas, deniremos expresiones regulares y daremos la demostracin
de que una expresin regular dene un lenguaje que puede ser descrito por un autmata nito. La
recproca de este resultado tambin es cierta y veremos su demostracin en la subseccin nal.
Denicin 2.9. Sea un conjunto nito de smbolos y sean L, L
1
y L
2
conjuntos de cadenas de
.
La concatenacin de L
1
y L
2
, denotada L
1
L
2
es un conjunto formado por cadenas de L
1
seguidas por
cadenas de L
2
, es decir: L
1
L
2
= xy [ x est en L
1
e y est en L
2
. Denamos L
0
= y L
i
= LL
i1
para i 1. La clausura de Kleene (o slo clausura) de L, denotada L
, es el conjunto
L
i=0
L
i
y la clausura positiva de L, denotada L
+
, es el conjunto
L
+
=
i=1
L
i
.
L
1
=11, 0
1
menos el .
Denicin 2.10. Sea un alfabeto. Las expresiones regulares sobre y los conjuntos que ellas
denotan se denen recursivamente de la siguiente manera:
1. / 0 es una expresin regular y denota el conjunto vaco.
2. es un expresin regular y denota el conjunto .
3. Para cada a en , a es una expresin regular que denota el conjunto a.
4. Si r y s son expresiones regulares que denotan los conjuntos R y S, respectivamente, entonces
(r +s), (rs) y (r
, respec-
tivamente.
Si r es una expresin regular escribiremos L(r) al conjunto (o lenguaje) denotado por r.
Cuando escribimos expresiones regulares podemos omitir muchos parntesis si asumimos que
tiene ms alta precedencia que la concatenacin o +, y la concatenacin tiene ms alta precedencia
que +. Por ejemplo ((0(1
00(0+1)
denota todas las cadenas de 0s y 1s que comienzan con 1 y no tienen dos 0s con-
secutivos. Tambin pertenece a este conjunto la cadena vaca.
Demostracin. Probemos por induccin que (1 +10)
i
no tiene dos 0s consecutivos. El caso
i = 0 es trivial, y si suponemos que (1+10)
i1
no tiene dos 0s consecutivos, entonces, es claro
que (1+10)
i
= (1+10)
i1
(1+10) no tiene dos 0s consecutivos, pues en el nal las palabras
son de la forma 11 o 110 o 101 o 1010, donde las letras en negrita denotan palabras
de (1+10)
i1
. De esta forma probamos que (1+10)
i
no tiene dos 0s consecutivos para todo
i y por lo tanto (1 +10)
denota las cadenas que estn formadas por cierta cantidad de 0s, luego cierta cantidad
de 1s y luego cierta cantidad de 2s. Observar que este es lenguaje del autmata denido en el
ejemplo 2.11.
Veremos ahora como a partir de una expresin regular r podemos construir un autmata no deter-
minstico M que dena el mismo lenguaje, es decir tal que L(r) = L(M). En realidad lo que constru-
iremos son autmatas no determinsticos con un slo estado nal. Para las expresiones regulares , / 0
o a con a los autmatas no determinsticos de la Fig. 3 denen el lenguaje correspondiente:
_
`
_
q
0
r =
`
_
q
0
_
q
1
`
_
r = / 0
`
_
q
0
a
_
q
1
`
_
r = a
Figura 3:
A un autmata M con estado inicial q y estado nal f lo dibujaremos de la siguiente manera (Fig.
4):
Ahora haremos lo siguiente: dadas expresiones regulares r
1
y r
2
a las cuales ya les hayamos
asociado los autmatas M
1
, M
2
correspondientes, como en la Fig. 5 encontraremos los autmatas
correspondientes a r
1
+r
2
, r
1
r
2
y r
1
. Dicho de otra manera: si L
1
es el lenguaje de M
1
y L
2
es
el lenguaje de M
2
, entonces encontraremos autmatas correspondientes a L
1
L
2
, L
1
L
2
y L
1
. El
autmata correspondiente a r
1
+r
2
ser el de la Fig. 6.
El autmata correspondiente a r
1
r
2
ser el de la Fig. 7.
17
_
M
`
_
q
`
_
f
Figura 4:
_
M
1
`
_
q
1
`
_
f
1
_
M
2
`
_
q
2
`
_
f
2
Figura 5: Los autmatas de r
1
y r
2
.
El autmata correspondiente a r
1
ser el de la Fig. 8
De lo anterior se deduce
Teorema 2.2. Sea L una lenguaje denotado por la expresin regular r. Entonces existe M un DFA
con -mov tal que L = L(M).
Ejemplo 2.21. Construyamos un autmata para la expresin regular 01
y r
2
= 1. El autmata para r
2
es fcil
`
_
q
1
1
`
_
q
2
`
_
Podemos expresar r
1
como r
3
r
4
, donde r
3
= 0 y r
4
= 1
. El autmata de r
3
, tambin es fcil:
`
_
q
3
0
`
_
q
4
`
_
Ahora bien, r
4
es r
5
, con r
5
= 1. Un autmata para r
5
es
`
_
q
5
1
`
_
q
6
`
_
Observemos que para poder construir el autmata correspondiente a la expresin regular necesi-
tamos distinguir los estados de r
2
y r
5
, aunque representen la misma expresin. Basndonos en las
explicaciones anteriores un autmata para r
4
ser
18
`
_
q
0
M
1
`
_
q
1
`
_
f
1
_
M
2
`
_
q
2
`
_
f
2
_
f
0
`
_
Figura 6: El autmata de r
1
+r
2
.
M
1
`
_
q
1
`
_
f
1
M
2
`
_
q
2
`
_
f
2
_
Figura 7: El autmata de r
1
r
2
.
`
_
q
7
`
_
q
5
1
`
_
q
6
`
_
q
8
`
_
ser
`
_
q
3
0
`
_
q
4
`
_
q
7
`
_
q
5
1
`
_
q
6
`
_
q
8
`
_
+1 ser el de la Fig. 9.
2.5.1 Teorema de Kleene
Estudiemos el problema, un poco ms complicado, de construir una expresin regular que denote el
lenguaje de un autmata dado. Esta construccin se basa en la idea de encontrar, en forma algort-
mica, una expresin regular que involucra resolver el problema para un autmata con menos estados.
Repitiendo el proceso un nmero conveniente de veces lograremos la expresin regular buscada. Para
19
`
_
q
0
M
1
`
_
q
1
`
_
f
1
_
f
0
`
_
Figura 8: El autmata de r
1
.
`
_
q
3
0
`
_
q
4
`
_
q
7
`
_
q
5
1
`
_
q
6
`
_
q
8
`
_
q
10
`
_
`
_
q
9
`
`
`
`
.
.
.
.
.
.
.
.
.
.
`
_
q
1
1
`
_
q
2
-
-
-
-
-
-
-
-
-
-
+1.
describir el procedimiento, comenzaremos con el caso ms simple en el cual nuestro autmata M tiene
un solo estado nal, q
n
y su estado inicial es q
0
. Es claro que L(M) = L
0n
, el lenguaje de las cadenas
que comienzan en q
0
y llegan a q
n
. Llamemos I
0
al lenguaje formado por las cadenas que salen de q
0
y vuelven a q
0
sin pasar nuevamente por l. Si el estado inicial es el estado nal, (es decir, n = 0)
entonces claramente L
0n
= I
0
, puesto que con repetir caminos que salgan de q
0
y vuelvan a l obtengo
todas las palabras aceptadas. Si n ,= 0, denamos F
0n
como el lenguaje de las cadenas que salen de q
0
y llegan a q
n
sin pasar por q
0
. Entonces, por un razonamiento similar, L
0n
= I
0
F
0n
.
Debemos ahora explicitar quines son I
0
y F
0n
. Los elementos de I
0
son cadenas de dos formas:
1. a
0
b, donde a, b y
0
es una cadena que parte de un estado p y tal que q
0
a
q
i
q
j
b
q
0
con p y q distintos de q
0
y adems el camino que recorre
0
no pasa por q
0
; o bien
2. c , que haga un bucle de q
0
en s mismo.
Si consideramos en el primer caso el autmata M
/
que se obtiene de M sacando q
0
y haciendo que q
i
sea estado inicial y q
j
estado nal, entonces
0
es una cadena aceptada por M
/
. En este caso, L(M
/
) =
L
i j
, el lenguaje de las cadenas que salen de q
i
y llegan a q
j
sin pasar nunca por q
0
, y obtenemos:
I
0
= aL
i j
b+ +c +. . .
donde se suman todas las posibilidades para a, b, i, j tales que q
0
a
q
i
, q
j
b
0, con q
0
distinto de q
i
y q
j
, los c tales que q
0
c
q
0
, y en L
i j
no consideramos q
0
. Es decir, las cadenas que parten y llegan
a q
0
se pueden ver como la concatenacin de cadenas formadas por ciertos smbolos de entrada, con
lenguajes aceptados por autmatas ms chicos.
De igual modo, si q
0
no es el estado nal, los elementos de F
0n
son las cadenas que parten de
q
0
y llegan al estado nal q
n
sin pasar por q
0
. En este caso las cadenas son de la forma a con
20
q
0
a
q
j
q
n
, donde a . Luego esta cadena es la concatenacin de un smbolo de entrada y
una cadena aceptada por un autmata ms chico:
F
0n
= aL
jn
+. . .
donde a, j se mueven entre todas las opciones tales que q
0
a
q
j
q
n
, j ,=0 y en L
i j
(igual que arriba)
no consideramos a q
0
. Dado que el problema se va reduciendo a autmatas mas chicos, este algoritmo
termina.
El caso de autmatas M con mltiples estados nales se trata similarmente, escribiendo
L(M) = aL
jk
+. . . ,
donde a, j, k se mueven entre las opciones tales que q
0
a
q
j
q
k
con q
k
un estado nal.
Ejemplo 2.22. Encontremos una expresin regular para el lenguaje aceptado por el autmata M de-
scrito mediante el diagrama de transicin de la Figura 10.
`
_
q
0
b
`
_
q
1
a
`
a
a
`
b
`
_
q
2
b `
_
q
3
`
_
b
Figura 10: El autmata M
Es claro que L(M) =L
03
, el lenguaje de las cadenas que comienzan en q
0
y llegan a q
3
. Llamemos
I
0
al lenguaje formado por las cadenas que salen de q
0
y vuelven a q
0
sin pasar nuevamente por l y
F
03
al lenguaje de las cadenas que salen de q
0
y llegan a q
3
sin pasar por q
0
. Entonces, L
03
= I
0
F
03
.
Analicemos ahora quines son I
0
y F
0,3
.
Las formas de salir de q
0
y volver a s mismo sin pasar nuevamente por l se pueden escribir as:
I
0
= bL
12
a+bL
13
a+bL
13
b+aL
23
a+aL
23
b+aL
22
a,
I
0
= b(L
12
a+L
13
(a+b)) +a(L
23
(a+b) +L
22
a),
donde L
12
es el lenguaje aceptado por el autmata M
12
que consta de los estados q
1
, q
2
, q
3
(hemos
eliminado q
0
), y que tiene por estado inicial a q
1
y nal a q
2
. De manera similar se denen L
13
=
L(M
13
), L
23
= L(M
23
) (ver Figura 12) y L
22
(ver Figura 11).
Las maneras de salir de q
0
y llegar al estado nal q
3
sin pasar por q
0
son:
F
03
= bL
13
+aL
23
.
21
Tenemos, como antes L
12
= I
1
F
12
, salvo que ahora hemos eliminado q
0
de nuestras consid-
eraciones. Es decir,
I
1
= aL
33
b, F
12
= aL
33
,
son las formas de ir de q
1
a q
1
y de q
1
a q
3
, respectivamente, sin pasar nuevamente por q
1
(y
sin utilizar q
0
). Ahora, en nuestro L
33
, no utilizaremos ni q
0
ni q
1
.
Como nuestro estado inicial es igual al estado nal (q
3
), tenemos
L
33
= I
3
.
En I
3
no usaremos ni q
0
ni q
1
. Entonces obtenemos:
I
3
= bL
22
= b,
con lo que
L
33
= b
.
Ya podemos calcular los anteriores I
1
= aL
33
b = ab
b y F
12
= aL
33
= ab
. Luego obtenemos
L
12
= (ab
b)
ab
.
Ahora nos toca ver L
13
= I
1
F
13
, eliminando q
0
.
I
1
= ab
b, F
13
= aL
33
= ab
,
dado que, como antes, en L
33
eliminamos q
0
y q
1
. Entonces L
13
= (ab
b)
ab
.
Observemos que L
23
= I
2
F
23
, eliminando q
0
.
I
2
= L
33
b = L
33
b, F
23
= L
33
= L
33
,
donde en L
33
se eliminan q
0
y q
2
.
Veamos L
33
con q
0
y q
2
eliminados. Como antes (estado inicial es el nal) tenemos
L
33
= I
3
.
En I
3
no usaremos ni q
0
ni q
2
. Entonces obtenemos:
I
3
= bL
11
a = ba
con lo que
L
33
= (ba)
.
Obtenemos entonces
I
2
= (ba)
b, F
23
= (ba)
,
y luego L
23
= ((ba)
b)
(ba)
.
22
Slo nos falta L
22
= I
2
(Figura 11). Tenemos
I
2
= L
33
b = L
33
b = (ba)
b,
pues es el mismo L
33
considerado anteriomente. Entonces
L
22
= ((ba)
b)
.
Por ltimo,
I
0
= b(L
12
a+L
13
(a+b)) +a(L
23
(a+b) +L
22
a),
I
0
= b((ab
b)
ab
a+(ab
b)
ab
(a+b)) +a(((ba)
b)
(ba)
(a+b) +((ba)
b)
a).
F
03
= bL
13
+aL
23
,
F
03
= b(ab
b)
ab
+a((ba)
b)
(ba)
,
y nuestro resultado nal es
L = L
03
= I
0
F
03
.
`
_
q
1
a
`
b
`
_
q
2
b
`
_
q
3
Figura 11: El autmata M
22
`
_
q
1
a
`
b
`
_
q
2
b
`
_
q
3
`
_
q
1
a
`
b
`
_
q
2
b
`
_
q
3
`
_
q
1
a
`
b
`
_
q
2
b
`
_
q
3
Figura 12: Los autmatas M
23
, M
13
y M
12
, respectivamente
Teorema 2.3 (Teorema de Kleene). Sea M un NFA con -mov, entonces, existe una expresin regular
r tal que L(M) es el lenguaje denotado por r.
23
Probaremos este teorema viendo que, dado un NFA M, el algoritmo descripto anteriormente de-
vuelve una expresin regular que caracteriza el lenguaje aceptado por M. Para ello ser necesario
formalizar las deniciones de L
nm
, I
n
, F
nm
y el proceso de eliminar estados.
Supongamos que M = (Q, , , q
0
, F). Supondremos que existe un nico estado nal: F = q
f
,
con 0 f r. Sea Q =q
0
, . . . , q
r
y =c
1
, . . . , c
u
.
Dados 0 n, m r, R Q, denamos recursivamente las siguientes expresiones regulares:
L
nm
(R) = / 0 si n m no estn en R.
L
nn
(R) = I
n
(R)
L
nm
(R) = I
n
(R)
F
nm
(R) si n ,= m.
I
n
(R) =
q
n
a
q
t
, q
s
b
q
n
aL
ts
(Rq
n
)b +
q
n
c
q
n
c
F
nm
(R) =
q
n
a
q
t
aL
tm
(Rq
n
),
donde a, b, c . En particular,
L
nn
(q
n
) = I
n
(q
n
)
q
n
c
q
n
c
.
En esencia, en las expresiones L
nm
(R) slo consideramos habilitados los estados del conjunto R.
Por otro lado, sea M
nm
(R) = (R, , [ R, q
n
, q
m
) el autmata que resulta de M luego eliminar
todos los estados que no estn en R y sus transiciones, y estipulando que el estado inicial es q
n
y el
nico estado nal es q
m
. En caso de que q
n
q
m
no estn en R, M
nm
(R) ser un autmata vaco con
lenguaje / 0.
Lema 2.4. Toda cadena representada por las expresiones regulares de arriba son aceptadas por
los respectivos autmatas. Es decir: para todo R Q, L
nm
(R) L(M
nm
(R)).
Demostracin. Tenemos dos casos a probar, correspondientes a la denicin de L
nm
(R):
(1) Si q
n
R y I
n
(R)
k
entonces L(M
nn
(R)).
(2) Si n ,= m, q
n
, q
m
R y I
n
(R)
k
F
nm
(R) entonces L(M
nm
(R)).
Procederemos simultneamente por induccin en k y en [ R [.
El caso base para R es el conjunto vaco, para el cual los antecedentes de (1) y (2) son falsos. Ms
an, por las deniciones tenemos que si alguno de n m falta en R, L
nm
(R) = L(M
nm
(R)) = / 0. Luego,
podemos considerar de ahora en adelante que n, m R.
k = 0 En el caso (1) debe ser = y claramente L(M
nn
(R)) al ser q
n
estado inicial y nal.
En el caso (2), F
nm
(R) =
q
n
a
q
t
aL
tm
(Rq
n
). Luego existen a, t,
/
tales que
q
n
a
q
t
,
/
L
tm
(Rq
n
), = a
/
.
Por hiptesis inductiva (eliminamos un estado)
/
L(M
tm
(Rq
n
)) y luego existe una sucesin
q
t
= s
1
a
1
s
2
a
2
a
l
s
l+1
= q
m
con s
j
Rq
n
y
/
= a
1
a
2
. . . a
l
. Como q
n
a
q
t
entonces L(M
nm
(R)).
k +1 Caso (1): es muy similar al (2), lo dejamos como ejercicio.
Caso (2): Supongamos que I
n
(R)
k+1
F
nm
(R). Luego, hay dos opciones (para cada uno de los
tipos de sumandos en la denicin de I
n
):
24
= a
0
/
con q
n
a
0
q
n
,
/
I
n
(R)
k
y
/
F
nm
(R). Por hiptesis inductiva (disminuimos k),
/
L(M
nm
(R)). Como antes, hay una sucesin
q
n
= s
1
a
1
s
2
a
2
a
l
s
l+1
= q
m
tal que
/
/
= a
1
a
2
. . . a
l
y luego
q
n
a
0
q
n
a
1
s
2
a
2
a
l
s
l+1
= q
m
muestra que L(M
nm
(R)).
=a
0
b
0
/
con q
n
a
0
s
0
, t
0
b
0
q
n
, L
s
0
t
0
(Rq
n
),
/
I
n
(R)
k
y
/
F
nm
(R). Por hiptesis
inductiva
/
/
L(M
nm
(R)) (disminuimos k) y L(M
s
0
t
0
(Rq
n
)) (borramos q
n
). Es decir
s
0
t
0
, q
n
/
q
m
,
y luego
q
n
a
0
s
0
t
0
b
0
q
n
/
q
m
muestra que L(M
nm
(R)).
Lema 2.5. Toda cadena aceptada por M
nm
(R) est en el lenguaje representado por la expresin
regular dada por el algoritmo. Es decir: para todo R Q, L(M
nm
(R)) L
nm
(R).
Demostracin. En esta prueba es ms conveniente por motivos tcnicos considerar las sucesiones de
transiciones que dan lugar a las cadenas aceptadas, que considerar las cadenas solamente. Probaremos,
para toda sucesin de transiciones en M
q
n
= s
0
a
0
s
1
a
1
a
l1
s
l
= q
m
(donde a
i
y s
i
Q), que:
si s
i
R para todo i entonces a
1
. . . a
l1
L
nm
(R),
por induccin en la longitud l de la sucesin. Llamemos = a
1
. . . a
l1
. Consideraremos un caso
(1) cuando n = m y un caso (2) cuando no sean iguales.
l = 0 Caso (1): si la cantidad de transiciones es cero, no nos movemos de q
n
. La cadena repre-
sentada es la vaca, y obviamente est en I
n
(R)
= L
nn
(R).
Caso (2): al ser n ,= m, l tiene que ser mayor a cero, as que este caso base es trivial.
l +1 Caso (1): si todos los s
i
son iguales a q
n
, entonces claramente
q
n
c
q
n
c
I
n
(R)
= L
nn
(R)
Sino, tomemos 0 j h l tales que s
i
es distinto de q
n
para todo i entre j y h, pero s
j1
=s
h+1
=q
n
.
Luego existen
/
, y (eventualmente vacas) tales que:
q
n
= s
0
/
s
j1
a
j1
s
j
s
h
a
h
s
h+1
s
l
= q
n
25
Por hiptesis inductiva, tenemos
/
, L
nn
(R) = I
n
(R)
y L
jh
(Rq
n
).
1
Luego
I
n
(R)
a
j1
L
jh
(Rq
n
)a
h
I
n
(R)
I
n
(R)
I
n
(R)I
n
(R)
= I
n
(R)
/
s
h
a
h
s
h+1
/
s
l
= q
m
con =
/
a
h
/
con
/
y
/
eventualmente vacos. Ahora, la sucesin de transiciones correspondiente
a
/
no contiene a q
n
; por hiptesis inductiva tenemos que
/
L
km
(R q
n
), donde suponemos
sin prdida de generalidad que s
h+1
= q
k
. Y tambin por hiptesis inductiva
/
L
nn
(R) = I
n
(R)
.
Entonces
I
n
(R)
a
h
L
km
(Rq
n
) I
n
(R)
F
nm
(R) = L
nm
(R).
Prueba del Teorema de Kleene. Supongamos M = (Q, , , q
0
, F) donde Q=q
0
, . . . , q
r
y F =q
k
, . . . , q
m
kim
L(M
0i
(Q)),
dado que cada cadena aceptada termina obviamente en un solo estado nal. Pero ahora, por los lemas
anteriores tenemos
L(M) =
kim
L
0i
(Q)
y por ltimo
L(M) =
kim
L
0i
(Q)
es la expresin regular buscada.
2.6 Pumping Lemma
En esta seccin veremos que existen lenguajes que no son regulares. Demostraremos esto usando un
resultado conocido como el Pumping Lemma o Lema del Inado".
Proposicin 2.6 (Pumping Lemma). Sea L un lenguaje regular. Entonces existe un nmero k > 0
tal que para toda cadena L con [ [ k, existen cadenas
1
,
2
, con [
1
[ k, [ [> 0 que
satisfacen
1. =
1
2
,
2.
1
2
L para todo n 1.
Demostracin. Debido a que L es un lenguaje regular, existe M un DFA tal que L = L(M). Sea k el
nmero de estados de M y una cadena en L con [ [k. Entonces = a
i
1
a
i
t
donde a
i
j
smbolo
de input (1 j t) y t k. Sean q
i
0
, q
i
1
, . . . , q
i
t
estados tal que, q
i
0
=q
0
el estado inicial, q
i
t
un estado
nal y
q
i
0
a
i
1
q
i
1
a
i
2
a
i
t1
q
i
t1
a
i
t
q
i
t
.
1
Aqu suponemos, por comodidad notacional, que s
j
= q
j
y s
h
= q
h
.
26
Es claro que, como q
i
0
, . . . , q
i
k
es una lista de k +1 estados y como el autmata tiene k estados, hay
al menos dos estados que se repiten en la lista, digamos q
i
r
y q
i
s
, con r < s k. Sean entonces
1
= a
i
1
a
i
r1
, = a
i
r
a
i
s1
y
2
= a
i
s
a
i
t
. Luego, =
1
2
, [ [> 0 y [
1
[k. Observemos
que
q
i
0
1
q
i
r
q
i
r
2
q
i
t
,
en particular tenemos que q
i
r
q
i
r
. Por lo tanto, se cumple que para n > 0,
q
i
r
n
q
i
r
o equivalentemente q
i
r
q
i
r
q
i
r
(n-veces).
Por consiguiente, tambin vale
q
i
0
1
q
i
r
n
q
i
r
2
q
i
t
,
lo cual implica que
1
2
es una cadena aceptada por M y por lo tanto que pertenece a L. Esto prueba
el Pumping Lemma.
Como mencionamos arriba el Pumping Lemma es til para demostrar que un lenguaje no es
regular.
Ejemplo 2.23. Probemos que el lenguaje L =a
n
b
n
: n > 1 no es regular.
Demostracin. Hagamos la prueba por el absurdo suponiendo que L es regular. Sea k como en el
Pumping Lemma. Debemos elegir L de tal forma de obtener una contradiccin que nos lleve al
absurdo. Elegimos = a
k
b
k
, por el Pumping Lemma existen cadenas
1
,
2
, con [
1
[k, [ [> 0
que satisfacen =
1
2
y
1
2
L para todo n 1. Como [
1
[ k, es de la forma a
s
con
1 s, luego = a
r
a
s
a
t
b
k
con r +s +t = k y s > 0. Adems a
r
a
ns
a
t
b
k
L para n 1. Esto es una
contradiccin pues como r +ns +t > k para n > 1, entonces a
r
a
ns
a
t
b
k
, L para n > 1.
El Pumping Lemma es utilizado para detectar si un lenguaje no es regular, con la siguiente es-
trategia:
1. Seleccionar el lenguaje L que usted desea ver que no es regular.
2. Suponer que es regular y que por lo tanto existe un k como en el Pumping Lemma.
3. Seleccionar una cadena en L de longitud mayor que k. La eleccin de la cadena no es arbitraria
y depende del lenguaje dado.
4. Descomponer la cadena de acuerdo al Pumping Lemma y generar nuevas cadenas en L haciendo
inacin" en el centro (es decir las cadenas
1
2
).
5. Vericar que las cadenas inadas" no pertenecen a L. Esto genera una contradiccin que vino
de suponer que L era regular.
Observar que la estrategia anterior podra no servir, pero el hecho de que no podamos aplicar el
Pumping Lemma a un lenguaje L no implica que este sea regular.
Ejemplo 2.24. Demostrar que el lenguaje L =0
n
001
n
[ n N no es un lenguaje regular.
27
Demostracin. Supongamos que L es un lenguaje regular y sea k como en el Pumping Lemma. La
cadena = 0
k
001
k
es de L y por lo tanto es aceptada por el autmata. Por el Pumping Lemma
=
1
2
, con [ [> 0 y [
1
[ k y tal que
1
2
es aceptado por el autmata para todo n > 0.
Como [
1
[ k, es claro que
1
= 0
r
, = 0
s
y s 1. Es decir
1
2
= 0
k+1+(n1)s
001
k+1
. Por lo
tanto, 0
k+1
0
(n1)s
001
k+1
es una cadena de L para todo n > 0. Lo cual es un absurdo, pues esa cadena
no pertenece a L para n > 1.
Observar que en el ejemplo anterior hay cadenas de L que son de longitud mayor que k (por
ejemplo 0
k/2
001
k/2
, si k es par) que no sirven para demostrar, usando el Pumping Lemma, que el
lenguaje no es regular. Es decir, se debe tener mucho cuidado en la eleccin de la cadena, pues
la eleccin de una cadena incorrecta har que la utilizacin del Pumping Lemma no nos sirva para
demostrar que el lenguaje no es regular.
2.7 Ejercicios
1. Trace los diagramas de transicin de los DFA dados por las siguientes reglas de transicin.
(a) Estados q
0
, q
1
, q
2
; smbolos de input a, b, estado inicial q
0
y estado nal q
0
tambin.
a b
q
0
q
1
q
0
q
1
q
2
q
0
q
2
q
0
q
2
(b) Estados q
0
, q
1
, q
2
, smbolos de input a, b, estado inicial q
0
y estados nales q
0
, q
2
.
a b
q
0
q
1
q
1
q
1
q
0
q
2
q
2
q
0
q
1
(c) Estados q
0
, q
1
, q
2
, q
3
, smbolos de input a, b, c, estado inicial q
0
y estados nales
q
1
, q
2
.
a b c
q
0
q
1
q
0
q
2
q
1
q
0
q
3
q
0
q
2
q
3
q
2
q
0
q
3
q
1
q
0
q
1
2. Determine si la cadena abbaa es aceptada por el DFA denido por el siguiente diagrama
`
_
a
`
_
`
_
1
-
b
a
`
_
`
_
a
-
b
28
3. Determine si la cadena abbaa es aceptada por el DFA denido por el siguiente diagrama
`
_
0
a
b
`
_
a
`
_
`
_
a
4. Determine si la cadena aabaabb es aceptada por el DFA denido por el siguiente diagrama
`
_
b
`
_
1
-
a
b
`
_
`
_
b
-
a
a
`
_
1
-
a
b
`
_
`
_
2
-
b
-
a
0
a
b
`
_
`
_
a
.
b
`
_
2
b
a
`
_
`
_
3
`
a
.
b
7. Pruebe que una cadena en el alfabeto a, b es aceptada por el autmata del Ejercicio 2 si y
slo si termina en a.
8. Pruebe que una cadena en el alfabeto a, b es aceptada por el autmata del Ejercicio 4 si y
slo si termina en bb.
9. Trace el diagrama de transicin del DFA que acepte el conjunto de cadenas en al alfabeto a, b
dado en cada uno de los siguientes items.
(a) Cadenas con un nmero par de letras a.
(b) Cadenas con exactamente una letra b.
(c) Cadenas con al menos una letra b.
(d) Cadenas con exactamente dos letras a.
(e) Cadenas con al menos dos letras a.
(f) Cadenas que contengan m letras a, donde m es un mltiplo de 3.
(g) Cadenas que empiecen con baa.
(h) Cadenas que contengan abba.
(i) Cadenas donde toda letra b est seguida de una letra a.
(j) Cadenas que terminen con aba
(k) Cadenas que empiecen con ab y terminen con aba
10. Demuestre que los siguientes DFA son equivalentes.
`
_
`
_
0
a
b
`
_
1 .
b
30
`
_
`
_
0
a
b
`
_
a
`
_
2 .
b
11. Sea L un conjunto nito de cadenas no vacas sobre a, b. Demuestre que hay un DFA que
acepta L.
12. Hallar un autmata nito determinstico que acepte exactamente el lenguaje de las cadenas
sobre el alfabeto = 0, 1 que tienen una cantidad de 1s que es mltiplo de 3 y un nmero
par de ceros.
13. Dado el DFA con alfabeto = 0, 1, estado inicial q
0
y estados nales q
1
y q
f
y con la
siguiente tabla de transicin:
0 1
q
0
q
2
q
1
q
1
q
0
q
f
q
2
q
f
q
2
q
f
q
0
q
1
(a) Hacer el diagrama de transicin correspondiente,
(b) Vericar si las cadenas w
1
= 01011 y w
2
= 01000 son aceptadas o no por el autmata.
Describa paso a paso.
14. Dado el DFA con alfabeto = a, b, estado inicial q
0
y estados nales q
1
y q
f
y con la
siguiente tabla de transicin:
a b
q
0
q
1
q
2
q
1
q
2
q
1
q
2
q
f
q
0
q
f
q
f
q
2
(a) Hacer el diagrama de transicin correspondiente,
(b) Vericar si las cadenas w
1
= baaba y w
2
= aabaa son aceptadas o no por el autmata.
Describa paso a paso.
15. Construir un autmata nito determinstico con alfabeto = a, b que acepte cadenas que
empiecen con ab y terminen con ba.
16. Hallar un autmata nito determinstico que acepte exactamente el lenguaje de las cadenas
sobre el alfabeto = 0, 1 que tienen una cantidad par de 1s y el nmero de 0s es mltiplo
de 3.
17. Hallar un autmata nito determinstico que acepte exactamente el lenguaje de las cadenas
sobre el alfabeto =0, 1 que tiene un nmero par de ceros y terminan con dos (o ms) unos.
31
18. Hallar un autmata nito determinstico que acepte exactamente el lenguaje de las cadenas
sobre el alfabeto =0, 1 que no empiezan y terminan con el mismo smbolo.
19. Trace los diagramas de transicin de los autmatas no determinsticos dados por las siguientes
reglas de transicin.
(a) Estados q
0
, q
1
, q
2
; smbolos de input a, b, estado inicial q
0
y estado nal q
0
tambin
y reglas de transicin dadas por la siguiente tabla.
a b
q
0
/ 0 q
1
, q
2
q
1
q
2
q
0
, q
1
q
2
q
0
/ 0
(b) Estados q
0
, q
1
, q
2
, smbolos de input a, b, estado inicial q
0
y estados nales q
0
, q
1
y
reglas de transicin dadas por la siguiente tabla.
a b
q
0
q
1
q
0
, q
1
q
1
/ 0 q
2
q
2
q
1
/ 0
(c) Estados q
0
, q
1
, q
2
, q
3
, smbolos de input a, b, estado inicial q
0
y estado nal q
1
y
reglas de transicin dadas por la siguiente tabla.
a b
q
0
/ 0 q
3
q
1
q
1
, q
2
q
3
q
2
/ 0 q
0
, q
1
, q
3
q
3
/ 0 / 0
(d) Estados q
0
, q
1
, q
2
, smbolos de input a, b, c, estado inicial q
0
y estados nales q
0
, q
1
y
reglas de transicin dadas por la siguiente tabla.
a b c
q
0
q
1
/ 0 / 0
q
1
q
0
q
2
q
0
, q
2
q
2
q
0
, q
1
, q
2
q
0
q
0
(e) Estados q
0
, q
1
, q
2
, q
3
, smbolos de input a, b, c, estado inicial q
0
y estados nales
q
0
, q
3
y reglas de transicin dadas por la siguiente tabla.
a b c
q
0
/ 0 q
3
/ 0
q
1
q
1
, q
2
q
3
/ 0
q
2
/ 0 q
0
, q
1
, q
3
q
0
, q
2
q
3
/ 0 / 0 q
0
20. Sea M
1
es autmata correspondiente al del Ejercicio 2 y M
2
el autmata correspondiente al del
Ejercicio 4. Hallar diagramas de transicin de autmatas cuyos lenguajes sea L(M
1
) L(M
2
) y
L(M
1
) L(M
2
) respectivamente.
32
21. Para cada autmata que se muestra en las Figuras 13, 14, 15, 16 y 17 establezca el conjunto de
estados Q, el conjunto de smbolos de input , el estado inicial q
0
, el conjunto de estados nales
F .
`
_
a
`
_
`
_
b
-
b
`
_
`
_
2
Figura 13:
`
_
`
_
A
b
a
`
_
B
a
-
b
`
_
`
_
C
Figura 14:
22. Las cadenas bbabbb y bbabab son aceptadas por el autmata de la Fig. 18? Pruebe sus re-
spuestas.
23. Demuestre que una cadena es aceptada por el autmata de la Fig. 18 si y slo si tiene una
sola letra a y termina en b.
24. Las cadenas aaabba y aaaab son aceptadas por el autmata de la Fig. 19? Pruebe sus respues-
tas.
25. Determine el lenguaje aceptado por los autmatas de las Fig. 20, 21 y 22. Encuentre un aut-
mata determinstico con el mismo lenguaje en cada caso.
26. Caracterice los arreglos aceptados por el autmata de la Fig. 19.
27. Verique que las cadenas aceptadas por el autmata de la Fig. 15 son las cadenas en a, b que
terminan en bab.
33
`
_
0
b
a
`b
`
_
1
a
`
_
2
b
`
_
`
_
Figura 15:
`
_
0
b
a
`b
`
_
1
a
`
_
2
b
`
_
`
_
3
`b
Figura 16:
28. Caracterice las cadenas aceptadas por los autmatas del Ejercicio 19.
29. Caracterice las cadenas aceptadas por los autmatas de las Figuras 13, 14, 16y 17.
30. Disee autmatas no determinsticos que acepten las cadenas no nulas sobre a, b y que tengan
las siguientes propiedades.
(a) Comienzan con abb o con ba.
(b) Terminan con abb o con ba.
(c) Contienen abb o ba.
(d) Contienen bab y bb.
(e) Toda b se encuentra entre dos a.
(f) Comienzan con abb y terminan con ab.
(g) Comienzan con ab pero no terminan con ab.
(h) No contienen ba o bbb.
(i) No contienen abba o bbb
31. Caracterice el lenguaje aceptado por cada uno de los autmatas del Ejercicio 1.
32. Caracterice el lenguaje aceptado por los autmatas denidos en los Ejercicios 5 y 6.
33. Describir en palabras los conjuntos denotados por las siguientes expresiones regulares.
(a) (11+0)
(00+1)
(b) (1+01+001)
( +0+00)
34. Encontrar expresiones regulares en el alfabeto a, b que describan los siguientes conjuntos:
34
`
_
0
b
`
_
1
a
`
_
2
b
`
_
`
_
3
`b
Figura 17:
`
_
0
a
b
`
_
b
`
_
`
_
Figura 18:
(a) Cadenas con un nmero par de letras a.
(b) Cadenas con exactamente una letra b.
(c) Cadenas con al menos una letra b.
(d) Cadenas con exactamente dos letras a.
(e) Cadenas con al menos dos letras a.
(f) Cadenas que contengan m letras a, donde m es un mltiplo de 3.
(g) Cadenas que empiecen con baa.
(h) Cadenas que contengan abba.
(i) Cadenas donde toda letra b est seguida de una letra a.
(j) Cadenas que terminen con aba
(k) Cadenas que empiecen con ab y terminen con aba
35. Construir autmatas nitos cuyo lenguaje sea dado por las siguientes expresiones regulares.
(a) 10+(0+11)0
1
(b) 01[((10)
+111)
+0]
1
(c) ((0+1)(0+1))
+((0+1)(0+1)(0+1))
36. Encontrar expresiones regulares en el alfabeto a, b que describan los siguientes conjuntos:
(a) Comienzan con abb o con ba.
(b) Terminan con abb o con ba.
(c) Contienen abb o ba.
(d) Contienen bab y bb.
(e) Toda b se encuentra entre dos a.
35
`
_
0
a
b
`
_
`
_
b
`
_
`
_
a
a
Figura 19:
`
_
a
`
_
`
_
b
-
b
`
_
`
_
2
Figura 20:
(f) Comienzan con abb y terminan con ab.
(g) Comienzan con ab pero no terminan con ab.
(h) No contienen ba o bbb.
(i) No contienen abba o bbb
37. (a) Dibuje un autmata nito determinstico que acepte exactamente el lenguaje de las cade-
nas de 0s y 1s que no tienen ms de tres ceros consecutivos.
(b) Escriba la expresin regular correspondiente.
38. Vericar si los siguientes lenguajes son o no regulares:
(a) L
1
=0
n
1
n
1
m
0
m
[ n N.
(b) L
2
=1
n
0
n
1
m
0
m
[ n, m N.
(c) L
3
=0
n
110
n
, n 0.
(d) L
4
=ab
n+2
baa
n
.
(e) L
5
=110
n
110
n
, n 0,
3 Gramticas y lenguajes
En este captulo introduciremos las gramticas libres de contexto y regulares y los lenguajes que
ellas describen (los lenguajes libres de contexto y regulares). Los lenguajes libres de contexto son de
gran importancia en la denicin de los lenguajes de programacin, entre otra aplicaciones. Como
36
`
_
`
_
A
b
a
`
_
B
a
-
`
_
`
_
C
Figura 21:
un ejemplo, los lenguajes libres de contextos son tiles para describir expresiones aritmticas con
parntesis balanceados y para describir estructuras de bloque en los lenguajes de programacin.
3.1 Deniciones bsicas y ejemplos
Una gramtica libre de contexto es un conjunto nito de variables (tambin llamadas no terminales o
categoras sintcticas), un conjunto de smbolos llamados terminales y un conjunto de reglas llamadas
producciones que transforman una variable en una cadena formada por variables y terminales.
La motivacin original de las gramticas libres de contexto fue la descripcin de los lenguajes
naturales. Podemos escribir reglas como:
< oracin > < sujeto >< predicado >
< sujeto > < sujeto >< adjetivo >
< sujeto > el perro
< adjetivo > pequeo
< adjetivo > grande
< adjetivo > bueno
< predicado > < verbo >< adjetivo >
< verbo > es
donde las categoras sintcticas son denotadas por los <, > y los terminales son el perro", pequeo",
grande", bueno" y es". Ahora deseamos ver que frases se pueden armar con terminales partiendo
de la variable < oracin > y usando las reglas de produccin. Por ejemplo
< oracin > < sujeto >< predicado >
< sujeto >< adjetivo >< predicado >
el perro < adjetivo >< predicado >
el perro < adjetivo >< verbo >< adjetivo >
el perro bueno < verbo >< adjetivo >
el perro bueno es < adjetivo >
el perro bueno es grande
El smbolo denota la accin de derivar, es decir, reemplazar una variable por el lado derecho
de una produccin para la variable.
37
`
_
0
a
b
`
_
`
_
a
.
b
`
_
2
b
a
`
_
`
_
3
`
a
.
Figura 22:
Pese a su origen, las gramticas libres de contexto no son adecuadas para la descripcin de lengua-
jes naturales, una razn importante de este hecho es que es necesaria informacin semntica, adems
de la sintctica, para poder construir frases correctas en castellano. Por ejemplo, aunque las reglas
de produccin anteriores son aparentemente naturales" tambin podemos armar la siguiente frase el
perro grande es pequeo".
Ahora, formalizaremos los conceptos expresados previamente.
Denicin 3.1. Una gramtica libre de contexto (CFG) es una 5-upla G = (V, T, P, S) tal que
1. V es un conjunto nito. Los elementos de V son llamados variables o no terminales o categoras
sintcticas.
2. T es un conjunto nito disjunto con V. Los elementos de T son llamados terminales.
3. S es una variable especial que llamaremos el smbolo inicial.
4. P es un conjunto nito P, cuyos elementos son llamados producciones, tal que cada produccin
es de la forma A , donde A es una variable y es una cadena formada por variables y
terminales (que puede ser vaca), es decir (V T)
.
En el futuro usaremos la siguiente notacin: si A
1
, A
2
, . . . , A
n
son producciones
para la variable A en alguna gramtica, podemos expresar esto como
A
1
[
2
[ [
n
.
Denicin 3.2. Sea G = (V, T, P, S) una gramtica. Si A es una produccin y xAy es una cadena
formada por variables y terminales, se dice que xy se deriva directamente de xAy y se escribe
xAy ay.
38
Si
1
, . . . ,
n
cadenas y
1
2
,
2
3
, . . . ,
n1
n
derivaciones directas, entonces decimos
que
n
se deriva de
1
y se escribe
1
n
.
La secuencia
1
2
3
n1
n
se llama derivacin de
1
a
n
. Por convencin, cualquier cadena se deriva de si misma.
Finalmente, el lenguaje generado por G consiste de todas las cadenas de elementos de T que se
derivan de S. Se denota L(G). Los lenguajes generados por las gramticas libres de contexto se llaman
lenguajes libres de contexto.
Ejemplo 3.1. Consideremos la gramtica con una variable E, smbolos terminales +, , (, ) y id, y
producciones
E E +E [ E E [ (E) [ id .
Entonces (id +id) id se deriva de E, pues
E E E
(E) E
(E) id
(E +E) id
(E +id) id
(id +id) id
La primera lnea se obtiene usando la produccin E E E, la segunda se obtiene reemplazando
la primera E por el lado derecho de la produccin E (E). Las restantes lneas se obtienen de aplicar
sucesivamente las producciones E id, E E +E, E id, y E id.
Ejemplo 3.2. Consideremos la gramtica con una variable S , smbolos terminales a y b, y produc-
ciones S aSb [ ab. Veamos que el lenguaje generado por esta gramtica es el de todas las cadenas
en el alfabeto a, b que son de la forma a
n
b
n
con n > 0.
Demostracin. Hay esencialmente una nica forma de obtener una cadena con smbolos terminales:
primero aplicar repetidas veces la produccin S aSb y luego terminar con la produccin S ab.
Es decir que las derivaciones son del tipo
S aSb a
2
Sb
2
a
n1
Sb
n1
a
n
b
n
.
Entonces es claro que las palabras generadas por el lenguaje son de la forma a
n
b
n
y obviamente toda
cadena de la forma a
n
b
n
se obtiene haciendo la derivacin escrita ms arriba.
Ejemplo 3.3. Consideremos la gramtica con una variable S, smbolos terminales a y b, y produc-
ciones S aSa [ bSb [ a [ b [ . Veamos que el lenguaje generado por esta gramtica es el de todas las
cadenas en el alfabeto a, b que son capica.
Demostracin. Por denicin, una palabra capica es o bien de la forma x
1
x
2
. . . x
n
x
n
. . . x
2
x
1
o de
la forma x
1
x
2
. . . x
n1
x
n
x
n1
. . . x
2
x
1
, con x
i
igual a a o b. Usando sucesivamente las producciones
S x
1
Sx
1
, S x
2
Sx
2
, . . ., S x
n1
Sx
n1
, obtenemos la derivacin
S x
1
Sx
1
x
1
x
2
Sx
2
x
1
x
1
x
2
. . . x
n1
Sx
n1
. . . x
2
x
1
,
39
si ahora usamos las produccin S x
n
Sx
n
y luego S obtenemos S x
1
x
2
. . . x
n
x
n
. . . x
2
x
1
. Por
otro lado si aplicamos la produccin S x
n
a x
1
x
2
. . . x
n1
Sx
n1
. . . x
2
x
1
obtenemos la derivacin S
x
1
x
2
. . . x
n1
Sx
n1
. . . x
2
x
1
x
1
x
2
. . . x
n1
x
n
x
n1
. . . x
2
x
1
.
Veamos por induccin la recproca, es decir que una cadena del lenguaje generado por la gramtica
es capica: la hiptesis inductiva es S S, entonces = x
1
x
2
. . . x
k
y = x
k
. . . x
2
x
1
, con x
i
igual
a a o b. La induccin se hace sobre la longitud de . Si la longitud de es 1 el resultado es trivial.
Supongamos que tenemos probado el resultado para cadenas de longitud k 1. Sea S S, con
[ [=k. Sea =x
1
x
2
. . . x
k
, es claro que la ltima produccin que se us es S x
k
Sx
k
, luego tenemos
S
/
S
/
/
x
k
Sx
k
/
= S. Claramente
/
= x
1
x
2
. . . x
k1
tiene longitud k 1, y entonces por
hiptesis inductiva tenemos que
/
= x
k1
. . . x
2
x
1
y por consiguiente = x
k
. . . x
2
x
1
. Sea ahora una
cadena de smbolos terminales, tal que S , entonces la derivacin es S
1
S
2
1
x
2
=,
con x igual a a, b o . Por lo visto ms arriba
1
x
2
= es capica.
Una manera alternativa de enunciar las producciones de una gramtica es por el empleo de la
forma normal de Backus-Naur o BNF. En una BNF los smbolos no terminales empiezan con <" y
terminan con >". Las produccin A se expresa A ::= .
Ejemplo 3.4. Un entero es una cadena que consiste de un smbolo opcional (+ o bien ) seguido por
un entero o cadena de dgitos (del 0 al 9). La siguiente gramtica (escrita en notacin BNF) genera
todos los enteros.
< dgito > ::= 0 [ 1 [ 2 [ 3 [ 4 [ 5 [ 6 [ 7 [ 8 [ 9
< entero > ::=< entero con signo >[< entero sin signo >
< entero con signo > ::= + < entero sin signo >[ < entero sin signo >
< entero sin signo > ::=< dgito >[< dgito >< entero sin signo >
El smbolo inicial es < entero >, las otras variables son < entero con signo >, < entero sin signo >
, < dgito >, los smbolos terminales son 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, .
Por ejemplo la derivacin del entero -452 es
< entero > < entero con signo >
< entero sin signo >
< dgito >< entero sin signo >
< dgito >< dgito >< entero sin signo >
< dgito >< dgito >< dgito >
4 < dgito >< dgito >
45 < dgito >
452
Claramente el lenguaje asociado a esta gramtica es el de todas las cadenas que empiezan con +
o y sigue una sucesin de dgitos o las cadenas que son una sucesin de dgitos.
La sintaxis de algunos lenguajes de computacin de alto nivel, como Pascal, C o FORTRAN,
pueden expresarse en BNF.
3.2 Formas normales de Chomsky y Greibach
Dada una gramtica libre de contexto G es posible hallar gramticas con producciones de cierto tipo
tal que el lenguaje generado por estas gramticas sea del mismo que el generado por G.
40
Denicin 3.3. Sea G = (V, T, P, S) una CFG. Diremos que G est en la forma normal de Chomsky si
todas las producciones son de la forma
A a o A BC,
donde A, B,C V y a T. Es decir, si el lado derecho de todas las producciones es o bien un smbolo
terminal o dos variables. Diremos que Gest en la forma normal de Greibach si todas las producciones
son de la forma
A a,
donde A V, a T y V
2
. . .
k
est en P
/
si
1.
i
= X
i
si X
i
, N,
2.
i
= X
i
o
i
= si X
i
N,
3.
1
2
. . .
k
,= .
Es decir, si partimos de P
/
= / 0, para toda A en P, se agregan a P
/
las producciones A
/
donde
/
,= y
/
es cualquier combinacin que resulte de eliminar algunas variables en N de .
Observar que si S est en N, entonces es aceptado por el lenguaje original.
41
(2) Eliminar variables que no llevan a cadenas de smbolos terminales. Debemos reemplazar el
conjunto de variables originales por el conjunto V
/
que se construye con cierto nmero de iteraciones:
el primer V
/
se obtiene de agregar todas las variables que guren del lado izquierdo de producciones
del tipo A donde T
+
. Luego se itera el siguiente procedimiento hasta que se estabilice V
/
(a) el nuevo V
/
se obtiene agregando todas las variables que guren del lado izquierdo de produc-
ciones del tipo A donde , es decir cuando es una cadena donde las variables que
aparecen son de V
/
. En pseudocdigo sera
V
/
:=V
/
A : A , (T V
/
)
+
T
/
:= T
/
a T : A a, A V
/
, , (T V)
.
Es claro que el lenguaje asociado a a
es L =a
n
b
m
: 0 n, m. Sea G gramtica con una variable
S, smbolos terminales a y b y las siguientes producciones:
S aS [ aT [ bT [ ,
T bT [
entonces el lenguaje que genera G es L.
Demostracin. Primero veamos que L L(G): sea a
n
b
m
en L, si n, m > 0 usando la produccin
S aS, (n1)-veces tenemos S a
n1
S, luego usando la produccin S aT obtenemos S a
n
T,
despus usamos S bT m-veces y obtenemos S a
n
b
m
T, nalmente usando la produccin T
tenemos la derivacin S a
n
b
m
. En el caso que n = 0 y m > 0 se hace S bT b
m
T b
m
. El caso
n > 0 y m = 0 es similar. Cuando n = m = 0, hacemos S usando la produccin S .
Veamos ahora que L(G) L: observemos que si usamos una derivacin en esta gramtica que
agrega un b, entonces no se puede agregar ms un a, como (por la denicin de gramticas regulares)
los agregados de smbolos terminales slo se pueden hacer a la derecha, es claro que las as estarn
todas a la izquierda de cualquier b.
Ejemplo 3.8. Encontremos una gramtica regular G, cuyo lenguaje sea el lenguaje asociado a la
expresin regular r = (0+1)
) indica los
subconjuntos nitos de Q
.
Usaremos PDA (por sus siglas en ingls) como sinnimo de autmata con pila.
En general haremos uso de letras minsculas del comienzo del alfabeto (a, b, c, . . .) para denotar
los smbolos del alfabeto de entrada (es decir de ) y usaremos letras minsculas, pero del nal del
alfabeto (. . . , x, y, z), para denotar cadenas en . Las letras maysculas (A, B,C, . . . , X,Y, Z), denotarn
smbolos de la pila (es decir elementos de ) y las letras griegas minsculas (, , , . . .) denotarn
elementos de
.
Observacin 4.1. Debemos hacer algunos comentarios acerca de como se debe interpretar . Si
tenemos, por ejemplo, que (q, a, Z) =(p, ) esto lo debemos interpretar de la siguiente manera: si
q estado y Z cima de la pila, al aplicarle a del alfabeto de entrada, el estado del autmata cambia a
p y en la pila se produce el reemplazo de Z por , quedando el primer smbolo de como cima de la
pila. Por ejemplo si estamos en un estado q y la pila es Z
1
Z
2
Z
2
, entonces aplicar a usando la regla
(q, a, Z
1
) =(p, Z
2
Z
1
Z
2
), hace que pasemos al estado p y que la pila pase a ser Z
2
Z
1
Z
2
Z
2
Z
2
.
Los autmatas con pila permiten acciones no determinsticas, pues
(q, a, Z) =(p
1
,
1
), . . . , (p
m
,
m
)
indica la posibilidad de hacer diferentes acciones an con el mismo input. Por otro lado, tambin
estn permitidos los -movimientos, es decir
(q, , Z) =(p
1
,
1
), . . . , (p
m
,
m
)
est permitido y permite, sin ningn input, cambiar el estado y la pila.
Notemos que los DFA y NFA denidos en captulos anteriores son casos especiales de autmatas
con pila: basta olvidarse de la pila en la denicin.
Ejemplo 4.2. Describamos en lenguaje formal el autmata con pila del Ejemplo 4.1: M = (q
1
, q
2
,
0, 1, c, A,V, R, , q
1
, R, / 0). Observemos que hemos determinado que el conjunto de estados nales
es vaco. Esto se debe a que en este caso estamos interesados en el lenguaje aceptado por pila vaca y
por lo tanto los estados nales son irrelevantes. La descripcin de es
(q
1
, 0, X) =(q
1
, AX), (q
1
, 1, X) =(q
1
,VX), (q
1
, c, X) =(q
2
, X),
(q
2
, 0, A) =(q
2
, ), (q
2
, 1,V) =(q
2
, ), (q
2
, , R) =(q
2
, ),
donde X es un smbolo arbitrario de la pila. Las transiciones no descritas son (q, a, Z) = / 0.
Dada una cadena del alfabeto de entrada queremos describir formalmente la situacin del autmata
con pila despus de haberse aplicado parte de la cadena. Para ello debe registrarse, sin duda, el estado
actual del autmata y el contenido de la pila. Adems, registraremos la parte de la cadena que todava
no ha sido aplicada. Formalmente:
47
Denicin 4.2. Sea M = (Q, , , , q
0
, Z
0
, F) un PDA. Una descripcin instantnea (ID) es un triple
(q, w, ), donde q Q, w
.
Si (q, aw, Z) y (p, w, ) son dos ID, denotaremos
(q, aw, Z) (p, w, )
si (p, ) (q, a, Z). Dadas (q, w, ) y (q
/
, w
/
,
/
) descripciones instantneas, denotaremos
(q, w, )
(q
/
, w
/
,
/
)
si existen (q
1
, w
1
,
1
), . . . , (q
m
, w
m
,
m
) descripciones instantneas tales que
(q, w, ) (q
1
, w
1
,
1
) (q
m
, w
m
,
m
) (q
/
, w
/
,
/
).
Por convencin, ser aceptado (q, w, )
(q, w, ).
Las descripciones instantneas sern tiles para denir el lenguaje aceptado por un PDA.
Denicin 4.3. Sea M = (Q, , , , q
0
, Z
0
, F) un PDA. Entonces, denimos L(M) el lenguaje de M
por estado nal, como
L(M) =w
: (q
0
, w, Z
0
)
.
El lenguaje de M por pila vaca es:
N(M) =w
: (q
0
, w, Z
0
)
En la seccin 3.2 hemos visto que toda gramtica se puede reducir a una gramtica equivalente en
la forma normal de Greibach. La siguiente proposicin probar el implica de la equivalencia entre
lenguajes generados por gramticas libres de contexto y lenguajes aceptados por autmatas con pila.
Proposicin 4.1. Sea G una CFG en la forma normal de Greibach. Entonces existe M un PDA tal
que L(G) = N(M).
Demostracin. Denotemos L = L(G) y hagamos la demostracin en el caso en que no est en L.
La demostracin en el otro caso es similar y se deja a cargo del lector. G est en la forma normal de
Greibach, es decir toda produccin es de la forma A a con V
. Denamos el PDA
M = (q, T,V, , q, S, / 0),
donde (q, ) (q, a, A) si y slo si A a est en P. Observemos que en este caso los estados del
autmata no tiene importancia (siempre estamos en el mismo estado) y lo nico que importa es la
48
pila. Las operaciones elementales que hace sobre la pila claramente simulan las producciones y
una composicin de estas operaciones simula una derivacin a izquierda. De manera formal debemos
demostrar que
S w si y slo si (q, w, S)
(q, , ),
para w T
(q, , ), (5)
para w T
y V
,
entonces (q, a, Z) = / 0 para todo a .
Usaremos DPDA (por sus siglas en ingls) como sinnimo de autmata con pila determinstico.
Observemos que las transiciones de un DPDA tienen las siguientes restricciones:
1. [ (q, a, Z) [= 0 o 1.
2. Si [ (q, , Z) [> 0, entonces [ (q, a, Z) [> 0 para todo a .
Haremos algunos comentarios respecto a los DPDA
1. los lenguajes aceptados por pila vaca correspondientes a DPDA son lenguajes que tienen la
siguiente propiedad: si x y y son cadenas aceptadas y x ,= y, entonces x no puede ser prejo de
y. En particular, hay lenguajes regulares que no son aceptados por DPDA por pila vaca (por
ejemplo 0
).
2. Consideremos los lenguajes aceptados por DPDA por estado nal, en este caso este conjunto de
lenguajes contiene estrictamente a los lenguajes regulares y est contenido estrictamente en los
lenguajes aceptados por PDA. Por ejemplo, el lenguaje L = aa
R
: a 0, 1
es un lenguaje
aceptado por un PDA, pero no es posible obtenerlo como lenguaje de un DPDA.
49
4.1 Ejercicios
1. Demostrar que los enteros se pueden generar con una gramtica regular.
2. Encontrar gramticas libres de contexto que generen los siguientes conjuntos
(a) Todas las cadenas distintas de denidas sobre a, b.
(b) Cadenas denidas sobre a, b que empiecen con a.
(c) Cadenas denidas sobre a, b que terminen en ba.
(d) Cadenas denidas sobre a, b que contengan ba.
(e) Cadenas denidas sobre a, b que no terminen en ab.
(f) Enteros que no empiecen con 0 (hacerlo con BNF).
(g) Nmeros con punto otante (como 0.294, 89.0, 45.895).
(h) Nmeros exponenciales (que incluyan a los nmeros con punto otante y a otros como
6.9E4, 5E23, 7.5E-3, 4E-5).
3. Sea G la gramtica con smbolo inicial S y derivaciones
S bS [ aA [ a, A aS [ bB, B bA [ aS [ b
(donde a y b son los smbolos terminales).
(a) Demuestre, proporcionando la derivacin correspondiente, que las siguientes cadenas
pertenecen a L(G)
aaabb, bbbaaaaa, abaaabbabbaa.
(b) Probar que L(G) es el conjunto de todas las cadenas con un nmero impar de smbolos a.
4. Sea G la gramtica regular denida por las producciones
S bS [ aA [ b, A aS [ bA [ a
(donde a y b son los smbolos terminales). Demuestre que L(G) sii ,= y contiene un
nmero par de smbolos a.
5. Demuestre que el lenguaje
a
n
b
n
c
k
[ n, k N
es libre de contexto, pero no es regular.
6. Obtener un autmata nito no determinstico que acepte nicamente las cadenas generadas
por la siguiente gramtica regular G: las variables son S y C, con S como variable inicial; las
constantes son a, b y las producciones son
S bS, S aC, C bC, C b.
7. Sea G la gramtica regular denida por las producciones
S bS [ aA [ b, A aS [ bA [ a
(donde a y b son los smbolos terminales). Obtener un autmata nito no determinsticoM tal
que L(M) es el lenguaje generado por G.
50
8. Sea L
1
(respectivamente L
2
) el lenguaje generado por la gramtica del Ejercicio 3 (respectiva-
mente, Ejercicio 4). Encuentre una gramtica regular que genere el lenguaje L
1
L
2
.
9. Demuestre que el conjunto L de cadenas sobre a, b, denido por
L =x
1
x
n
[ x
1
x
n
= x
n
x
1
+b)
bb
a
construir
(a) Un autmata nito que acepte exactamente el lenguaje que denota la expresin regular.
(b) Una gramtica que genera exactamente el lenguaje que denota la expresin regular.
11. Dada la expresin regular
(a+bb)
(b
aa+b)
construir:
(a) Un autmata nito que acepte exactamente el lenguaje que denota la expresin regular.
(b) Una gramtica que genera exactamente el lenguaje que denota la expresin regular.
12. Dada la expresin regular
(ab)
(ab
aa+b)
construir:
(a) Un autmata nito que acepte exactamente el lenguaje que denota la expresin regular.
(b) Una gramtica que genera exactamente el lenguaje que denota la expresin regular.
13. Dada la expresin regular
0(0
+1)
00
1
construir
(a) Un autmata nito que acepte exactamente el lenguaje que denota la expresin regular.
(b) Una gramtica que genera exactamente el lenguaje que denota la expresin regular.
14. Probar que el lenguaje L =0
n
1
n
1
m
0
m
[ n N es libre de contexto pero no es regular.
15. Probar que el lenguaje L =1
n
0
n
1
m
0
m
[ n, m N es libre de contexto pero no es regular.
16. Dado el lenguaje L =0
n
110
n
, n 0,
(a) Probar que es libre de contexto.
(b) Encontrar la forma normal de Chomsky.
(c) Probar que no es regular.
17. Considere el lenguaje L =ab
n+2
baa
n
.
51
(a) Pruebe que L es libre de contexto.
(b) Encontrar la forma normal de Chomsky.
(c) Determine si L es regular o no. Justique su respuesta.
18. Dado el lenguaje L =110
n
110
n
, n 0,
(a) Probar que es libre de contexto.
(b) Encontrar la forma normal de Chomsky.
(c) Probar que no es regular.
52