Vous êtes sur la page 1sur 52

Introduccin a la Lgica y la Computacin

Parte III: Lenguajes y Autmatas


Autores: Alejandro Tiraboschi y Pedro Snchez Terraf
Contenidos
1 Introduccin 1
2 Lenguajes y Autmatas 3
2.1 Cadenas, alfabetos y lenguajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Sistemas de estados nitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3 Autmatas nitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Autmatas no determinsticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.1 Formalizacin de los NFA . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5 Expresiones regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.1 Teorema de Kleene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Pumping Lemma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.7 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3 Gramticas 36
3.1 Deniciones bsicas y ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2 Formas normales de Chomsky y Greibach . . . . . . . . . . . . . . . . . . . . . . . 40
3.3 Gramticas regulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4 Autmatas con pila 45
4.1 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1 Introduccin
En esta parte de la materia vamos a empezar a estudiar modelos de computacin. Es decir, modelos
tericos que aproximan el comportamiento de una computadora. Este tema se ver en ms detalle
en otras materias ms avanzadas, cuando se estudien las Mquinas de Turing que nos servirn para
denir exactamente que signica computar y cuales son sus lmites.
En esta materia estudiaremos un tipo de mquinas ms simples que las mquinas de Turing que
se llaman autmatas, y veremos que existe una relacin muy fuerte entre modelos de computacin y
lenguajes formales.
Una computadora que resuelve un problema mediante algn algoritmo puede verse en forma ab-
stracta como hablando el lenguaje {(input
1
,output
1
), . . . , (input
n
,output
n
), . . . }. Notar que podemos
pensar que este lenguaje es un conjunto de cadenas {input
1
#output
1
, . . . , input
n
#output
n
, . . . }, donde
1
# es algn smbolo que no apareza en los inputs o los outputs. Por ejemplo la funcion f (x) =x
3
puede
asociarse con el conjunto de cadenas {0#0, 1#1, 2#8, 3#9, . . . }. Es por esto que una forma de estudiar
las cosas que una computadora puede realmente computar, es investigando que lenguajes que distintos
tipos de mquinas pueden producir.
Miremos un poco mas en detalle a que nos referimos cuando decimos mquinas. De forma muy
abstracta, podemos representar una computadora simplemente con el siguiente diagrama:
CPU Memoria
donde slo diferenciamos una unidad con capacidad de procesamiento (el CPU) de una unidad con
capacidad de almacenamiento (la memoria). Nos va a interesar particularmente distinguir distintos
tipos de memoria:
CPU
Memoria Temporaria
Memoria Input
Memoria Output
Memoria de Programa
No nos interesa, en este momento, denir ms precisamente cuales son las diferencias entre los
distintos tipos de memoria, y nos alcanza con el siguiente ejemplo:
CPU
Memoria Temporaria
Memoria Input
Memoria Output
Memoria de Programa
z := 2*2
z := 2*4
x := 2
x := 8
z := x*x;
z := x*z;
x := z
f(x) = x
3
Ahora s, vamos a considerar que las mquinas que vamos a estudiar siempre tienen memoria
input, memoria output y memoria de programa (esto simplemente quiere decir que toman un input,
producen un output y siguen algn tipo de programa), pero dieren en el tipo de memoria temporaria
que pueden tener:
Autmatas de Estados Finitos (Finite State Automata): no tienen ningn tipo de memoria
temporaria.
2
Autmatas con Pila (Pushdown Automata): tienen una pila como memoria temporaria.
Mquinas de Turing (Turing Machines): tienen memoria de lectura y escritura de acceso
aleatoria.
Cada tipo de mquina tiene distinto poder de cmputo, que se va incrementando a medida que
el tipo de memoria es menos restrictivo. Como dijimos al principio, en esta materia no llegaremos a
estudiar las Mquinas de Turing, pero s veremos distinto stipos de Autmatas de Estados Finitos y
con Pila y estudiaremos sus propiedades.
2 Autmatas nitos y expresiones regulares
2.1 Cadenas, alfabetos y lenguajes
Un smbolo" es una entidad abstracta que no deniremos formalmente, as como en geometra no
denimos los puntos" y las lneas". Letras y dgitos son ejemplos de smbolos frecuentemente
usados. Una cadena o palabra es una secuencia nita de smbolos yuxtapuestos. Por ejemplo a, b y
c son smbolos y abbba, abcc y bcccc son cadenas. La longitud de una cadena w, que denotaremos
[ w [, es el nmero de smbolos que componen la cadena. Por ejemplo la cadena aabc tiene longitud
4, o en smbolos, [ w [= 4. La cadena vaca, que denotaremos , es la cadena que tiene cero smbolos,
luego [ [= 0. Es importante notar que, por ejemplo, la cadena aba es igual a la cadena aba o aba
pues es la cadena vaca y no es smbolo.
Una subcadena de una cadena es una secuencia de smbolos incluida en la cadena, por ejemplo
ab y son subcadenas de cccabccc, mientras que cb no lo es. Un prejo de una cadena w, es una sub-
cadena de w que comienza con el primer smbolo de w. Un sujo de una cadena w, es una subcadena
de w que termina con el ltimo smbolo de w. Por ejemplo la cadena abc tiene como prejos a las
cadenas , a, ab y abc, y como sujos a , c, bc y abc.
La concatenacin de dos cadenas w y x, que se denota wx, es la cadena formada escribiendo la
primera cadena seguida de la segunda, sin espacios en el medio. Por ejemplo, la concatenacin de
aaa y bca es aaabca. Observemos que la cadena vaca concatenada con otra cadena no la modica,
es decir, w = w = w.
Un alfabeto es un conjunto nito de smbolos. Un lenguaje (formal) es un conjunto de cadenas de
smbolos de un alfabeto dado. El conjunto vaco, / 0, y el conjunto , es decir el conjunto que slo
tiene la cadena vaca, son lenguajes. Observar que estos dos lenguajes son distintos, el primero no
tiene elementos, mientras que el segundo tiene un elemento.
Ejemplo 2.1. El conjunto de palindromes o capicas sobre el alfabeto 0, 1 es un lenguaje innito.
Algunos elementos de este lenguaje son , 0, 1, 00, 11, 000, 010, 101, 111.
Dado un alfabeto , denotaremos con

al lenguaje formado por todas las cadenas sobre el


alfabeto.
Ejemplo 2.2. Sea el alfabeto =a, entonces

=, a, aa, aaa, aaaa, . . .. Si =0, 1, entonces

=, 0, 1, 00, 01, 10, 11, 000, . . .


2.2 Sistemas de estados nitos
Los autmatas nitos son modelos matemticos de sistemas, con entradas y salidas discretas. El
sistema puede estar en una, entre un nmero nito, de conguraciones internas o estados". El estado
3
del sistema es la nica informacin que se debe tomar en cuenta para pasar a otro estado con una
entrada o input dado. Un buen ejemplo, que desarrollaremos ms adelante, es el mecanismo de control
de un ascensor. El mecanismo no recuerda los pedidos previos, si no solamente el piso en que est el
ascensor, la direccin de movimiento (arriba, abajo o quieto) y la coleccin de pedidos no satisfechos.
En ciencias de la computacin es posible encontrar numerosos ejemplos de sistemas de estados
nitos, y la teora de autmatas es una herramienta til para dichos sistemas. Ciertos programas tales
como editores de texto y analizadores lxicos, encontrados en la mayora de los compiladores, son a
menudo designados como sistemas de estados nitos. Por ejemplo, un analizador lxico recorre los
smbolos de un programa de computacin para localizar las cadenas de caracteres correspondientes a
identicadores, constantes numricas, palabras reservadas, etc.
Antes de denir formalmente un sistema de estados nito consideremos el siguiente ejemplo.
Ejemplo 2.3. Un hombre con un lobo, una cabra y un repollo est en la ribera izquierda de un ro.
Hay un bote que puede transportar solamente al hombre y a alguno de los otros tres. El hombre quiere
transportar al lobo, la cabra y el repollo al otro lado del ro, sin embargo si deja solos al lobo y la
cabra, el lobo devorar la cabra, y si deja solos a la cabra y el repollo, la cabra devorar al repollo. Es
posible cruzar el ro sin que el lobo coma a la cabra y sin que la cabra coma el repollo?

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) =

[ existe p F tal que q


0

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

Ejemplo 2.11. En este NFA los estados son q


0
, q
1
y q
2
. Los smbolos de input son 0, 1 y 2. El estado
inicial es q
0
y el estado nal es 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

Entonces, la tabla de transicin es:


a b
q
0
q
1
q
0
q
2
q
1
/ 0 q
0
/ 0
q
2
q
1
/ 0 / 0
Veamos cuales son las transformaciones correspondientes a un input o un -movimiento:
q
0

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, es decir L(M). Recpro-


camente, sea L(M), es decir existe p F tal que q
0

p, por lo tanto (usando nuevamente (4))


p p
/
con 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

denota las cadenas construidas por concatenacin de un nmero arbitrario de cadenas de L. L


+
es igual pero sin poner L
0
. Ntese que L
+
contiene si y slo si L lo contiene. Recordemos que en la
Seccin 2.1 denimos

, y observemos que ese conjunto coincide con el

que surge de la denicin


anterior, considerando a como un lenguaje donde las cadenas son los smbolos del alfabeto.
Ejemplo 2.19. Sea L
1
=11, 0 y L
2
=001, 10, entonces
L
1
L
2
=11001, 1110, 0001, 010.
Por otro lado,
L

1
=11, 0

=, 11, 0, 1111, 110, 011, 00, 111111, 11110, 11011, 1100, . . ..


L
+
1
es L

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

) son expresiones regulares que denotan los conjuntos RS, 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

)) +0) puede ser escrita 01

+0. Finalmente, si r es una expresin regular


denotemos r
i
a la expresin rr r (i veces).
Debemos tener mucho cuidado en no confundir cadenas con expresiones regulares y para ello
debemos aclarar debidamente a qu nos estamos reriendo. Por ejemplo la expresin regular ab
denota un conjunto cuyo nico elemento es la cadena ab.
16
Ejemplo 2.20. Los siguientes son ejemplo de expresiones regulares:
1. 00 es una expresin regular que representa 00.
2. (0+1)

denota todas las cadenas de 0s y 1s.


3. (0+1)

00(0+1)

denota todas las cadenas de 0s y 1s con al menos dos 0s consecutivos.


4. (1 +10)

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)

no tiene dos 0s consecutivos. Por otro lado, dada cualquier cadena


que comience con 1 y no tenga dos 0s consecutivos, se puede hacer una particin de la cadena
de tal forma que si un 1 no es seguido de un 0, se toma el 1 (que pertenece a (1 +10)) y si
un 1 es seguido de un 0, se toma el 10 (que pertenece a (1 +10)). Por ejemplo, 11010111 es
particionado 11010111 que pertenece a (1+10)
6
.
5. Basado en lo anterior, es claro que (0+)(1+10)

denota las cadenas de 0s y 1s que no tienen


dos 0s seguidos.
6. (0+1)

011 denota las cadenas de 0s y 1s que terminan en 001.


7. 0

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

+1. Por lo dicho anterior-


mente (respecto a los parntesis), esta expresin es en realidad ((0(1

)) +1), es decir es de la forma


r
1
+r
2
, donde r
1
= 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
`
_

Luego el autmata correspondiente a la expresin regular r


1
= 01

ser

`
_
q
3

0
`
_
q
4

`
_
q
7

`
_
q
5

1
`
_
q
6

`
_
q
8
`
_

Finalmente el autmata correspondiente a 01

+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
-
-
-
-
-
-
-
-
-
-

Figura 9: Un autmata correspondiente a la expresin regular 01

+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)

Caso (2): sea s


h
es el ltimo s
j
que es igual a q
n
(notar que h debe ser menor que l puesto que
n ,= m). Luego
q
n
= s
0

/
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

con 0 k m r. Est claro que


L(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

5. Determine si la cadena aaabbbaab es aceptada por el DFA denido por el diagrama:


`
_

a
`
_

1
-
a

b
`
_
`
_

2
-
b
-
a

6. Determine si la cadena aaababbab es aceptada por el DFA denido por el diagrama:


29
`
_

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

. Es decir, si el lado derecho de todas las producciones es un smbolo


terminal seguido de ninguna o varias variables.
Dada una gramtica G es posible hallar gramticas G
/
y G
//
en forma normal de Chomsky y
Greibach, respetivamente, tal que el lenguaje generado por G sea el mismo que el generado por G
/
o
G
//
.
En lo que resta de la seccin veremos como dada una gramtica G libre de contexto podremos
encontrar en forma algortmica una gramtica equivalente en la forma de Chomsky. El procedimiento
consta de los siguientes pasos:
1. Eliminar -producciones (A ).
2. Eliminar variables que no llevan a cadenas de smbolos terminales.
3. Eliminar smbolos (variables y terminales) que no pueden ser alcanzados.
4. Eliminar producciones unitarias (A B).
5. Forma normal de Chomsky.
Comencemos a hacer el procedimiento:
(1) Eliminar -producciones. Con este procedimiento obtendremos una gramtica con lenguaje
L(G) . Si el lenguaje original contena a , entonces al nal agregaremos la produccin S .
El procedimiento es como sigue. Primero sea N = / 0 y ahora:
(a) si A es produccin, entonces agregar A a N.
(b) Iteramos el siguiente paso hasta que N se estabilice: si A es produccin con N
+
,
entonces agregar A a N.
Es claro que el proceso (b) termina debido a que N V.
El nuevo conjunto P
/
de producciones es el siguiente: si A X
1
X
2
. . . X
k
es una produccin en P
donde X
i
V T, entonces A
1

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
/
)
+

Terminada la iteracin nuestro nuevo conjunto de variables V ser igual al ltimo V


/
. Si S no est
en V
/
, entonces es fcil ver que el lenguaje generado por G es vaco.
(3) Eliminar smbolos que no pueden ser alcanzados. Sea V
/
=S y T
/
= / 0. Iterar de la siguiente
forma hasta que V
/
y T
/
se estabilicen:
(a) si A es una produccin con A V
/
, entonces agregar a V
/
todas las variables que se en-
cuentren en y agregar a T
/
todos los smbolos no terminales que se encuentren en . En
pseudocdigo sera
V
/
:=V
/
B V : A B, A V
/
, , (T V)

T
/
:= T
/
a T : A a, A V
/
, , (T V)

La iteracin naliza puesto que V


/
V y T
/
T. Nuestros nuevos V y T sern V
/
y T
/
, respectiva-
mente, obtenidos por las iteraciones de ms arriba.
(4) Eliminar producciones unitarias. Las producciones unitarias son aquellas de la forma A B
con A, B V. El proceso de eliminar producciones unitarias es sencillo: recorremos el conjunto de
producciones y cada vez que encontramos una produccin del tipo A B la eliminamos y todas las
producciones B las cambiamos por A .
(5) Forma normal de Chomsky. En este caso suponemos que hemos completado los procedimien-
tos (1). . .(4). Si A es una produccin la longitud de A se dene como la longitud de la
cadena . Para hacer la forma normal de Chomsky procederemos de la siguiente manera:
(a) por cada smbolo terminal a se agrega una nueva variable A y una produccin A a. Ahora,
en cada produccin de longitud mayor que 1 se reemplaza cada smbolo terminal a por la nueva
variable A. Despus de hacer esto todas las producciones son del tipo A a, con a terminal o
del tipo A A
1
. . . A
n
con A
1
, . . . , A
n
variables.
(b) En cada produccin de longitud mayor que dos A A
1
A
2
. . . A
n
se reemplaza A
1
A
2
por una
nueva variable B y se agrega la produccin B A
1
A
2
. Este procedimiento se itera hasta que no
haya producciones de longitud mayor que 2. Es claro que la iteracin termina debido as que en
cada paso se disminuye la longitud mxima que pueden tener las producciones.
Ejemplo 3.5. Sea G = (V, T, P, S) con V =S, A, T =a, b y producciones
S aAS [ a A SbA [ SS [ ba
42
Ejemplo 3.6. Sea G = (V, T, P, S) con V =S, A, T =a, b y producciones
S aAS [ a A SbA [ SS [ ba
Encontrar una gramtica en la forma normal de Chomsky que genere el lenguaje L(G).
No es difcil vericar que esta gramtica no necesita que realicemos los procedimientos (1), (2),
(3) y (4). Debemos entonces aplicar el procedimiento (5):
(a) Primero agregamos una variable por cada smbolo terminal, X por a e Y por b. Tambin
agregamos las producciones X a e Y b. En las producciones de longitud mayor que
1 reemplazamos a por X y b por Y. Obtenemos entonces la gramtica G = (V, T, P, S) con
V =S, A, X,Y, T =a, b y producciones
S XAS [ a A SYX [ SS [ YX
X a T b
(b) Reemplazamos en S XAS a XA por U (una nueva variable) y agregamos la produccin U
XA. Reemplazamos en A SYX a SY por W (una nueva variable) y agregamos la produccin
W SY. Obtenemos la gramtica G = (V, T, P, S) con V = S, A, X,Y,U,W, T = a, b y
producciones
S US [ a A WX [ SS [ YX
X a T b
U XA W SY
La formal normal de Greibach se puede obtener a partir de la forma normal de Chomsky, pero es
mucho ms complicado hacerlo y queda fuera de los alcances de este escrito.
3.3 Gramticas regulares
Los lenguajes denidos por autmatas nitos o, lo que es lo mismo, por expresiones regulares, tam-
bin pueden ser vistos como los lenguajes que generan ciertas gramticas, llamadas gramticas regu-
lares.
Denicin 3.4. Sea G una gramtica tal que toda produccin es de la forma
A aB o bien A ,
donde A, B son variables y a es terminal. Entonces diremos que G es una gramtica regular.
El lenguaje generado por un una gramtica regular ser llamado lenguaje regular.
Observemos primero que podemos considerar permitidas, en las gramticas regulares, las produc-
ciones del tipo A a pues se pueden obtener por composicin de las permitidas en la denicin.
Una observacin importante es que cualquier cadena con smbolos terminales y no terminales que se
obtiene por derivacin a partir del smbolo inicial, tiene a lo sumo una variable y sta se ubica en el
extremo derecho de la cadena. Esto implica que cuando se dice que se usa ciertas producciones para
realizar una derivacin, no haya ambigedad en la forma en que hay que aplicarla.
43
Ejemplo 3.7. Encontremos una gramtica que genere el lenguaje asociado a la expresin regular a

.
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)

00. Primero observemos que el lenguaje asociado a r es el de todas las


cadenas de 0s y 1s que terminan en 00. Una gramtica que genera el lenguaje L(r) es la siguiente:
los smbolos terminales sern 0, 1, las variables sern S, T y las producciones sern
S 0S [ 1S [ 0T, T 0U, U .
Demostracin. Veamos primero que L(r) L(G): sea x = a
1
a
2
a
k
00 una cadena en L(r), es decir
que los a
i
son 0 o 1 (en forma arbitraria). Si a
1
es 0, hacemos la derivacin S 0S, si es 1 hacemos
S 1S, es decir que tenemos S a
1
S, en forma anloga obtenemos la derivacin
S a
1
S a
1
a
2
S a
1
a
2
a
k
S.
Si a a
1
a
2
a
k
S le aplicamos sucesivamente las producciones S 0T y T 0, obtenemos S
a
1
a
2
a
k
S a
1
a
2
a
k
0T a
1
a
2
a
k
00.
Veamos ahora que L(G) L(r): es claro que si S x una derivacin con x compuesta de smbolos
terminales, entonces la ltima produccin que se us fue T 0, y entonces la penltima fue S 0T.
Como las variables siempre estn en el extremo derecho, la derivacin es S x
/
S x
/
0T x
/
00 =x.
Es decir x L(r).
Los ejemplos anteriores se pueden generalizar con el siguiente teorema, cuyo enunciado es un
tanto complicado, pero que puede entenderse bien en casos concretos.
Teorema 3.1. Sea r una expresin regular sobre una alfabeto , entonces existe H una gramtica
regular con smbolos terminales en tal que L(r) = L(H). Ms explcitamente: sea un alfabeto.
(1) L(/ 0) = / 0 es L(G) donde G es una gramtica sin producciones.
(2) L() =es L(G) donde G tiene una nica produccin S .
44
(3) Para cada a en , L(a) =a es L(G) donde G tiene producciones S Ua y T .
Supongamos que r y r
/
son expresiones regulares tales que L(r) = L(G), L(r
/
) = L(G
/
)con G =
(V, , P, S) y G
/
= (V
/
, , P
/
, S
/
). Supongamos adems, sin perdida de generalidad, que V V
/
= / 0, es
decir que no tienen variables comunes. Debido a la denicin de gramtica regular, el conjunto P es
de la forma:
C
k
c
k
D
k
U
t
,
para k = 1, . . . , m, t = 1, . . . , s. Entonces:
(4) L(r +r
/
) es L(H), donde H tiene como variables V =V V
/
, la variable inicial igual a S y con
producciones P
H
= PP
/
S : si S
/
.
(5) L(rr
/
) = L(H), donde H es la gramtica regular con variables V
H
= V V
/
, variable inicial
igual a S y con producciones P
H
= P
(1)
P
/
, donde P
(1)
es igual a:
C
k
c
k
D
k
C
k
c
k
S
/
: si D
k
P
para k = 1, . . . , m.
(6) L(r

) = L(H) , donde H es la gramtica regular con variables V


H
= V,variable inicial S y
producciones:
P
H
= PS C
k
c
k
S : si D
k
P
para k = 1, . . . , m.
Demostracin. La demostracin es bastante directa, pero a su vez es tediosa. La dejamos como
ejercicio para el lector.
Ejercicio 3.1. Repetir los Ejemplos 3.7 y 3.8 usando el mtodo del Teorema 3.1.
Como ya mencionamos, la recproca del Teorema 3.1 tambin es verdadera, es decir, dado un
lenguaje generado por una gramtica regular G , existe una expresin regular r que denota el mismo
lenguaje. En realidad esto lo probaremos de manera indirecta: es sencillo construir a partir de G un
autmata no determinstico M con el mismo lenguaje que M. Luego par obtener r usamos el teorema
de Kleene.
Proposicin 3.2. Sea G = (V, , P, S) una gramtica regular, entonces existe M = (Q, , , q
0
, F) un
NFA (sin -mov) tal que L(M) = L(G). Explcitamente, Q = V, q
0
= S, B (A, a) sii A aB y
F =A V : A .
La demostracin es muy sencilla y se deja a cargo del lector.
4 Autmatas con pila
Hemos visto que los lenguajes que generan las expresiones regulares o, equivalentemente, los lengua-
jes regulares se pueden obtener a partir de autmatas nitos, y viceversa. En forma anloga, a los
lenguajes libres de contexto le corresponden los autmatas con pila. En esta seccin veremos la
denicin de los autmatas con pila, los lenguajes generados por ellos y algunos ejemplos. No pro-
baremos, por estar fuera de los alcances de este texto, la equivalencia entre los lenguajes libres de
contexto y los lenguajes aceptados por los autmatas con pila.
45
Un autmata con pila (PDA) es esencialmente un autmata nito que posee control sobre una pila,
es decir una lista de la cual solo se puede leer, poner o sacar el primer elemento. Dado el estado
actual del autmata y el primer elemento de la pila, un smbolo de input nos llevar (posiblemente
en forma no determinstica) el estado siguiente y a la modicacin que se debe hacer en el primer
elemento de la pila. Diremos que una cadena es aceptada por pila vaca por el PDA si cuando la
aplicamos obtenemos una pila vaca. Diremos que una cadena es aceptada por estado nal por el
PDA si lleva el estado inicial a uno nal. Los lenguajes aceptados por los autmatas con pila, tantos
los aceptados por pila vaca o por estado nal, son los mismos que los aceptados por las gramticas
libres de contexto e incluyen estrictamente a los lenguajes regulares.
Ejemplo 4.1. El lenguaje L =wcw
R
: w (0+1)

y c smbolo es un lenguaje no regular. Esto es


fcil de ver usando el Pumping Lemma. Sin embargo, es un lenguaje libre de contexto generado por
la gramtica S 0S0 [ 1S1 [ c. Mostraremos a continuacin un autmata con pila cuyo lenguaje por
pila vaca es L. Los smbolos de input sern, obviamente, 0, 1 y c. Consideremos dos estados q
1
y q
2
y que en la pila se pueden apilar tres tipos de objetos rojos (R), verdes (V) y azules (A). La idea para
denir el autmata es la siguiente: la pila comenzar con un solo elemento R para indicar, justamente,
el comienzo de la pila. Ahora, pensemos a la pila como una memoria donde guardaremos la forma
de la primera porcin de la palabra hasta c: haremos que cada vez que el input sea 0, se agregue a la
pila una A y cada vez que sea 1 se agregue una V. Estos inputs no cambian el estado inicial. Cuando
ingresa el input c, cambiamos de estado para indicar que tenemos que empezar a leer el nal de la
palabra. Ahora deberemos desapilar convenientemente, de tal forma que si despus de c viene w
R
,
la pila quede vaca. Por ejemplo, supongamos que w termina en 1, entonces, despus de aplicar c,
estamos en el segundo estado y la pila tiene en la parte superior una V. Esto indica que la ltima
letra de w es un 1 y por lo tanto, para tener esperanza de que la palabra sea aceptada, la primera letra
despus de c debera ser un 1. Por lo tanto decimos que si el input es 1 y la pila muestra V, se retira V.
Anlogamente si en la parte superior hay un A y el input es 0, se retira A. Siguiendo as, si el sujo de
c es w
R
, llegaremos a una pila con un solo elemento, el R. El ltimo movimiento, un -movimiento,
se dene de la siguiente manera: si estamos en el segundo estado y la pila muestra el R, se saca el R.
Resumiendo: el autmata tendr las siguientes reglas:
1. Comenzamos en el estado q
1
y con R en la pila.
2. En el caso en que el estado es q
1
el autmata acta de la siguiente manera. Si se ingresa el
smbolo de input 0, agregamos a la pila una A. Si el smbolo de input es 1 agregamos una V. En
ambos caso el estado permanece q
1
. Si la entrada es c pasamos al estado q
2
y la pila no cambia.
3. En el caso en que el estado es q
2
el autmata acta de la siguiente manera. Si se ingresa el
smbolo de input 0 y el primero de la pila es A, se retira el primer elemento de la pila (es decir
la A). Si el smbolo de input es 1 y el primero de la pila es V, se retira el primer elemento de la
pila. Si el primer elemento de la pila es R, se lo retira sin esperar input. En todos los casos el
estado contina siendo q
2
.
4. En las situaciones no contempladas en los items anteriores, el autmata no hace nada.
Haciendo algunos ejemplos con cadenas particulares es fcil convencerse que las nicas cadenas acep-
tadas por pila vaca son las de la forma wcw
R
.
Denicin 4.1. Un autmata con pila es una 7-upla M = (Q, , , , q
0
, Z
0
, F), en donde
1. Q es un conjunto nito de estados;
46
2. es un alfabeto, el alfabeto de entrada;
3. es un alfabeto, el alfabeto de la pila;
4. q
0
Q, el estado inicial;
5. Z
0
, el smbolo inicial de la pila;
6. F Q, los estados nales;
7. : Q( ) P
f
(Q

), la funcin de transicin, donde P


f
(Q

) 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
)

(p, , ) para algn p F,

.
El lenguaje de M por pila vaca es:
N(M) =w

: (q
0
, w, Z
0
)

(p, , ) para algn p Q.


Como ya hemos mencionado el conjunto de los lenguajes aceptados por estado nal es equivalente
al conjunto de los lenguajes aceptados por pila vaca. La demostracin de este hecho sigue el espritu
de las demostraciones que hemos visto en teora de lenguajes, dado un lenguaje denido de cierta
manera, construimos en forma algortmica un autmata que acepta ese lenguaje.
Recordemos que si M es un NFA, puede asociarse trivialmente M
/
un PDA, que esencialmente es
el mismo M con una pila que no se usa. Es claro entonces, por las respectivas deniciones, que el
lenguaje de M coincide con el lenguaje de M
/
por estado nal.
Ejemplo 4.3. L =aa
R
: a 0, 1

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

. En realidad es ms sencillo demostrar


S w si y slo si (q, w, S)

(q, , ), (5)
para w T

y V

y se deja como ejercicio para el lector. Claramente, esto implica lo anterior


haciendo = .
Finalizaremos la seccin dando la denicin de autmatas con pila determinsticos.
Denicin 4.4. Un autmata con pila determinstico es una 7-upla M = (Q, , , , q
0
, Z
0
, F), en
donde
1. Q es un conjunto nito de estados;
2. es un alfabeto, el alfabeto de entrada;
3. es un alfabeto, el alfabeto de la pila;
4. q
0
Q, el estado inicial;
5. Z
0
, el smbolo inicial de la pila;
6. F Q, los estados nales;
7. : Q() / 0(Q

), la funcin de transicin, tal que si (q, , Z) Q

,
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

(es decir las cadenas capicas), no es un lenguaje regular.


10. Dada la expresin regular
b(a

+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

Vous aimerez peut-être aussi