Está en la página 1de 109

Teora de Automatas y Lenguajes Formales

(para Informaticos)
Luis M. Pardo Domingo Gomez
30 de diciembre de 2009
2

Indice general
1. Chomsky. Expresiones Regulares 7
1.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Lenguajes Formales y Monoides . . . . . . . . . . . . . . . . . . . . . 10
1.2.1. Operaciones Elementales con Lenguajes . . . . . . . . . . . . 12
1.2.2. Sistemas de Transicion . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Gramaticas Formales . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3.1. Sistema de Transicion Asociado a una Gramatica. . . . . . . 14
1.4. Jerarqua de Chomsky . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.5. Sistemas de Thue: Problemas de Palabra . . . . . . . . . . . . . . . . 17
1.6. Expresiones Regulares . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.1. Las Nociones Basicas . . . . . . . . . . . . . . . . . . . . . . . 20
1.6.2. Derivacion de Expresiones Regulares . . . . . . . . . . . . . . 22
1.6.3. De REs a RGs: Metodo de Derivaciones . . . . . . . . . . . 24
1.6.4. Ecuaciones Lineales. Lema de Arden . . . . . . . . . . . . . . 28
1.7. Equivalencia entre REs y RGs . . . . . . . . . . . . . . . . . . . . . 30
1.8. Problemas y Cuestiones. . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.8.1. Cuestiones Relativas a Lenguajes y Gramaticas. . . . . . . . 31
1.8.2. Cuestiones Relativas a Expresiones Regulares. . . . . . . . . . 32
1.8.3. Problemas Relativos a Lenguajes Formales y Gramaticas . . 32
1.8.4. Problemas Relativos a Expresiones Regulares . . . . . . . . . 34
2. Aut omatas Finitos 37
2.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2. La Nocion de Automata . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.2.1. Sistema de Transicion de un automata : . . . . . . . . . . . . 38
2.2.2. Automatas con/sin Transiciones. . . . . . . . . . . . . . . 42
2.2.3. Determinismo e Indeterminismo en Automatas . . . . . . . . 44
2.3. Lenguajes Regulares y Automatas. . . . . . . . . . . . . . . . . . . . 45
2.3.1. Teorema de Analisis de Kleene . . . . . . . . . . . . . . . . . 45
2.3.2. Teorema de Sntesis de Kleene . . . . . . . . . . . . . . . . . 46
2.4. Lenguajes que no son regulares . . . . . . . . . . . . . . . . . . . . . 49
2.4.1. Un ejemplo clave : El Palndromo. . . . . . . . . . . . . . . . 50
2.5. Minimizacion de Automatas Deterministas . . . . . . . . . . . . . . . 51
2.6. Cuestiones y Problemas. . . . . . . . . . . . . . . . . . . . . . . . . . 55
2.6.1. Cuestiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3
4

INDICE GENERAL
2.6.2. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3. Libres de Contexto 61
3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.2.

Arboles de Derivacion de una Gramatica . . . . . . . . . . . . . . . . 63
3.2.1. Un algoritmo para la vacuidad. . . . . . . . . . . . . . . . . . 64
3.3. Formas Normales de Gramaticas. . . . . . . . . . . . . . . . . . . . . 65
3.3.1. Eliminacion de Smbolos In utiles o Inaccesibles . . . . . . . . 66
3.3.2. Transformacion en Gramaticas Propias. . . . . . . . . . . . . 69
3.3.3. El Problema de Palabra para Gramaticas Libres de Contexto es Decidible. 74
3.3.4. Transformacion a Formal Normal de Chomsky. . . . . . . . . 75
3.3.5. Forma Normal de Greibach . . . . . . . . . . . . . . . . . . . 77
3.4. Automatas con Pila. . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.4.1. Nocion de Automatas con Pila. . . . . . . . . . . . . . . . . . 77
3.4.2. Sistema de Transicion Asociado a un Automata con Pila. . . 80
3.4.3. Lenguaje Aceptado por un Automata con Pila. . . . . . . . . 85
3.4.4. Equivalencia con Gramaticas Libres de Contexto. . . . . . . . 90
3.5. Propiedades Basicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.6. Cuestiones y Problemas . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.6.1. Cuestiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.6.2. Problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
A. Generadores de Analisis sintactico 101
A.1. Una introduccion al SableCC . . . . . . . . . . . . . . . . . . . . . . 101
A.2. Una introduccion a ANTLR . . . . . . . . . . . . . . . . . . . . . . . 105
Prologo
Lo que sigue son una evolucion de notas comenzadas a impartir en el curso 2007/08,
para la asignatura Teora de Automatas y Lenguajes Formales. La evolucion de
los contenidos ha sido siempre en funcion de las diversas promociones, su formacion
previa y su capacidad de adquirir nuevos conocimientos. Estos apuntes representan
una version denitiva de nuestra experiencia. Nuestro cuidado ha sido conseguir una
adquisicion de conocimientos teoricos, su aplicacion con una formacion de caracter
matematico para que el alumno desarrolle una actitud rigurosa ante problemas de
esta y otras materias.
Esto es de gran importancia en una materia como los automatas y los lenguajes for-
males, considerados como uno de los fundamentos de las ciencias de computacion.
Dada la escasa formacion previa en matematicas de los alumnos que llegan a la
Univerisdad espa nola, se ha pretendido mantener el maximo de formalismo en de-
niciones y enunciados pero renunciando a las demostraciones en terminos formales
completos, y limitando estas a aquellos casos en los que la prueba se basa en la exis-
tencia de un algoritmo. El objetivo del curso es que el alumno comprenda, aplique
y asimile una serie de herramientas matematicas que se han desarrollado para la
teora de automatas y lenguajes formales..
Estos apuntes estan pensados para aprender a resolver problemas. Seg un nuestro
punto de vista, la mejor forma para conseguir este objetivo es a traves de adquirir
experiencia en la resolucion de problemas. Viendo como la idea que permite resolver
problemas sencillos, puede ser aplicada con modicaciones a problemas complejos y
no es necesario atacar estos directamente partiendo de cero. De esta forma, se con-
sigue un conocimiento practico de la materia y ademas, como un extra, un dominio
de la teora mas completo.
Aunque utilizaremos un formalismo matematico, nuestro planteamiento es construc-
tivo, dejando que las demostraciones rutinarias como ejercicio. Estos apuntes estan
dirigidos a futuros ingenieros, por lo que intentaremos que los algoritmos presentados
sean ecientes y adecuados para implementacion en un programa informatico. Esto
sin menoscabo de que dichos algoritmos provengan de ideas sencillas anteriormente
adquiridas en fases mas tempranas del curso y plasmadas en estos apuntes.
La teora de la computacion es un area abstracta de la ingeniera informatica. Por
ello incluimos ejemplos, cuestiones y problemas que van de preguntas triviales hasta
retos que requeriran utilizar todo lo aprendido con logica.
Los autores han utilizado este libro para una asignatura cuatrimestral, y nuestro
objetivo ha sido que los alumnos conocieran los lenguajes regulares y los libres
5
6

INDICE GENERAL
de contexto. A partir de ellos, pudieran generar automatas que reconocieran estos
lenguajes y los algoritmos que permiten pasar de automatas a lenguajes regulares
o lenguajes libres de contexto. La ultima parte trata sobre dos clases de lenguajes
especiales LL y LR.

Estos tienen una importancia especial en parsing y en la
Syntax Directed Translation.
Las referencias bibliogracas tampoco pretender ser exhaustivas, aunque s contienen
lo esencial de la literatura en estos temas.
Captulo 1
Jerarqua de Chomsky.
Expresiones Regulares.
1.1. Introduccion
La primera disquisicion importante al jar un modelo de calculo hace referencia
a los fundamentos de la comunicacion y el lenguaje. Para ser precisos todo calculo
algortmico consiste fundamentalmente en un proceso de comunicacion : algo es emi-
tido (input), manipulado (transmision) y respondido (output). Es una comunicacion
entre hombre y maquina o una comunicacion entre seres humanos. Pero el princi-
pio de esta discusion debe orientarse hacia lo que es susceptible de ser comunicado
(tanto el input como el output son objetos comunicables).
Nos vamos directamente al Crculo de Viena, donde la participacion de Hahn fue
central y al que Godel se incorpora (pensemos en el origen moravo de K. Godel). Este
inuyente conjunto de matematicos y logicos se ve roto por el nazismo en pedazos
incomponibles, pero inuyo muy notablemente la losofa y la logica de primeros de
siglo (hasta nales de los 30). Tomemos la disquisicion inicial : que es susceptible
de ser comunicado?.
Una respuesta razonable (emprica en mi aproximacion) es que es comunicable todo
aquello expresable en un alfabeto nito. Mi aproximacion emprica se basa en la
experiencia : no conozco ning un caso de informacion emitida o recibida por m ,
con contenido semantico no ambiguo, que no haya sido expresada sobre un alfabeto
nito.
A partir de esta idea consideraremos como un conjunto nito que denominaremos
alfabeto y por

el conjunto de todas las palabras expresables sobre este alfabeto


nito.
Dos precisiones importantes : Lo comunicado (el signicante) es una palabra sobre
un alfabeto nito, pero el signicado (la componente semantica de la comunicacion)
no es tan claramente nito. Tomemos un ejemplo de las matematicas. Sea D
1
al
conjunto de n umeros reales dado por :
(x, y) R
2
: x
2
+y
2
1 0
El tal conjunto no es nito, ni contable. Podra quiza discutirse su existencia (uno
de los problemas mas difciles de la losofa de las matematicas es determinar el
7
8 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


signicado de existencia : existe lo que es expresable esto es seguro, pero, existe
lo que no puedo expresar?
1
). Suponiendo que R exista, yo puedo expresar un
conjunto cuyo cardinal no es numerable mediante una expresion sobre un alfabeto
nito. Por lo tanto, los signcantes caminan sobre una digitalizacion nita, sobre un
alfabeto nito, no as los signicados. No olvidemos, nalmente, que la modelizacion
continua de la semantica es una de las corrientes de la moda ultima; pero tampoco
olvidemos que la semantica (y la Semiotica) cuentan con los elementos adicionales
de la subjetividad que son bastante difusos.
La segunda consideracion es que nosotros usaremos el lenguaje de la Teora de la
Recursividad y no el de la Ling ustica. Para referencias al asunto vease, por ejemplo,
[Marcus, 67]. En este caso, la terminologa se modica del modo siguiente : el alfabeto
se denomina vocabulario, las palabras son lo mismo, y el lenguaje es una cantidad,
posiblemente innita, de palabras sobre el vocabulario. Pero vayamos a nuestra
denicion :
Denici on 1 (Notaciones) Sea un conjunto nito que llamaremos alfabeto.
Una palabra sobre es una lista nita de smbolos de . Podemos formalmente
identicar las listas x = x
1
x
n
de smbolos (x
i
) con los elementos del
producto cartesiano
n
. Denotaremos por [ x [= n la longitud de la palabra
x
1
x
n
.
El conjunto de todas las palabras sobre el alfabeto se denotar a mediante

y podemos identicarlo con la uni on disjunta

=

_
nN

n
Los subconjuntos L de

se denominan lenguajes.
Insistamos en la notacion x
1
x
n
para expresar la palabra (x
1
, . . . , x
n
)
n
. Los
) y las , pudieran ser (y suelen ser) elementos del alfabeto.
Notese por ejemplo la identicacion obvia, cuando = a es un alfabeto de una
sola palabra, entre

y N.
Nota 2 La unica observaci on relevante es que si es un conjunto nito

es
un conjunto numerable. No podemos expresar mucho m as all a que una cantidad
numerable de signicantes (a lo sumo). La verdad, no es gran cosa : una sonata de
Mozart no es sino una triste palabra de unas pocas numerables posibles.
El considerar alfabetos numerables no cambiara gran cosa, lo que se puede expre-
sar sobre un alfabeto numerable es expresable sobre un alfabeto nito (por razones
obvias). El punto duro comienza cuando uno se pregunta si es posible la comunica-
ci on (hombrem aquina u hombrehombre) a traves de lenguajes sobre alfabetos no
numerables.
1
Esto sera lo maximo que nos introduciremos por los oscuros caminos de la losofa. Paul Gordan,
gran matematico del siglo XIX, amonesto a David Hilbert con su famosa frase Das ist keine
Matematik, Das ist Theologie por demostrar la existencia de objetos, sin mostrar esos objetos.
1.1. INTRODUCCI

ON 9
Otros ejemplos, El Quijote , entendido como el libro completo es, para nuestro
contexto una palabra sobre el alfabeto del castellano, i.e. a, b, . . . , z, A, B, . . . , Z,
?,

A, !, ,

, .

, .,

.., donde las , y . son los obvios, . es el punto-y-aparte


y son los espacios entre palabras.
Uno podra muy bien argumentar porque el Otello de Shakespeare no es una pa-
labra del castellano y la respuesta es la obvia : es una palabra sobre el alfabeto
castellano; pero el castellano no es solamente un alfabeto, sino un lenguaje (

en el que se incluyen solamente las palabras formadas por sucesiones de smbolos


del Diccionario de la Real Academia de la Lengua (ver automatas nitos para mas
disquisiciones). El Otello pertenece al lenguaje ingles I

. Modulo traduccio-
nes (que no juegan por ahora) una version original de la Ilada, el Coran, El Idiota o
los Vedas no perteneceran a

por usar diferentes alfabetos (el griego, el arabe, el


cirlico o el sanscrito). Por lo tanto, variaran tanto los alfabetos como los conjuntos
llamados lenguajes, teniendo la comunicacion occidental en com un el alfabeto. Sin
embargo, las traducciones muestran que no hay mucho que a nadir aunque se cambie
el alfabeto.
Esto muestra que alfabetos complicados o sencillos no tienen relacion con la simpli-
cidad del lenguaje. Aprovecharemos este momento para introducir un lenguaje que
volvera a aparecer mas adelante.
Ejemplo 1 Sea = A, C, G, T , representando las cuatro bases que confor-
man el ADN, a saber: Adenina, Guanina, Citosina y Timina. Las cadenas de ADN
forman un lenguaje que contiene la informaci on genetica y esta empaquetada de esta
forma para su posible transmisi on hereditaria. Curiosamente, este lenguaje es casi
universal y se aplica a todos los seres vivos menos en excepciones contadas dentro
de casos contados.
Cada cadena de ADN guarda la codicaci on de varias protenas. Dentro del ADN, ca-
da secuencia de tres bases de las mencionadas corresponden a un aminoacido concre-
to. Esto se conoce como el c odigo genetico. Por ejemplo, la combinaci on ATG repre-
senta el inicio de la secuencia y el nal puede ser representada por TGA, TAG, TAA.
2
Primeras concreciones sobre lo computable :
Un algoritmo es usado para resolver un problema. La entrada del algoritmo son los
datos del problema que, convenientemente manipulados, aportan una solucion.
Por lo tanto, todo algoritmo eval ua una correspondencia
f : D S
donde D son los datos y S las soluciones. Como ya queda claro de lo discutido
arriba (o eso espero), este que escribe solo puede discernir datos y soluciones
como signicantes de algo (el algo ya no corresponde a la disquisicion). Luego
Denici on 3 Un problema es una correspondencia f : D S entre dos
conjuntos. Resolver un problema es evaluar f.
2
El ADN siempre se ha considerado el lenguaje de la vida y parece que se cumple la maxima
de Galileo: La Naturaleza es un libro escrito con el lenguaje de las matematicas.
10 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Un problema f : D S es susceptible de ser resuelto solamente si D y S son
lenguajes expresables sobre un alfabeto nito. Uniendo alfabetos, uno podra
suponer que son lenguajes sobre un alfabeto com un .
Un problema es, por tanto, evaluar una correspondencia f :

. Los
elementos del dominio (los datos) se suelen llamar inputs (tambien son sus-
ceptibles de ser llamados inputs aquellos x

tales que no existe f(x)). Los


elementos del rango de f son las soluciones y se denominan outputs.
Entre los muchos problemas distinguimos una subclase de gran importancia : los
problemas decisionales. Se trata de evaluar funciones parcialmente denidas f :

0, 1. Claramente si D(f) es el dominio de denicion de f y denimos


L := f
1
(1), la funcion f es del tipo restriccion al dominio de f de la funcion
caracterstica de L. Los tales lenguajes L se denominaran lenguajes recursivamen-
te enumerables cuando su funcion caracterstica sea parcialmente computable, i.e.
cuando exista f :

0, 1 computable tal que :


L D(f),

L
[
D(f)
= f.
Para perlar la nocion de funcion computable y problema resoluble por un algoritmo
debemos avanzar a un un largo trecho. Tratemos de precisar como han de entenderse
las manipulaciones de objetos de

que sirven para evaluar correspondencias f.


1.2. Lenguajes Formales y Monoides
La operacion esencial sobre

es la concatenacion (tambien llamada adjuncion) de


palabras :
:

(x, y) x y
es decir, si x = x
1
x
n
e y = y
1
y
m
, entonces
x y = x
1
x
n
y
1
y
m
.
Denotemos por

la palabra vaca (para distinguirla del lenguaje vaco ,


usando la notacion estandar de Teora de Conjuntos).
Lema 4 (

, ) es un monoide (semigrupo unitario), donde es el elemento neutro,


y la longitud dene un morsmo de monoides entre

y el conjunto de los n umero


naturales. El monoide

es abeliano si y solamente si el cardinal de es uno.


Demostracion. Ejercicio obvio.
Lema 5 Si es un alfabeto nito, el conjunto

es numerable, esto es, es biyectable


con el conjunto N de los n umeros naturales.
1.2. LENGUAJES FORMALES Y MONOIDES 11
Demostracion. Para dar una prueba de este enunciado basta con jar un buen
orden en

. En ejercicio razonable consiste en denir el buen orden basado en


lexicograco + grado que dene la biyeccion. Recuerdese que el orden lexicograco
es el orden usual del diccionario, i.e., basado en establecer un orden en el alfabeto
. Aqu el termino grado hace referencia a la longitud de palabras. Es decir, sea
un orden en :
:=
1

2

r
.
Denimos para x = x
1
. . . x
n
, y = y
1
. . . y
m

la relacion de orden siguiente:


x y :=
_

_
o bien n = [x[ [y[ = m,
o bien [x[ = [y[ = n = m,
_
_
_
k n = m, i k 1,
x
i
= y
i
,
x
k
y
k
_
_
_
o bien x = y.
Esta relacion de orden es un buen orden en

y permite una identicacion (bi-


yeccion) entre

y N, asociando a cada elemento de

, el n umero de elementos
menores que el:
0

1
1

2
2

1
r + 1

2
r + 2

Operaciones Basicas con palabras. Ademas de la concatenacion de palabras,
podemos destacar las siguientes:
Potencia de Palabras. Se dene recursivamente a partir de la concatenacion.
As, dada una palabra

y un n umero natural n N, denimos la


potencia
n
, mediante:
Si n = 0, entonces
0
= ,
Para n 1, denimos

n
:=
n1
.
Reverso de una Palabra: Se trata de una biyeccion
R
:

,
dada mediante:
Si = ,
R
= ,
12 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Si = x
1
x
n

, con x
i
, denimos

R
:= x
n
x
n1
x
1

.
Un lenguaje que tendra cierta relevancia en nuestras discusiones posteriores es el
Palndromo T 0, 1

y que viene dado por la siguiente igualdad:


T := x 0, 1

: x
R
= x.
1.2.1. Operaciones Elementales con Lenguajes
Vamos a considerar las siguientes operaciones basicas con lenguajes formales. Ten-
dremos jado un alfabeto ,
Uni on de Lenguajes: De la manera obvia como subconjuntos. Dados L
1
, L
2

, denimos:
L
1
L
2
:= x

: [x L
1
] [x L
2
].
Concatenaci on de Lenguajes: Dados L
1
, L
2

, denimos su concatenacion:
L
1
L
2
:= x
1
x
2

: x
1
L
1
, x
2
L
2
.
Potencia de Lenguajes: Se dene recursivamente.
Si n = 0, L
0
= .
Si n 1, L
n
:= L (L
n1
).
Nota 6 Observese que L
1
L
2
no es, en general, igual a L
2
L
1
. Tampoco es cierto
que si L
1
L
2
= L
2
L
1
entonces se tiene L
1
= L
2
. El ejemplo m as sencillo de esto
es = a, L
1
= a, L
2
= aa.
Proposici on 7 (Distributivas) Con las anteriores notaciones, se tienen las si-
guientes propiedades para lenguajes L
1
, L
2
y L
3
contenidos en

:
L
1
(L
2
L
3
) = L
1
L
2
L
1
L
3
.
(L
1
L
2
) L
3
= L
1
L
3
L
2
L
3
.
Otras opeaciones importantes entre lenguajes:
Clausura transitiva o monoide generado por un lenguaje: Dado un lenguaje
L

denimos el monoide L

que genera mediante la igualdad siguiente:


L

:=
_
nN
L
n
.
Clausura positiva de un lenguaje:Dado un lenguaje L

denimos la clau-
sura positiva L
+
que genera mediante la igualdad siguiente:
L
+
:=
_
n1
L
n
.
Nota 8 Es obvio que L

es la uni on (disjunta si , L) entre L


+
y .
1.3. GRAM

ATICAS FORMALES 13
1.2.2. Sistemas de Transicion
Una de las ideas esenciales en un proceso algortmico es que se van dando pasos
hasta obtener un resultado. Lo del n umero nito de pasos lo dejamos para un poco
despues. Surge as la nocion de Sistema de Transicion, Sistema Deductivo, Sistema
de Producciones, Sistema de semiThue etc.
Denici on 9 Llamaremos sistema de transici on a todo par (S, ), donde S es un
conjunto (que se denomina espacio de conguraciones) y SS es una relaci on.
Una sucesi on de computaci on en el sistema de transicion (S, ) es simplemente una
sucesion nita de elementos de S :
s
1
, . . . , s
n
donde (s
i
, s
i+1
) (se dice que la conguracion s
i+1
es deducible de s
i
en un
solo paso deductivo). Normalmente, uno preere escribir s
i
s
i+1
en lugar de
(s
i
, s
i+1
) . Con ello, una computacion en el sistema de transicion (S, ) es
simplemente :
s
1
s
n
Se dice que el sistema de transicion es determinstico si cada s S tiene un solo
sucesor a lo sumo y es indeterminista en caso contrario.
Denici on 10 Dada una conguraci on s S, diremos que una conguraci on s

S
es deducible de s y lo denotaremos por s s

, si existe una sucesi on de computaci on


s = s
1
s
n
= s

La relacion que debe existir entre los datos de un problema y su resolucion es de


ser deducible para alg un sistema de transicion. En cada caso claricaremos los sis-
temas de transicion esenciales del modelo de calculo introducido (es decir, la accion
dinamica del modelo denido).
Nota 11 N otese la obvia analoga entre sistemas de transici on y grafos (potencial-
mente con un n umero innito de nodos). De hecho, un grafo orientado es simple-
mente un sistema de transici on con un conjunto de conguraciones nito.
1.3. Gramaticas Formales
A. Thue
3
fue un matematico noruego que en 1914 introdujo la nocion de sistema
de de reescritura. El interes de Thue era el analisis de los problemas de palabra para
grupos y semi-grupos. Habra que esperar a los trabajos de Noam Chomsky a nales
de los a nos 50 para tener una estructuracion de los sistemas de transicion en el
formato de gramaticas formales que, inicialmente, intentaba utilizar para modelizar
los lenguajes naturales.
3
A. Thue. Probleme uber Veranderungen von Zichereihen nach gegebenen. Regeln. Skr. Videnk.
Selks. Kristiania I, 10 (1914).
14 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Denici on 12 (Gramaticas Formales) Una gram atica formal es una cuaterna
G = (V, , Q
0
, P), donde:
V es un conjunto nito llamado alfabeto de smbolos no terminales o, simple-
mente, alfabeto de variables.
es otro conjunto nito, que verica V = y se suele denominar alfabeto
de smbolos terminales.
Q
0
V es una variable distinguida que se denomina smbolo inicial.
P (V )

(V )

es un conjunto nito llamado conjunto de producciones


(o, simplemente, sistema de reescritura).
1.3.1. Sistema de Transicion Asociado a una Gramatica.
Para poder denir la dinamica asociada a una gramatica, necesitamos asociarle un
sistema de transicion.
Denici on 13 Sea G = (V, , Q
0
, P) una gram atica, deniremos el sistema de
transici on asociado (S
G
,
G
) dado por las propiedades siguientes:
El espacio de conguraciones ser a dado por:
S
G
:= (V )

.
Dadas dos conguraciones s
1
, s
2
S
G
, decimos que s
1

G
s
2
si se verica la
siguiente propiedad:
x, y, , S
G
= (V )

, tales que
s
1
:= x y, s
2
:= x y, (, ) P.
Ejemplo 2 Consideremos la gram atica: G = (V, , q, P), donde
V := Q
0
, := a, b, , P := (q, aq), (q, ).
El sistema de transici on tiene por conguraciones S := q, a, b

y un ejemplo de
una computaci on sera:
aaQ
0
bb aaaQ
0
bb aaaaQ
0
bb aaaabb = aaaabb.
N otese que las dos primeras veces hemos usado la regla de reescritura (Q
0
, aQ
0
) y
la ultima vez hemos usado (Q
0
, ).
Notaci on 14 Por analoga con el sistema de transici on, se suelen usar la notaci on
A B en lugar de (A, B) P, para indicar una producci on. Y, en el caso de tener
m as de una producci on que comience en el mismo objeto, se suele usar A B [ C,
en lugar de escribir A B, A C.
1.3. GRAM

ATICAS FORMALES 15
A :
a B
B :
C
D :
F
E
E :
F
Figura 1.1: Representacion A:aB, B:C*, D:F [ E, E:F?
Notaci on BNF. Es un modelo de notacion que recuerda mas los manuales de
programacion. En el, se introducen los siguientes cambios:
Las variables X V se representan mediante X).
Los smbolos terminales (del alfabeto ) no son modicados.
El smbolo asociado a las producciones es reemplazado por =.
As, la gramatica descrita en el Ejemplo 2 anterior vendra dada por:
V = Q), = a, b,
y las producciones estaran dadas por las reglas:
Q) = aQ)
Q) = .
Independiente de las notaciones, el elemento clave es la nocion de lenguaje generado
por una gramatica.
Notaci on EBNF. Esta notacion intenta es extension de la notacion BNF. Es un
estandar ISO-1497 y es utilizada (con algunas modicaciones) en los generadores de
compiladores, como ANTLR
Basicamente, a nade funcionalidad a la notacion BNF, permitiendo repeticiones o
diferentes opciones. Varios ejemplos estan dados en la gura encabezando la pagina
(notese la diferencia para los smbolos terminales y no terminales). Estas son las
principales cambios con respecto a la notacion BNF,
Las variables X V no son modicadas.
Los smbolos terminales (del alfabeto ) se representan entre comillas simples.
El smbolo asociado a las producciones es remplazado por :.
Se introducen nuevos smbolos para representar repeticiones (ninguna, una
o mas repeticiones) + (una repeticion al menos).
16 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


? indica que la expresion puede ocurrir o no.
Se deja como ejercicio al alumno hallar la expresion de la gramatica
Q) := aQ)
Q) := .
con notacion EBNF.
Denici on 15 (Lenguaje Generado por una gramatica) Sea G := (V, , Q
0
, P)
una gram atica. Llamaremos lenguaje generado por la gram atica G (y lo denotaremos
usualmente mediante L(G)) al lenguaje L(G)

dado por:
L(G) := x

: Q
0

G
x,
es decir , a las palabras sobre el alfabeto de smbolos terminales alcanzables (dentro
del sistema de transici on asociado) desde el smbolo inicial de la gram atica.
1.4. Jerarqua de Chomsky
Chomsky comienza hablando de la modelizacion de los lenguajes (formales) mediante
gramaticas en su trabajo [Chomsky, 57]. El uso de maquinas con un n umero nito
de estados (automatas) ya aparece en [ChomskyMiller, 57].
Es en sus trabajos del a no 59 (ca.[Chomsky, 59a] y [Chomsky, 59b]) donde aparece
la clasicacion que discutiremos en las paginas que siguen.
Denici on 16 (Gramaticas Regulares o de Tipo 3) Deniremos las gram ati-
cas con producciones lineales del modo siguiente:
Llamaremos gram atica lineal por la izquierda a toda gram atica G = (V, , Q
0
, P)
tal que todas las producciones de P son de uno de los dos tipos siguientes:
A a, donde A V y a .
A aB, donde A, B V y a .
Llamaremos gram atica lineal por la derecha a toda gram atica G = (V, , Q
0
, P)
tal que todas las producciones de P son de uno de los dos tipos siguientes:
A a, donde A V y a .
A Ba, donde A, B V y a .
Llamaremos gramaticas regulares a las gram aticas lineales por la izquierda
o lineales por la derecha.
La dualidad (y simetra entre los automatas lineales a izquierda o lineales a derecha
es obvia y nos quedaremos solamente con las gramaticas lineales a izquierda.
Denici on 17 (Lenguajes Regulares) Un lenguaje L

se denomina un len-
guaje regular si existe una gram atica regular G = (V, , Q
0
, P) que lo genera.
1.5. SISTEMAS DE THUE: PROBLEMAS DE PALABRA 17
Por denicion una produccion puede ser una transformacion del tipo aAb w,
donde a, b (

V )

, A V . a las palabras a y b se las denomina contexto de la


produccion. As, una produccion libre de contexto es una produccion que no tiene
contexto, esto es, de la forma A w, con A V .
Denici on 18 (Gramaticas libres de contexto o de Tipo 2) Llamaremos gra-
m atica libre de contexto a toda gram atica G = (V, , Q
0
, P) tal que todas las pro-
ducciones de P son del tipo siguiente:
A , donde A V y ( V )

.
Un lenguaje libre de contexto es un lenguaje generado por una gram atica libre de
contexto.
Denici on 19 (Gramaticas sensibles al contexto o de Tipo 1) Llamaremos
gram atica libre de contexto a toda gram atica G = (V, , Q
0
, P) tal que todas las
producciones de P son del tipo siguiente:
A , donde A V y , ( V )

, ( V )

.
Un lenguaje sensible al contexto es un lenguaje generado por una gram atica sen-
sible al contexto.
Denici on 20 (Gramaticas formales, sistemas de semiThue o de Tipo 0)
Llamaremos
gram atica formal (o sistema de semiThue o sistema de reescritura) a toda gram ati-
ca G = (V, , Q
0
, P) que admite todo tipo de producciones, esto es, sus producciones
son de la forma
, donde , ( V )

.
1.5. Sistemas de Thue: Problemas de Palabra
Las Gramaticas de Tipo 0 son tambien llamadas Sistemas de SemiThue (vease,
por ejemplo, la referencia en [Davis-Weyuker, 94]) en honor del matematico que las
introdujo. Su objetivo era analizar el siguiente tipo de problemas.
Problema de Palabra para Sistemas de SemiThue :
Dado un sistema de semiThue (, R) y dados x, y

, decidir si x
R
y
Problema de Palabra en Semigrupos: Dado R un sistema de semiThue sobre
un alfabeto nito , consideramos la estructura de semigrupo con unidad de

(monoide). Dos palabras x, y

se dicen relacionadas mediante R, si x


R
y en
el sistema de transicion asociado (i.e. si y es deducible de x).
Un sistema de Thue es un sistema de semiThue en el que R verica la siguiente
propiedad adicional :
x, y

, (x, y) R (y, x) R
18 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Entonces, R dene una relacion de equivalencia
R
en

y podemos considerar el
conjunto cociente :
S(, R) :=

/
R
Claramente se tiene que S(, R) es un semigrupo, cuyos elementos son las clases [x]
denidas por elementos x

.
El problema de la palabra para semigrupos se dene mediante :
Dados un sistema de Thue (, R) y dados x, y

, decidir si [x] = [y]


Nota 21 Esta versi on del problema de la palabra est a relacionada directamente con
un h abito muy com un en matem aticas. Supongamos que quiero trabajar con un se-
migrupo S, no necesariamente conmutativo. Para describirlo, todos pondramos un
conjunto de generadores (digamos
1
, . . . ,
n
). Sabidos los generadores, sabemos
que los elementos son todos de la forma :

s(1)

s(m)
donde s : 1, . . . , m 1, . . . , n es una aplicaci on, con m N. El problema de
una representaci on tal cual esta es que uno no puede hacer cosas tan elementales
como comparar dos elementos dados (observese que nadie dijo que las cosas conmu-
ten ni que la representaci on sea unica). Por lo tanto, uno debera dar, al menos,
las relaciones entre los generadores (que son inevitables). Estas relaciones tienen la
pinta

r
i
(1)

r
i
(m
i
)
=
s
i
(1)

s
i
(k
i
)
para 1 i N, siendo r
i
y k
i
aplicaciones con rango 1, . . . , n. Nos conformamos
con que s olo haya un n umero nito de relaciones entre los generadores. Claramente,
tenemos un sistema de reescritura sobre el alfabeto = 1, . . . , n, siendo
R := (r
i
(1) r
i
(m
i
), s
i
(1) s
i
(k
i
)) : 1 i N
Es obvio que nuestro semigrupo S inicial es justamente S(, R). Luego el problema
de las palabras viene a decir si somos capaces de identicar o distinguir dos elementos
de un semigrupo dado por sus generadores y sus relaciones. La respuesta , dada por
E. Post
4
en 1947 es que uno no debera representar as los semigrupos porque el
problema de la palabra es indecidible (luego, insoluble).
El problema de palabra en grupos El problema anterior se sostica un poco mas,
si en lugar de semigrupo hablamos de grupos. Un grupo nitamente generado (no
necesariamente abeliano) no es sino un semigrupo asociado a un sistema de Thue
(, R) que, ademas verica la propiedad siguiente :
existe una aplicacion : tal que :
a , (a(a), ) R)
donde es la palabra vaca. Escribamos G(, R) por el grupo cociente

/R
El problema de la palabra es tambien : Dado un sistema de grupo (, R) y dadas
x, y

, decidir si [x] = [y] en G(, R).


4
E. Post. Recursive unsolvability of a Problem of Thue. J. of Symb. Logic 12 (1947) 111.
1.6. EXPRESIONES REGULARES 19
Teorema 22 (Post
5
, 47) Los problemas de palabras para sistemas de semiThue,
semigrupos o para grupos son insolubles algortmicamente.
Como a un no sabemos lo que es un algoritmo, dejemos la demostracion de este
resultado como Ejercicio (cf. [Weihrauch, 97]). Notese que los problemas de palabras
de los sistemas de producciones tambien pueden interpretarse como una primera
aproximacion al problema de lo deducible en una teora formal. Pero eso es otro
asunto.
Problema de correspondencia de Post. Se trata de otro problema basado en los
sistemas de reescritura y que resulta, tambien insoluble algortmicamente (cf. E.
Post
6
en 1946 ).
Consideremos un sistema de semiThue (, R) y sus elementos como piezas de do-
mino :
R := (x
1
, y
1
), . . . , (x
n
, y
n
)
y las piezas
T
i
:=[
x
i
y
i
[
El problema esta en decidir si existe una secuencia de chas
T
s(1)
T
s(n)
tal que lo que aparece escrito en las partes superiores de los dominos coincide con
lo escrito debajo. Por ejemplo, sea R (Post preere Pairing Lists i.e. PL)
R := (a, aa), (bb, b), (a, bb)
para el alfabeto := a, b. La siguiente es una solucion :
[
a
aa
[[
a
bb
[[
bb
b
[[
bb
b
[
Teorema 23 (Post, 46) El problema de la correspondencia es insoluble por ning un
metodo algortmico.
Este problema insoluble tambien queda como ejercicio y la prueba puede verse en el
Weihrauch o en el Davis & Weyuker , entre otros.
1.6. Expresiones Regulares
El problema que se pretende resolver mediante la introduccion de las expresiones
regulares es el de obtener alg un tipo de descriptores para los lenguajes generados
por las gramaticas regulares (las gramaticas de Tipo 3 o Regulares en la jerarqua
de Chomsky), ademas de utilizarlos en la notacion EBNF.
6
E. Post . A variant of a recursively unsolvable problem.Bull. A.M.S. 52 (1946) 264268.
20 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


1.6.1. Las Nociones Basicas
Siendo este un curso de lenguajes formales,utilizaremos la metodologa propia del
area. Empezaremos deniendo las reglas de formacion (la gramatica) de las expresio-
nes regulares. A continuacion las dotaremos de signicado (la semantica) y veremos
los recursos que nos ofrece esta nueva herramienta.
Denici on 24 Sea un alfabeto nito. Llamaremos expresi on regular sobre el al-
fabeto a toda palabra sobre el alfabeto
1
denido por la siguiente igualdad:

1
:= , , +, , (, ),

,
conforme a las reglas siguientes:
Las siguientes son expresiones regulares:
El smbolo es una expresi on regular,
el smbolo es una expresi on regular,
y el smbolo a es una expresi on regular, para cualquier smbolo a en el
alfabeto ,
Si y son expresiones regulares, tambien lo son las construidas mediante
las reglas siguientes:
( +) es una expresi on regular,
( ) es una expresi on regular,
()

es una expresi on regular,


Nota 25 Por comodidad de la escritura (y s olo en el caso de que no haya ninguna
posibilidad de que aparezcan ambig uedades) se suprimen parentesis y smbolos de
producto ().
Ejemplo 3 Tomemos el alfabeto := a, b. Son expresiones regulares las secuen-
cias de smbolos (palabras) siguientes:
a a +b

a, ab

ba, . . .
No ser an expresiones regulares cosas del tipo
7
:
(+b

, . . .
7
No creo que sea tan necesario poner demasiados ejemplos, la agudeza del alumno le permi-
tira evitar ejemplos patologicos
1.6. EXPRESIONES REGULARES 21
La Semantica de las expresiones regulares. A cada objeto sintactico, como lo
es una expresion regular, conviene a nadirle el mecanismo de asignacion de signicado
(semantica). En el caso de expresiones regulares asignaremos un unico signicado a
cada expresion en la forma de el lenguaje formal que describe.
Denici on 26 Sea un alfabeto nito. A cada expresi on regular sobre el alfabeto
le asignaremos un lenguaje formal L()

conforme a las siguientes reglas:


En el caso de la sea una palabra de longitud 1, seguiremos las reglas siguien-
tes:
Si = , entonces L() = ,
Si = , entonces L() = ,
Si = a , entonces L() = a,
Aplicando las reglas recursivas, si y son dos expresiones regulares sobre el
alfabeto usaremos las reglas siguientes:
L( +) = L() L(),
L( ) = L() L(),
L(

) = L()

.
Tambien mencionamos que el operador tiene preferencia sobre y este sobre +.
Ejemplo 4 A modo de ejemplo, sea := 0

10

la expresi on regular sobre el alfabeto


:= 0, 1. Entonces,
L(0

10

) = L(0)

L(1) L(0)

= 0
m
10
n
: n, m N.
Denici on 27 Diremos que dos expresiones regulares y son tautol ogicamente
equivalentes (o, simplemente, equivalentes) si se verica:
L() = L().
Escribamos para indicar equivalencia tautol ogica.
Algunas de las propiedades basicas de la asignacion semantica de lenguajes a ex-
presiones regulares se resumen en la siguiente Proposicion, cuya demostracion es
completamente obvia.
Proposici on 28 (Propiedades Basicas) Sea un alfabeto nito, se verican las
siguientes propiedades para expresiones regulares , , sobre :
1. Asociativas.
( ) ( ) , + ( +) = ( +) +.
22 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


2. Conmutativa (s olo para +)
8
:
+ +.
3. Elementos Neutros:
+ , , .
4. Idempotencia:
+ .
5. Distributivas:
( +) + .
( +) + .
6. Invariantes para

:

.
7. La notaci on
+
:


+
.
8.

= +
+
9. Relaci on de

con la suma:
( +)

.
1.6.2. Derivacion de Expresiones Regulares
En esta Seccion dedicaremos alg un tiempo a jar una de las operaciones basicas en
el tratamiento de expresiones regulares: la derivacion.
Denici on 29 Sea un alfabeto nito, a un smbolo del alfabeto, y una ex-
presi on regular sobre el alfabeto Llamaremos derivada de con respecto al smbolo
a la expresi on regular

a
denida mediante la regla recursiva siguiente:
Para expresiones regulares de longitud 1, tenemos las deniciones siguientes:

a
= ,

a
= ,
b
a
= , b , b ,= a.
a
a
= .
Si y son dos expresiones regulares sobre , deniremos:

( +)
a
=

a
+

a
.
8
Aunque la insistencia sea innecesaria, es com un olvidar que 2 3 no es igual que 3 2. Cosas de
malos habitos.
1.6. EXPRESIONES REGULARES 23

( )
a
=

a
+t()

a
,
donde t() es la funci on dada por la identidad siguiente:
t() :=
_
si L()
en caso contrario

()

a
=
()
a

.
Nota 30 La derivada de una expresi on regular con respecto a un smbolo de un
alfabeto nito es, claramente, una derivada parcial y, por tanto, est a perfectamente
descrita mediante el smbolo

a
. Sin embargo, el smbolo parece poner nerviosos
a ciertos autores, por lo que tambien es costumbre (solamente entre los nerviosos)
usar el smbolo menos correcto (pero menos enervante) D
a
(). Dejaremos que los
alumnos reescriban la denici on anterior con esta nueva notaci on. De ahora en
adelante usaremos D
a
().
La propiedad fundamental por la cual derivar es una accion util, viene dada por la
siguiente Proposicion (cuya prueba omitiremos por obvia).
Proposici on 31 Con las notaciones anteriores, para cada expresi on regular sobre
un alfabeto , la derivada D
a
() es una expresi on regular que verica la siguiente
propiedad:
L(D
a
()) =

: a L().
Demostracion. Como pista para la demostracion, digamos que sale de manera obvia
a traves de la denicion recursiva de expresiones regulares.
Una identicacion mas clara de la relacion de una palabra con sus derivadas viene
dada por la siguiente Proposicion (que resume la regla de Leibnitz para polinomios
homogeneos multivariados).
Proposici on 32 (Regla de Leibnitz para Expresiones Regulares) Dada una
expresi on regular sobre un alfabeto nito , supongamos que = a
1
, . . . , a
n
.
Entonces,
a
1
D
a
1
() + +a
n
D
an
() +t(),
donde t() es la funci on denida anteriormente.
Demostracion. Mediante la proposicion anterior, basta con vericara que las pa-
labras en L() son de los tipos (obvios) siguientes: o empiezan por alg un smbolo
de (y, por tanto, estan en a
1
D
a
1
()) o es la palabra vaca (y queda sumida en la
expresion t()). El caso restante es que no haya ninguna palabra en L() lo cual
tambien queda expresado por la identidad y por t().
24 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


1.6.3. De REs a RGs: Metodo de Derivaciones
En esta Seccion demostraremos que el lenguaje descrito por una expresion regular
es un lenguaje regular, es decir, que existe una gramatica regular que lo genera.
Mas a un, daremos un algoritmo que transforma expresiones regulares en gramati-
cas regulares respetando los lenguajes que describen/generan: es el Metodo de las
Derivaciones.
Lema 33 Sea L
1
y L
2
dos lenguajes sobre el alfabeto generados respectivamente
por gram aticas G
1
= (V
1
, , q
1
, P
1
) y G
2
= (V
2
, , q
2
, P
2
), entonces L
1
L
2
es tam-
bien un lenguaje generado por una gram atica. La gram atica que genera la uni on es
una nueva gram atica G = (V, , q
0
, P) dada por las reglas siguientes:
1. Al precio de renombrar las variables, podemos suponer que V
1
V
2
= (es
decir, G
1
, G
2
no poseen smbolos no terminales comunes) y P
1
P
2
= .
2. Introducimos una nueva variable q
0
, V
1
V
2
.
3. Finalmente, denimos V := V
1
V
2
q
0
.
4. Y denimos P := P
1
P
2
q
0
q
1
[ q
2
.
Demostracion. Con esta denicion de la nueva gramatica G es un mero ejercicio
de demostracion por induccion en el n umero de pasos de calculo.
Lema 34 En el caso de uni on nita L = L
1
L
m
, el Lema anterior se pue-
de extender de la forma obvia. Por tanto, la uni on nita de lenguajes generados
por gram aticas (resp. regulares) es un lenguaje generado por una gram atica (resp.
regulares).
Lema 35 Sea L

un lenguaje sobre el alfabeto generado por una gram atica


(regular) G := (V, , q
0
, P). Sea a un smbolo del alfabeto. Entonces, la siguiente
gram atica G
a
= (V
a
, , q
a
, P
a
) genera el lenguaje a L:
Sea q
a
una nueva variable (no presente en V ) y denamos V
a
:= V q
a
.
Denamos P
a
:= P q
a
aq
0
.
Demostracion. De nuevo un mero ejercicio de demostracion por induccion. Es
importante se nalar que si la gramatica G es regular, la nueva gramatica tambien es
regular.
1.6. EXPRESIONES REGULARES 25
C omo no construir la gramatica.
9
Combinando la Proposicion 31 con los le-
mas 33 y 34, uno pensara en un argumento inductivo para generar un lenguaje dado
por una expresion regular a partir de sus derivadas. La idea, grosso modo, sera
la siguiente:
Sea L() un lenguaje dado por una expresion regular sobre un alfabeto , su-
pongamos que = a
1
, . . . , a
n
. entonces, la Regla de Leibnitz para expresiones
regulares nos da la siguiente identidad:
L() = a
1
L(D
a
1
()) a
n
L(D
an
()) t().
A partir de esta identidad, uno pretende ver un arbol entre expresiones regulares y
podra tratar de argumentar como sigue:
Supongamos dadas gramaticas G
1
, . . . , G
n
que generan (respectivamente) los
lenguajes L(D
a
1
()), . . . , L(D
an
()).
Utilizado el Lema 34, uno podra construir gramaticas G

1
, . . . , G

n
de tal modo
que G

i
es la gramatica que genera el lenguaje a
i
L(D
a
i
()).
Finalmente, utilizando el Lema 33 uno concluira exhibiendo la gramatica que
genera el lenguaje L() a traves de la identidad dada por la Regla de Leibnitz
(Proposicion 31).
El problema en esta forma de pensamiento es la gradacion de las gramaticas. En
esta propuesta hay implcitamente una suposicion de que las expresiones regulares
asociadas a las derivadas son mas peque nas que las expresion regular original. El
concepto de mas peque no es inevitable para poder dar un argumento recursivo con
esta construccion. Sin embargo, la intuicion sobre las propiedades de las derivadas o
debe confundirnos. La derivada de una expresion regular puede ser mas grande (o
de mayor grado) que la expresion original, debido justamente al papel de logaritmo
neperiano del operador

. Veamos algunos ejemplos:
Ejemplo 5 Sea = a, b y consideremos la expresi on regular a

. Conside-
ramos las derivadas D
a
(a

) = a

, D
b
(a

) = . Tendremos, por Leibnitz,


a

= L(a

) = a L(a

) + +.
Claramente, la inducci on pretendida nos dice que para hallar la gram atica asociada
a la expresi on a

necesitamos calcular previamente la gramatica asociada


a la expresi on a

!. La respuesta a este dilema en este caso, sera la gram atica


siguiente:
Dado que L(a

) escribamos la producci on q ,
Dado que D
a
(a

) ,= , , escribamos la producci on q aq.


Notese que, en este ejemplo, hemos identicado la variable q con la expresion regular
a

y, hemos escrito la produccion q aq porque D


a
(a

) = a

.
9
Suscitado por conversaciones habidas en el Aula.
26 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Ejemplo 6 En el anterior ejemplo, la expresi on regular obtenida tras derivar no
crece con respecto a la expresi on regular original (en todo caso, se estabiliza). Pero
es posible que se produzca un crecimiento (al menos en la longitud como palabra) y
eso se muestra a traves del ejemplo (abc)

de una expresi on regular sobre el alfabeto


= a, b, c. Al derivar observamos:
D
a
((abc)

) = bc(abc)

,
cuya longitud es mayor que la longitud de la expresi on regular original.
Para resolver este problema acudiremos al analisis de las derivadas sucesivas de una
expresion regular.
Denici on 36 (Derivadas sucesivas de una expresi on regular) Sea = a
1
, . . . , a
n

un alfabeto nito,

una palabra sobre el alfabeto y una expresi on regular.


Deniremos la derivada D

() mediante el proceso siguiente:


Si = es la palabra vaca, D

() = .
Si [[ = 1 (es una palabra de longitud 1) y, por tanto, = a
i
, denimos
D

() = D
a
i
(), conforme a la denici on de derivada anterior.
Si [[ = n 2 (es una palabra de longitud n) y, por tanto, existe a
i
y
existe
1

, con [
1
[ = n 1, tal que
= a
i

1
,
denimos
D

() = D
a
i
(D

1
()),
conforme a la denici on recursiva para palabras de longitud n 1.
Nota 37 De nuevo la intuici on puede hacer estragos, n otese que no hay conmu-
tatividad de las derivadas (como s ocurra en el caso de las derivadas parciales
habituales). Es decir, D
ab
,= D
ba
. Por poner un ejemplo, consideremos la expresi on
= aa

bb

. Tendremos,
D
a
() = a

bb

, D
b
() = .
Por tanto,
D
ba
() = D
b
(D
a
()) = D
b
(a

bb

) = b

,
mientras que
D
ab
() = D
a
(D
b
()) = D
a
() = .
El resultado crucial es el siguiente:
Proposici on 38 Sea una expresi on regular sobre un alfabeto nito y sea Der()
el conjunto de todas las derivadas sucesivas de con respecto a palabras en

. Esto
es,
Der() := :

, = D

().
Entonces, Der() es un conjunto nito.
1.6. EXPRESIONES REGULARES 27
Demostracion. Se demostrara por induccion en la denicion recursiva de la expre-
sion regular.
Nuestro proposito es construir una estructura de grafo con pesos asociado al conjunto
de todas las derivadas de la expresion regular. Esto va a constituir la gramatica
buscada.
Proposici on 39 El algoritmo siguiente transforma toda expresi on regular en una
gram atica nita G que genera el lenguaje L() descrito por la expresi on. En parti-
cular, los lenguajes descritos por expresiones regulares son lenguajes regulares.
Demostracion. La idea principal para realizar este algoritmo es la Regla de Leibnitz,
combinando las gramaticas con los Lemas 33 y 34.
Consideremos el siguiente algoritmo:
begin
Input: Una expresi on regular sobre un alfabeto nito
Hallar todos los elementos del conjunto Der() := D

() :

.
Denir un conjunto nito V de variables, biyetable al conjunto Der(). Sea
q V un elemento de ese conjunto de variables.
Denir una biyeccion E : Der() V , tal que E() = Q
0
.
Denir P
1
:= 1 y
P
2
:=
_
q , si L()
, en caso contrario
while P
2
,= P
1
do
P
1
:= P
2
Para cada Der() do
Para cada a do
Hallar := D
a
(), p := E() y q := E() en V .
Si L(), hacer P
2
:= P
2
q a.
Si ,= , , hacer P
2
:= P
2
q ap.
next a
od
next
od
od
Output: La lista [V, , Q
0
, P
2
].
end
28 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


1.6.4. Ecuaciones Lineales. Lema de Arden
La ecuaciones lineales en los lenguajes regulares juegan un papel muy importante.
Estas nos posibilitaran probar que las palabras generadas por una gramatica regular
forman un lenguaje dado por una expresion regular. Empecemos con la denicion.
Denici on 40 Llamaremos sistema de ecuaciones lineales en expresiones regulares
a toda ecuaci on del tipo siguiente:
_
_
_
X
1
.
.
.
X
n
_
_
_ =
_
_
_

1,1

1,n
.
.
.
.
.
.
.
.
.

n,1

n,n
_
_
_
_
_
_
X
1
.
.
.
X
n
_
_
_+
_
_
_

1
.
.
.

n
_
_
_, (1.1)
donde los
i,j
y los
k
son expresiones regulares sobre un alfabeto .
Una solucion de uno de tales sistemas de ecuaciones es una lista (
1
, . . . ,
n
) de
expresiones regulares sobre el mismo alfabeto, tales que

i

i,1

1
+ +
i,n

n
+
i
,
donde es la igualdad entre los lenguajes que describen (i.e. la igualdad tautologica
de las expresiones regulares).
El objetivo de esta Subseccion es la discusion del metodo obvio de resolucion de este
tipo de ecuaciones lineales. La clave para poder establecer lo obvio es una clasico
resultado de Arden:
Denici on 41 Se denomina ecuaci on lineal fundamental en expresiones regulares
a la ecuaci on lineal en una variable X siguiente:
X = X +,
donde y son expresiones regulares sobre un alfabeto nito .
Lema 42 (Lema de Arden) Dada la ecuaci on fundamental siguiente:
X = X +,
donde , son expresiones regulares sobre un alfabeto . Se verican las propiedades
siguiente:
1. La ecuaci on fundamental anterior posee una soluci on unica si y solamente si
, L().
2. La expresi on regular

es siempre soluci on de la ecuaci on fundamental


anterior.
3. Si L(), para cualquier expresi on regular , la expresi on

( + ) es
una soluci on de la ecuaci on fundamental
1.6. EXPRESIONES REGULARES 29
Demostracion. Aunque no se pretende dar una demostracion completa del Lema,
al menos se nalaremos los hechos fundamentales.
El alumno puede ver facilmente que cualquier expresion regular que sea solucion
debe contener al lenguaje L(

). Otra observacion trivial es que cualquier palabra


del lenguaje generado por una solucion debe de estar en el lenguaje generado por
o es la concatenacion de dos palabras, la primera en el lenguaje generado por y la
segunda en el lenguaje generado por X.
Tambien notese que si es una expresion regular, se tiene que
L(

) = L()
+
.
Es decir,


+
. Ahora bien, notese que L(

) = L(
+
) si y solamente si
L().
Del mismo modo, consideremos una expresion regular cualquiera, tendremos:

( +) +
+
+ +
+
(
+
+) +
+

+
+
.
Por su parte,

(+) =

. Esto nos da inmediatamente que si


+
o si = tenemos la equivalencia.
Este simple Lema es la base para el algoritmo obvio de sustitucion, es decir, eligiendo
una variable y sustituyendola en las demas ecuaciones. Formalmente, esto se expresa
de la siguiente manera.
Proposici on 43 Toda ecuaci on lineal en expresiones regulares del tipo de la De-
nici on 39 posee soluci on, que es una lista de expresiones regulares sobre el mismo
alfabeto.
Demostracion. El algoritmo se divide en las dos fases obvias: triangulacion/reduc-
cion (a traves del Lema de Arden) y levantamiento (invirtiendo las expresiones ya
despejadas). Los detalles del algoritmo se dejan como ejercicio al alumno.
Triangulaci on: Seguiremos la notacion 1.1 y procederemos utilizando induc-
cion. El caso n = 1 se resuelve mediante el Lema de Arden. Para el caso n > 1,
usaremos un doble paso:
Despejar. Podemos despejar X
n
en la ultima ecuacion, mediante la ex-
presion siguiente:
X
n
:=

n,n
R
n
, (1.2)
donde R
n
:=

n1
j=1

n,j
X
j
+
n
.
Sustituir. Podemos sustituir la expresion anterior en el resto de las ecua-
ciones obteniendo un nuevo sistema de (n1) ecuaciones en (n1) varia-
bles. Este sistema viene dado, obviamente, por las expresiones siguientes
para 1 i n 1:
X
i
:=
_
_
n1

j=1
_

i,j
+
i,n

n,n

n,j
_
X
j
_
_
+
_

i
+

n,n

n
_
.
30 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Levantamiento. Una vez llegamos al caso n = 1, se obtiene una expresion
regular valida para X
1
y se procede a levantar el resto de las variables usando
las expresiones obtenidas en la fase de despejado (expresiones (1.2)).
1.7. Equivalencia entre REs y RGs
Comenzaremos asociando a cada gramatica regular G = (V, , q, P) un sistema de
ecuaciones lineales en expresiones regulares mediante la regla siguiente:
Supongamos V = q
0
, . . . , q
n
es el conjunto de los smbolos no termina-
les, que supondremos de cardinal n + 1. Denamos un conjunto de variables
X
0
, . . . , X
n
con el mismo cardinal y con la asignacion q
i
X
i
como biyec-
cion.
Denamos para cada i, 0 i n, la expresion regular
i
mediante la cons-
truccion siguiente. Consideremos todas las producciones que comienzan en la
variable q
i
y terminan en elementos de . Supongamos que tales pro-
ducciones sean
q
i
a
1
[ . . . [ a
r
.
Denimos
10

i
:= a
1
+. . . +a
r
.
Si no hubiera ninguna produccion del tipo q
i
a , deniremos

i
:= .
Para cada i y para cada j, deniremos el coeciente
i,j
del modo siguiente.
Consideremos todas las producciones que comienzan en el smbolo no terminal
q
i
e involucran al smbolo no terminal q
j
. Supongamos que tales producciones
sean:
q
i
a
1
q
j
[ [ a
r
q
j
,
con a
k
. Entonces deniremos

i,j
:= a
1
+ +a
r
.
Si no hubiera ninguna de tales producciones, deniremos
i,j
:= .
Denici on 44 (Sistema asociado a una gramatica) Dada una gram atica G =
(V, , q, P) llamaremos sistema asociado a G y lo denotaremos por o(G) al sistema:
o(G) :=
_

_
_
_
_
X
0
.
.
.
X
n
_
_
_ =
_
_
_

0,1

0,n
.
.
.
.
.
.
.
.
.

n,0

n,n
_
_
_
_
_
_
X
0
.
.
.
X
n
_
_
_+
_
_
_

0
.
.
.

n
_
_
_
_

_
,
dado por las anteriores reglas de construcci on.
10
Note el lector que alg un ai puede ser .
1.8. PROBLEMAS Y CUESTIONES. 31
Proposici on 45 Con las anteriores notaciones, sea (
0
, . . . ,
n
) una soluci on del
sistema S(G) asociado a una gram atica G. Entonces, L(
0
) es el lenguaje generado
por la gram atica G.
Demostracion. La idea de la demostracion es que estamos asociando una expresion
regular a cada variable. La variable X
i
es la expresion regular de las palabras que
se pueden generar a traves de derivaciones empezando por la variable q
i
. Por esa
razon la solucion de nuestro problema es encontrar X
0
. A partir de esta idea, la
demostracion se realiza por induccion.
Teorema 46 Los lenguajes regulares son los descritos por las expresiones regulares.
Es decir, todo lenguaje descrito por una expresi on regular es el lenguaje generado
por alguna gram atica regular y, recprocamente, todo lenguaje generado por alguna
gram atica regular puede ser descrito por alguna expresi on regular.
Demostracion. Basta con combinar los algoritmos descritos en las Proposiciones
44 y 38.
1.8. Problemas y Cuestiones.
1.8.1. Cuestiones Relativas a Lenguajes y Gramaticas.
Cuesti on 1 Se considera una gram atica sobre el alfabeto := a, b, cuyas pro-
ducciones vienen dadas por
q [ aqa [ bqb.
Decidir si el lenguaje generado por esa gram atica es el conjunto de los palndromos
sobre .
Cuesti on 2 Demostrar la falsedad de las armaciones dando el c odigo java sobre
las siguientes armaciones (se deja a un lado la funcionalidad del programa, por
ahora solo se requiere si el compilador devolver a un error al tratar de compilarlo):
Cambiar una orden por otra correcta no provoca errores de compilaci on.
Trabajando con parentesis () y corchetes [], no hay que tener mas cuidado que
cuando abramos alguno, se cierre en la misma orden.
Cuesti on 3 Si el sistema de producciones de una gram atica no posee ninguna trans-
formaci on del tipo A a, podemos asegurar que no es una gram atica regular?.
Cuesti on 4 El lenguaje sobre el alfabeto 0, 1 de las palabras que no contienen a
00, es un lenguaje regular?.
Cuesti on 5 Dados dos lenguajes L
1
y L
2
sobre el alfabeto a, b, podemos asegu-
rar que se verica la siguiente igualdad
(L
1
L
2
)
R
= L
R
1
L
R
2
?
Cuesti on 6 Dar una denici on inductiva (recursiva) de la transformaci on w
w
R
que revierte las palabras.
32 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


1.8.2. Cuestiones Relativas a Expresiones Regulares.
Cuesti on 7 Se dice que una expresi on regular esta forma normal disyuntiva si
=
1
+ +
n
,
donde las expresiones regulares
1
, . . . ,
n
no involucran el operador +. Decidir si
la siguiente expresi on regular esta en forma disyuntiva o encontrar una forma de
ponerla en forma disyuntiva:
(0 + 00 + 10)

,
con = 0, 1.
Cuesti on 8 Decidir si es verdadera la siguiente igualdad de expresiones regulares:
(a +b)

= (a

+b

.
Cuesti on 9 Pertenece la palabra acdcdb al lenguaje descrito por la expresi on re-
gular siguiente:
= (b

(cd)

b)

+ (cd)

?.
Cuesti on 10 Sea L el lenguaje sobre el alfabeto a, b formado por todas las pala-
bras que contienen al menos una aparici on de la palabra b. Es L el lenguaje descrito
por la expresi on regular siguiente
:= a

(ba

bb

(b

?.
Cuesti on 11 Dada cualquier expresi on regular , Se cumple

?.
Cuesti on 12 Dadas tres expresiones regulares , , , Es cierto que + ( ) =
( +) ( +)?.
Cuesti on 13 Es siempre la derivada de una expresi on regular otra expresi on re-
gular?.
1.8.3. Problemas Relativos a Lenguajes Formales y Gramaticas
Problema 1 Sea L := , a un lenguaje sobre el alfabeto := a, b. Hallar L
n
para los valores n = 0, 1, 2, 3, 4. Cu antos elementos tiene L
n
?.
Problema 2 Dados los lenguajes L
1
:= a y L
2
:= b sobre el mismo alfabeto
anterior, describir (L
1
L
2
)

y (L
1
L
2
)
+
. Buscar coincidencias.
Problema 3 Probar que la concatenaci on de los lenguajes no es distributiva con
respecto a la intersecci on de lenguajes.
Problema 4 Probar que la longitud [ [ :

N es un morsmo de monoides
suprayectivo, pero no es un isomorsmo excepto si () = 1.
1.8. PROBLEMAS Y CUESTIONES. 33
Problema 5 Dado el alfabeto = 0, 1, se consideran los siguientes dos lenguajes:
L
1
:=

: (ceros en ) 2Z.
L
2
:=

: n N, = 01
n
.
Demostrar que L
1
L
2
es el lenguaje L
3
siguiente:
L
3
:=

: (ceros en ) 2Z + 1.
Problema 6 Sea G una gram atica libre de contexto dada por V
N
:= q, V
F
:=
a, b y las producciones dadas por:
q aqb [ .
Probar que L(G) es el lenguaje denido por
L := a
n
b
n
: n N.
Problema 7 Sea L := a
n
b
n
c
n
: n N un lenguaje sobre el alfabeto = a, b, c.
Hallar una gram atica G tal que L(G) = L. Clasicar L dentro de la jerarqua de
Chomsky en funci on del tipo de gram atica que hayas encontrado.
Problema 8 Hallar una gram atica libre de contexto y otra equivalente regular para
cada uno de los dos lenguajes siguientes:
L
1
:= ab
n
a : n N,
L
2
:= 0
n
1 : n N.
Problema 9 Hallar gram aticas que generen los siguientes lenguajes:
L
1
:= 0
m
1
n
: [m, n N] [m n],
L
2
:= 0
k
1
m
2
n
: [n, k, m N] [n = k +m].
Problema 10 Dado el lenguaje L := z a, b

: w a, b

, con z = ww,
hallar una gram atica que lo genere.
Problema 11 Clasicar las siguientes gram aticas en terminos de la jerarqua de
Chomsky. Tratar de analizar los lenguajes generados por ellas y denirlos por com-
presi on.
1. P := q [ A, A c [ AA, V
N
:= q, A, V
F
:= c.
2. P := q [ A, A Ad [ cA [ c [ d, V
N
:= q, A, V
F
:= c, d.
3. P := q c [ qcq, V
N
:= q, V
F
:= c.
4. P := q c [ AcA, A cc [ cAc, cA cq, V
N
:= q, V
F
:= c.
34 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


5. P := q AcA, A 0, Ac AAcA [ ABc [ AcB, B B [ AB,
V
N
:= q, A, B, V
F
:= 0, c.
Problema 12 Sea G la gram atica dada por las siguientes producciones:
q 0B [ 1A,
.
A 0 [ 0q [ 1AA,
.
B 1 [ 1q [ 0BB.
Siendo V
N
:= q, A, B y V
F
:= 0, 1, probar que
L(G) := 0, 1

: (ceros en ) = (unos en ) [[ 0.
Problema 13 Probar que si L es el lenguaje dado por la siguiente igualdad:
L := 0, 1

: (ceros en ) ,= (unos en ),
entonces L

= 0, 1

.
Problema 14 Sea L a, b

el lenguaje dado por la siguiente denici on :


L,
Si L, entonces ab L y ba L,
Si x, y L, entonces xy L.
Describir el lenguaje y denirlo por comprensi on.
Problema 15 Probar que si L es generado por una gram atica regular a izquierda,
entonces L
R
es generado por una gram atica regular a derecha.
1.8.4. Problemas Relativos a Expresiones Regulares
Problema 16 Dadas , dos expresiones regulares. Probar que si L() L(),
entonces + .
Problema 17 Dada la expresi on regular = a + bc + b
3
a, Cu al es el lenguaje
regular L() descrito por ella?. Cu al es la expresi on regular que dene el lenguaje
a, b, c

?
Problema 18 Simplicar la expresi on regular = a+a(b+aa)(b

(aa)

+a(aa+
b)

, usando las equivalencias (sem anticas) vistas en clase.


Problema 19 Calcular la derivada D
ab
() = D
a
(D
b
()), siendo := a

ab.
Problema 20 Probar que D
a
(

) = D
a
()

, para cualquier expresi on regular .


1.8. PROBLEMAS Y CUESTIONES. 35
Problema 21 Probar que x :=

es una soluci on para la ecuaci on fundamental


x + .
Problema 22 Simplicar la expresi on regular := 1

01

(01

01

0 + 1)

01

+ 1

.
Problema 23 Hallar la expresi on regular asociada a la siguiente gram atica (por
el metodo de las ecuaciones lineales):
q aA [ cA [ a [ c,
A bq.
Aplicar el metodo de las derivadas a y comparar los resultados.
Problema 24 Hallar la gram atica que genera el lenguaje descrito por la siguiente
expresi on regular:
:= (b +ab
+
a)

ab

.
Problema 25 Comprobar la equivalencia tautol ogica
(b +ab

a)

ab

a(b +ab

a)

.
Problema 26 Dada la expresi on regular := (ab+aba)

, hallar una gram atica que


genere el lenguaje L().
Problema 27 Dada la expresi on regular := a(bc)

(b+bc)+a, hallar una gram ati-


ca G que genere el lenguaje L(). Construir el sistema S(G) asociado a la gram atica
calculada, resolverlo y comparar los resultados.
Problema 28 Hallar la expresi on regular asociada a la siguiente gram atica :
q bA [ ,
A bB [ ,
B aA.
Aplicar el metodo de las derivadas a y comparar los resultados.
Problema 29 Idem con la gram atica :
q 0A [ 1B [ ,
A 1A [ 0B,
B 1A [ 0B [ .
Problema 30 Probar que si es una expresi on regular tal que
2
, entonces

= +.
Problema 31 Probar que si es una expresi on regular se cumple

+.
36 CAP

ITULO 1. CHOMSKY. EXPRESIONES REGULARES


Problema 32 Hallar dos expresiones regulares distintas que sean soluci on de la
siguiente ecuaci on lineal
(a +)X = X.
Problema 33 Las Expresiones Regulares Avanzadas son expresiones regulares a nadien-
do diferentes operadores. Se utilizan en lenguajes de programaci on como Perl para
b usquedas dentro de texto. Los operadores a nadidos son los siguientes:
operador de rango: Para las letras [a..z], signica que cualquier letra del rango
es correcta.
operador ?: Este operador aplicado a una expresi on regular entre parentesis
indica que necesariamente encaja en este esquema.
operador /i: Este operador, indica el smbolo en la posici on i de la palabra, por
ejemplo /1 indica el primer smbolo de la palabra.
Demostrar como transformar las expresiones regulares avanzadas a expresiones re-
gulares. Aplicarlo al siguiente caso,
[a..c]([C..E]

)?/1.
Captulo 2
Automatas Finitos
2.1. Introduccion
La siguiente etapa, que constituye un buen entrenamiento para las maquinas de
Turing, son los automatas nitos. Los automatas nitos corresponden a correctores
ortogracos. Se trata de la vieja tarea del maestro de escuela que corrige las palabras
mal escritas. En terminos informaticos, los automatas nitos se usan para corregir (o
se nalar) los lugares en los que la morfologa de un lenguaje de programacion no ha
sido respetada. Si, por ejemplo, alguien elabora un peque no programa en C, Maple,
Matlab o, simplemente, un documento Textures, debajo del proceso de compilacion
existe un automata nito que detecta la presencia de errores y, si encuentra alguno,
salta mostrando donde aparece. El gran activador de la Teora de Automatas fue
J. von Neumann. Este gran matematico, gasto buena parte de los ultimos a nos de
su vida en el desarrollo de la teora de automatas nitos y, durante la Segunda
Guerra Mundial, en el desarrollo de los computadores electronicos de gran tama no
que fructico en la aparicion del ENIAC (un ordenador para calcular rapidamente
trayectorias balsticas que fue nanciado por el ejercito de los Estados Unidos y
nalizado en 1948
1
).
2.2. La Nocion de Automata
Formalmente, se denen como sigue :
Denici on 47 Llamaremos aut omata nito a todo quntuplo A := (Q, , Q
0
, F, )
donde :
es un conjunto nito (alfabeto),
Q es un conjunto nito cuyos elementos se llaman estados y que suele deno-
minarse espacio de estados,
Q
0
es un elemento de Q que se denomina estado inicial,
1
La historia del dise no y puesta en marcha del ENIAC y las personas involucradas puede seguirse
en la pagina web http://ftp.arl.mil/ mike/comphist/eniac-story.html .
37
38 CAP

ITULO 2. AUT

OMATAS FINITOS
F es un subconjunto de Q, cuyos elementos se denominan estados nales acep-
tadores,
: Q ( ) Q es una correspondencia que se denomina funci on de
transici on.
Si es aplicaci on, el aut omata se denomina determinstico y en caso contrario in-
determinstico.
Para ver como puede funcionar un automata, denamos su sistema de transicion.
2.2.1. Sistema de Transicion de un automata :
Sea dado el automata
A := (Q, , Q
0
, F, )
S := Q

es el espacio de conguraciones,
La transicion
A
S S se dene por las reglas siguientes :
(q, x)
A
(q

, x

) , x = x

, q

= (q, x)
Para interpretar mejor el proceso, hagamos nuestra primera descripcion graca. Las
palabras del albafeto

se pueden imaginar como escritas en una cinta innita,


dividida en celdas en cada una de las cuales puedo escribir un smbolo de .
[ x
1
[ x
2
[ x
3
[
Hay una unidad de control que ocupa diferentes posiciones sobre la cinta y que
dispone de una cantidad nita de memoria en la que puede recoger un estado de Q :
[ x
1
[ x
2
[ x
3
[

[ q [
Las conguraciones de S solo representan el momento instantaneo (snapshot) de
calculo correspondiente. As, dada una palabra x = x
1
x
n

el automata A
computa sobre esta palabra de la manera siguiente :
Inicializa (Q
0
, x) S, es decir
[ x
1
[ x
2
[ x
3
[

[ Q
0
[
2.2. LA NOCI

ON DE AUT

OMATA 39
Q
1
:= (Q
0
, x
1
), x
(1)
:= x
2
x
n

,
(Q
0
, x)
A
(Q
1
, x

)
Gracamente, borramos el contenido de la primera celda, cambiamos el estado
en la unidad de control de Q
0
(estado inicial) a Q
1
y movemos la unidad de
control un paso a la derecha :
[ [ x
2
[ x
3
[

[ Q
1
[
El proceso contin ua hasta que nos quedamos sin palabra, i.e. llegamos a la con-
guracion (Q
n1
, x
(n)
) S, donde x
(n)
:= x
n
es una palabra de longitud 1. Sea
Q
n
:= (Q
n1
, x
n
) y la palabra vaca y tenemos la sucesion de computacion :
(Q
0
, x)
A
(Q
1
, x
(1)
)
A

A
(Q
n1
, x
(n)
)
A
(Q
n
, )
[ [ [ [ [ [

[ Q
n
[
Ejemplo 7 El alfabeto ser a = a, b.
El espacio de estados ser a Q := Q
0
, Q
1
, Q
2
, Q
3

Las conguraciones nales aceptadoras ser an F := Q


2

La conguraci on inicial ser a Q


0
Para la funci on de transici on elegiremos una representaci on a traves de una tabla :
a b
Q
0
Q
1
Q
3
Q
1
Q
1
Q
2
Q
2
Q
3
Q
2
Q
3
Q
3
Q
3
Esta tabla debe interpretarse como (Q
i
, x) es el estado que aparece en la la Q
i
y
columna x. Revisemos la computaci on del aut omata A sobre un par de entradas :
Sea x = aabbb

y veamos c omo funciona nuestro au omata :


(Q
0
, aabbb)
A
(Q
1
, abbb)
A
(Q
1
, bbb)
A
40 CAP

ITULO 2. AUT

OMATAS FINITOS
Figura 2.1: Representacion graca del automata.

A
(Q
2
, bb)
A
(Q
2
, b)
A
(Q
2
, )
Y la palabra aabbb es aceptada.
Tomemos la palabra y = baba

y tratemos de seguir los c alculos de nuestro


aut omata :
(Q
0
, baba)
A
(Q
3
, aba)
A
(Q
3
, ba)
A
(Q
3
, a)
A
(Q
3
, )
y la palabra baba no es aceptada por nuestro aut omata.
El automata ya presenta una primera aproximacion a las maquinas de Turing. Pro-
cesa como un ordenador y va corrigiendo la palabra dada. Si, al nal del proceso, el
automata alcanza una conguracion nal aceptadora, es porque la palabra dada en
la conguracion inicial era correcta. En caso contrario rechaza. As surge la primera
nocion de problema susceptible de ser tratado informaticamente :
Denici on 48 Dado un aut omata A en las notaciones anteriores y una palabra
x

, denimos la correspondencia

Q
dada por

(x) = q si y solamente si (Q
0
, x)
A
(q, ).
Representaci on Graca de la Funci on de Transici on.
Una forma estetica, pero no siempre conveniente a la hora de manipular automatas
relativamente grandes, es la representacion de sistemas de transicion mediante grafos
con aristas etiquetadas, un ejemplo se puede ver en la Figura 2.1. Las reglas son las
siguientes:
2.2. LA NOCI

ON DE AUT

OMATA 41
Los nodos del grafo estan dados por los estados del grafo. Cada nodo esta ro-
deado de, al menos, una circunferencia.
Los nodos nales aceptadores del grafo son aquellos que estan rodeados por
dos circunferencias, el resto de los nodos aparecen rodeados de una sola cir-
cunferencia.
Dada una transicion (q, z) = p, asignaremos la arista del grafo (q, p) con
etiqueta z.
Hay una arista sin entrada, cuya salida es el nodo asociado al estado inicial.
Usaremos mas habitualmente la representacion de las funciones de transicion bien
mediante listas o bien mediante tablas.
Denici on 49 Llamaremos lenguaje aceptado por un aut omata A al conjunto de
palabras x

tales que

(x) F, es decir al conjunto de palabras tales que se


alcanza alguna conguraci on nal aceptadora.
Llamaremos lenguaje regular a todo lenguaje aceptable por alg un aut omata.
Podemos interpretar un automata como un evaluador de la funcion caracterstica de
un subconjunto de L

L
:

0, 1
Los automatas deterministas directamente sirven para evaluar
L
y la interpretacion
es la obvia en terminos de pregunta respuesta :
Input : Una palabra x

Output :
1 si el automata llega a una conguracion nal aceptadora (i.e.

(x) QF).
0 si el automata llega a una conguracion nal no aceptadora (i.e.

(x)
Q F).
Una buena referencia sobre automatas es el texto [Davis-Weyuker, 94], donde tam-
bien se pueden encontrar ejemplos sencillos que ayuden al alumno a interiorizar la
nocion.
El Aut omata como Programa
Una manera bastante natural de interpretar el automata nito es usar un pseudo
codigo para expresar un automata como un programa con un while basado en el
sistema de transicion anterior. Informalmente, sea A := (Q, , Q
0
, F, ) un automata.
El programa (algoritmo) que dene es el dado por la siguiente descripcion:
Input: x

(una palabra sobre el alfabeto).


Initialize: I := (Q
0
, x) (la conguracion inicial sobre x)
while I , F do
42 CAP

ITULO 2. AUT

OMATAS FINITOS
if I = (q, x

x
1
), x

x
1
,= , then I := ((q, x

), x
1
)
else Ouput NO

od
Output YES
La interpretacion como programa (determinstico) de este pseudocodigo depende
esencialmente de la ausencia de dos obstrucciones:
La presencia de transiciones, esto es, de transiciones de la forma (q, ) que
pueden hacer que caigamos en un ciclo innito.
La indenicion de I = ((q, x

), x
1
) por no estar denido (q, x

) o por tener
mas de un valor asociado.
Ambas obstrucciones se resuelven con los algoritmos que se describen a continuacion.
2.2.2. Automatas con/sin Transiciones.
Se denominan transiciones a las transiciones de una automata A := (Q, , Q
0
, F, )
dadas por igualdades de la forma:
(q, ) = p
1
, . . . , p
s
.
La presencia de transiciones puede modicar (aunque solo aparentemente) la
clase de problemas aceptados por los automatas.
Una transicion puede interpretarse como que el automata adivina cuales son
los siguientes smbolos que van a aparecer.
Supongamos primero el caso mas sencillo donde tenemos una conguracion (q, x)
en el sistema de transicion asociado al automata y una transicion (q, ) = p.
Entonces, la transformacion sera de la forma:
(q, x) (p, x

),
donde x

es dado por tal que x = x

y (q, ) = p.
El signicado de esta transformacion es el siguiente:
x = x

, p = (q, ).
En el caso general, donde (q, ) contiene varios estados, se corresponde a la situa-
cion donde tenemos una caja negra que implementa nuestro automata (esto es, solo
sabemos que con ciertas entradas, tenemos ciertas salidas). Vemos que el automata
que queremos modelar no lee la cinta, pero cambia de estado, y no a un unico estado,
si no que parece que depende del contenido de la celda. En terminos de operaciones
de lectoescritura, nuestra transicion realiza las siguientes tareas:
NO lee el contenido de la cinta.
Modica el estado en la unidad de control.
2.2. LA NOCI

ON DE AUT

OMATA 43
NO borra el contenido de la celda se nalada por la unidad de control.
NO se mueve a la izquierda.
En un sentido menos preciso, las transiciones son meras transformaciones de los
estados conforme a reglas que no dependen del contenido de la cinta.
Grafo de Transiciones.
A partir de las transiciones de un automata podemos construir un grafo. Dado
un automata A := (Q, , Q
0
, F, ), denimos el grafo de las transiciones de A
mediante G := (V, E), donde las reglas son:
V = Q.
Dados p, q V , decimos que (p, q) E si q (p, ), i.e.
E := (p, q) : q (p, ).
A partir del grafo de las transiciones podemos considerar la clausura transitiva
de un nodo (estado), deniendola del modo siguiente:
clausura(p) := q V : (p, ) (q, ).
Observese que a clausura de un nodo p esta determinada por las conguraciones
(con palabra vaca ) alcanzables desde la conguracion (p, ) dentro del sistema de
transicion asociado al automata.
Del mismo modo, dados p Q y a , deniremos la clausura de p y a mediante:
clausura(p, a) := q V : (p, ) (q, ), (q, a).
Nuestro objetivo es probar el siguiente enunciado:
Proposici on 50 Dado cualquier lenguaje L que sea aceptado por un aut omata con
transiciones, entonces existe un aut omata sin transiciones que acepta el mismo
lenguaje. M as aun, la transformaci on de un aut omata a otra se puede dar algortmi-
camente.
Demostracion. Como en el resto de los casos, nos basta con tomar como dado
de entrada un automata A := (Q, , Q
0
, F, ) y denir un nuevo automata que
elimina las transiciones. El nuevo automata no ha de ser determinista, pero eso
es irrelevante como veremos en la Proposicion 51.
Construiremos un nuevo automata

A := (

Q, , Q
0
,

F,

) denido conforme al algo-


ritmo siguiente:
Input: Automata A := (Q, , Q
0
, F, ).
Initialize:

Q := Q y Q
0
:= Q
0
.
for each p Q do nd clausura(p) od

F := F p : clausura(p) F ,= .
44 CAP

ITULO 2. AUT

OMATAS FINITOS
for each p Q do
if clausura(p, a) ,= , then

(p, a) :=
_
qclausura(p)
clausura((q, a)).

od
Output

A := (

Q, , Q
0
,

F,

)
Notar que

(p, ) no esta denida para ning un p Q.
Es un sencillo ejercicio comprobar que el automata

A acepta L.
Nota 51 Observese que el resultado de eliminar transiciones puede ser un aut oma-
ta indeterminista.
2.2.3. Determinismo e Indeterminismo en Automatas
Una primera preocupacion tecnica podra ser el papel que juega el indeterminismo en
la clase de lenguajes aceptados por automatas. Los siguientes resultados tranquilizan
mostrando que el indeterminismo es irrelevante en cuanto a la clase de lenguajes
aceptados.
Proposici on 52 Si un lenguaje L

es aceptado por un aut omata nito inde-


terminista, entonces, existe un aut omata nito determinista que lo acepta.
2
Demostracion. La idea es simple, sea A = (Q, , Q
0
, F, ) un automata indeter-
minista sin transiciones que acepta un lenguaje L

. Denamos el siguiente
automata determinista A dado por :
Q := T(Q) (el espacio de estados es el conjunto de las partes de Q).
F := X Q : XF ,= (las conguraciones nales aceptadoras son aque-
llas que contienen alg un estado del espacio F de estados nales aceptadores).
Q
0
:= Q
0
(el conjunto formado por la antigua conguracion inicial).
la funcion de transicion
: Q Q
denida mediante :
(X, ) := q Q : q

X, q = (q

, ).
Dejamos el asunto de la comprobacion como ejercicio.
Nota 53 A partir de ahora usaremos aut omatas deterministas e indeterministas
sin la preocupaci on sobre el indeterminismo, dado que podemos reemplazar unos por
otros sin mayores problemas.
2
Una caracterstica del indeterminismo es que no modica la clase de lenguajes aceptados; aunque
si modicara los tiempos de calculo.
2.3. LENGUAJES REGULARES Y AUT

OMATAS. 45
2.3. Lenguajes Regulares y Automatas.
Como indica el ttulo, el objetivo de esta seccion es mostrar que los lenguajes acep-
tados por los automatas son los lenguajes regulares. Para ello, mostraremos dos
procedimientos de paso conocidos como Teorema de Analisis y Teorema de Sntesis
de Kleene (cf. [Kleene, 56]).
2.3.1. Teorema de Analisis de Kleene
Nuestra primera duda que cualquier lenguaje aceptado por un automata nito esta
generado por una expresion regular. El teorema siguiente arma eso y ademas da un
algoritmo para calcularlo. Se deja al alumno el ejercicio de demostrar la complejidad
del algoritmo.
Teorema 54 Sea L

un lenguaje aceptado por un aut omata nito determinista.


Entonces, existe una expresi on regular sobre el alfabeto tal que L = L().
M as a un, mostraremos que existe un procedimiento tratable que permite calcular la
expresi on regular asociada al lenguaje aceptado por un aut omata.
Demostracion. Nos limitaremos con mostrar el procedimiento, que casi viene pre-
gurado por las deniciones.
Para ello construiremos un sistema de ecuaciones lineales en expresiones regulares
con las reglas siguientes:
Supongamos que Q := Q
0
, . . . , Q
n
. Introducimos un conjunto de variables
biyectable con Q dado por X
0
, . . . , X
n
La biyeccion sera dada por Q
i
X
i
.
Denimos un sistema de ecuaciones lineales en expresiones regulares :
_
_
_
X
0
.
.
.
X
n
_
_
_ =
_
_
_

0,0

0,n
.
.
.
.
.
.
.
.
.

n,0

n,n
_
_
_
_
_
_
X
0
.
.
.
X
n
_
_
_+
_
_
_

0
.
.
.

n
_
_
_,
Conforme a las reglas siguientes:
Para cada i, 0 i n, denamos
i
= si Q
i
F y
i
= si Q
i
, F.
Para cada i, j, 0 i, j n, denamos A
i,j
mediante:
A
i,j
:= z : (Q
i
, z) = Q
j
.
Deniremos

i,j
:=

zA
i,j

i,j
,
notando que si A
i,j
= , entonces,
i,j
= .
Entonces, si (
0
, . . . ,
n
) es una solucion del anterior sistema lineal, L(
0
) es el
lenguaje aceptado por el automata. La idea de la demostracion es la siguiente: Em-
pecemos por calcular el lenguaje de las palabras que empezando en Q
0
son aceptadas
46 CAP

ITULO 2. AUT

OMATAS FINITOS
por el automata y llamemos a este lenguaje X
0
. De la misma forma, para cada uno
de los estados ponemos un lenguaje X
1
, X
2
. . . Hay una clara relacion entre estos
lenguajes, que esta dada por las ecuaciones lineales dadas mas arriba. Si tomamos
+ como union de lenguajes y
i,j
X
i
como el lenguaje formado por las palabras
concatenadas por
i.j
donde X
i
entonces la relacion esta mas que clara.
El lenguaje X
0
esta claramente formado por la union de los lenguajes X
i
correspon-
dientes, con prejo dado por el smbolo de la transicion. Ademas, si el estado es nal
hay que a nadir la palabra .
Denici on 55 (Sistema Caracterstico de un Aut omata) Se denomina siste-
ma de ecuaciones caracterstico de un aut omata al sistema de ecuaciones lineales en
expresiones regulares obtendio conforme a las reglas descritas en la demostraci on del
Teorema anterior.
2.3.2. Teorema de Sntesis de Kleene
En esta segunda parte, vamos a demostrar la implicacion contraria. Esto es, que
para cualquier lenguaje generado por una expresion regular se puede encontrar un
automata determinista que lo acepta. Comenzaremos por un sencillo Lema.
Lema 56 Dado un lenguaje L aceptado por un aut omata, existe un aut omata A :=
(Q, , Q
0
, F, ) que acepta L y que verica las siguientes propiedades:
1. (F) = 1, es decir, s olo hay una conguraci on nal aceptadora. Supondremos
F := f.
2. (q, x) est a denida para todo q Q y todo x .
3. Las unicas transiciones entran en f. Es decir,
Si (p, ) = q q = f.
Demostracion. Dado el automata A := (Q, , Q
0
, F, ), que podemos suponer
determinista, denamos el nuevo automata

A := (

Q, , Q
0
,

F,

) conforme a las
reglas siguientes:
Sea f, ERROR dos nuevos estados tal que f, ERROR , Q. Denamos

Q :=
Q f ERROR y Q
0
:= Q
0
.
Denamos

F := f.
Para cada p Q y para cada a , denamos

(p, a) := (p, a),



(ERROR, a) := ERROR,

(f, a) = ERROR.
Para cada p F, denamos

(p, ) := f.
2.3. LENGUAJES REGULARES Y AUT

OMATAS. 47
Es claro que

A acepta el mismo lenguaje que aceptaba A. La razon es sencilla, la
unica manera de alcanzar el nuevo estado f es llegar a un estado nal con la cinta
vaca.
Teorema 57 Sea un alfabeto nito y una expresi on regular sobre . Entonces,
existe un aut omata nito A que reconoce el lenguaje L() descrito por . M as a un,
el proceso de obtenci on del aut omata a partir de la expresi on regular se puede lograr
de manera algortmica.
Demostracion. De nuevo nos limitaremos a describir un proceso algormico que
transforma expresiones regulares en automatas, usando los operadores de denicion
de la expresion (i.e. el procedimiento es recursivo en la construccion de la expresion
regular).
El caso de los smbolos primarios:
El caso : Bastara un automata con Q := Q
0
, Q
1
, F := Q
1
tal que
la funcion de trasicion no este denida en ning un caso.
El caso : De nuevo usaremos Q := Q
0
, Q
1
, F := Q
1
, pero la funcion
de transicion esta denida solamente para (Q
0
, ) = Q
1
y no denida en
el resto de los casos.
El caso constante a : Igual que en el caso anterior, usaremos Q :=
Q
0
, Q
1
, F := Q
1
, pero la funcion de transicion esta denida solamen-
te para (Q
0
, a) = Q
1
y no denida en el resto de los casos.
Siguiendo los operadores:
El aut omata de la uni on ( + ): Si tenemos A
1
:= (Q
1
, , Q
1
, F
1
,
1
)
un automata determinista que acepta L
1

y un segundo automata
tambien deterministas A
2
:= (Q
2
, , Q
2
, F
2
,
2
) un automata que acepta
L
2

, denimos un nuevo automata


3
A := (Q, , Q
0
, F, ) que acepta
L
1
L
2
y viene dado por las reglas siguientes:
Q := Q
1
Q
2
,
F := (F
1
Q
2
) (Q
1
F
2
)
Q
0
:= (Q
1
, Q
2
)
((p, q), z) = (
1
(p, z),
2
(q, z)), p Q
1
, q Q
2
y z .
El aut omata de la concatenaci on (): Supongamos A
1
:= (Q
1
, , Q
1
, F
1
,
1
)
un automata que acepta L
1

y un segundo automata A
2
:= (Q
2
, , Q
2
, F
2
,
2
)
un automata que acepta L
2

. Supongamos que A
1
verica las con-
diciones descritas en el Lema 55 y sea F
1
:= f.
Denimos un nuevo automata A := (Q, , Q
0
, F, ) que acepta L
1
L
2
y
viene dado por las reglas siguientes:
Q := (Q
1
1) (Q
2
2).
3
Esta construccion se la conoce como Automata Producto.
48 CAP

ITULO 2. AUT

OMATAS FINITOS
F := F
2
2.
Q
0
:= (Q
1
, 1)
La funcion de transicion : Q( ) Q, viene dada por:
((q, i), z) :=
_
_
_
(
1
(q, z), 1) , si q Q
1
, i = 1
(Q
2
, 2) , si q = f F
1
, i = 1, z =
(
2
(q, z), 2) , si q Q
2
, i = 2
(2.1)
El aut omata del monoide generado (

): De nuevo suponemos que te-


nemos un automata A := (Q, , Q
0
, F, ) que acepta el lenguaje L().
Podemos suponer que dicho automata verica las condiciones del Le-
ma 55 anterior. Supongamos F = f. Denamos un nuevo automata
A

:= (Q

, , Q

0
, F

) conforme a las reglas siguientes:


Q

:= Q.
Q

0
:= Q
0
.
F

:= F = f.
Para cada q Q F y para cada z , denamos

(q, z) :=
(q, z).
Finalmente, denamos:

(f, ) := Q
0
.
y

(Q
0
, ) := f.
Es claro que este automata acepta el lenguaje previsto.
Con esto acabamos la demostracion, ya que cualquier expresion regular esta forma-
da por concatenacion, suma de expresiones regulares o es estrella de una expresion
regular.
El alumno avezado habra sin duda notado que solo se ha demostrado que cualquier
lenguaje dado por una expresion regular es aceptado por un automata indeterminis-
ta. Utilizando los resultados de las secciones anteriores, podemos hallar un automa-
ta determinista equivalente. Se propone ahora un metodo equivalente, mas graco
orientado a la resolucion con papel y bolgrafo.
Inicialmente, empezamos dibujamos dos estados, el primero sera el inicial y el
segundo el nal. Dibujamos una transicion con la expresion regular de la cual
queremos hallar el automata.
Repetir el los siguientes pasos hasta que todas las transiciones no contengan
mas que smbolos del alfabeto.
Remplazar cada transicion donde aparezca f + g por dos transiciones,
entre los mismos estados con f y g.
2.4. LENGUAJES QUE NO SON REGULARES 49
A nadir un nuevo estado por cada transicion donde aparezca fg y a nadir
dos transiciones, la primera que vaya del estado inicio hasta el nuevo nodo
con f y la segunda que vaya del nuevo nodo al estado antiguo por g.
A nadir tambien un nuevo estado por cada transicion donde aparezca f,
a nadiendo transiciones que entren y salgan al nuevo estado de los esta-
dos antiguos y una transicion del nuevo estado en si mismo con smbolo
f.
2.4. Lenguajes que no son regulares
La tradicion usa el Lema de Bombeo para mostrar las limitaciones de los lengua-
jes regulares. El resultado fue originalmente debido a Y. Bar-Hillel, M. Perles, E.
Shamir
4
. Este Lema se enuncia del modo siguiente:
Teorema 58 (Pumping Lemma) Sea L un lenguaje regular. Entonces, existe un
n umero entero positivo p N tal que para cada palabra L, con [[ p existen
x, y, z

vericando los siguientes propiedades:


[y[ p,
= xyz
Para todo N, las palabras xy

z L
El Lema de Bombeo simplemente dice que hay prejos y una lista nita de palabras
tal que, bombeando esas palabras, permaneceremos en el mismo lenguaje regular.
Por razones esteticas preero mostrar los lmites de los lenguajes regulares con el
resultado siguiente que prueba que los prejos posibles forman un conjunto nito.
Denici on 59 (Prejos) Sea un alfabeto nito y sea L

un lenguaje cual-
quiera. Denimos la siguiente relaci on de equivalencia sobre

:
dados x, y

, x
L
y si y solamente si :
w

, xw L yw L
Vericar que estamos ante una relacion de equivalencia es un mero ejercicio. Lo que
pretendemos es caracterizar los lenguajes aceptados por un automata mediante una
caracterizacion del conjunto cociente :

/
L
.
Teorema 60 (MyhillNerode)
5
Si L

es un lenguaje aceptado por un


aut omata, entonces el conjunto cociente

/
L
es nito
6
.
4
Y. Bar-Hillel, M. Perles, E. Shamir.On formal properties of simple phrase structure gram-
mars.Zeitschrift f ur Phonetik, Sprachwissenschaft und Kommunikationsforschung 14 (1961) 143
172.
5
Rabin, M. and Scott, D..Finite automata and their decision problems. IBM Journal of Re-
search & Development 3 (1959), 114-125.
6
El recproco tambien es cierto y lo dejamos como ejercicio.
50 CAP

ITULO 2. AUT

OMATAS FINITOS
Demostracion. Supongamos que L es el lenguaje aceptado por un automata deter-
minista A := (, Q, Q
0
, F, ). Consideremos el conjunto de los estados alcanzables
por alguna computacion de A sobre alguna entrada y

:
Q := q Q : y

, (Q
0
, y) (q, )
es claro que Q Q es un conjunto nito. Para cada q Q, sea y
q

tal que
(Q
0
, y
q
) (q, ). Sea
S := y
q
: q Q
Claramente S es un conjunto nito y vamos a probar que

/
L
= [y
q
] : y
q
S
con lo que tenemos la armacion. Ahora, tomemos x

y sea (Q
0
, x) (q, ),
q Q. Para cualquier w

, el sistema de transicion asociado al automata A,


trabajando sobre xw realiza algo como lo siguiente :
(Q
0
, xw)
A

A
(q, w)
mientras vamos borrando la x. Ahora bien, si tomamos y
q
w

, el calculo hara tam-


bien el camino :
(Q
0
, y
q
w)
A

A
(q, w)
Lo que pase a aprtir de (q, w) es independiente de por donde hayamos empezado,
luego xw es aceptado por A si y solamente si y
q
w es aceptado por A.
2.4.1. Un ejemplo clave : El Palndromo.
Por lo visto y denido, los automatas podran haber sido buenos candidatos a proce-
sos algortmicos y uno estara tentado a denir los problemas decisionales resolubles
por un algoritmo como aquellos problemas que son funciones caractersticas de un
lenguaje regular. Desgraciadamente, a pesar de las buenas propiedades que verican,
los automatas son insucientes para caracterizar la nocion de algoritmo. Un sencillo
problema decisional el Palndromo o, en buen catalan, el problema de la deteccion
de los capicua, no sera un lenguaje regular, como consecuencia del resultado de
Myhill y Nerode anterior.
Comencemos recordando la denicion del Palndromo ya denido en Secciones an-
teriores. Dado un alfabeto nito , y una palabra x = x
1
x
n

, denominamos
el reverso de x, x
R
a la palabra : x
R
= x
n
x
1
.
El lenguaje del Palndromo es dado por
T := x

: x
R
= x
Corolario 61 (MyhillNerode) El palndromo no es un lenguaje regular.
Demostracion. Dada cualquier palabra x

se tiene que xx
R
T. Claramente,
pues
(xx
R
)
R
= (x
R
)
R
x
R
= xx
R
2.5. MINIMIZACI

ON DE AUT

OMATAS DETERMINISTAS 51
Supongamos, entonces que T fuera un lenguaje regular y sea S un conjunto nito
tal que

/
P
= [y] : y S. Sea m := max[ y [ : y S, que existe por ser
S un conjunto nito. Consideremos la palabra x = 0
[m]
110
[m]
donde 0
[m]
representa
una lista de m 0s y los smbolos 0, 1 se suponen dentro del alfabeto . Ha de
existir y = y
1
y
r
S tal que para todo w

xw T yw T
Ahora bien, tomando x = 0
[m]
1, xx
R
T, luego yx
R
T. Pero esto implica
yx
R
= (yx
R
)
R
= xy
R
Reescribamos esta identidad :
yx
R
= y
1
y
r
10
[m]
= 0
[m]
1y
r
y
1
= xy
R
Deducimos (dado que r m que y
1
= = y
r
= 0) que m + 1 = r + 1, ya que la
palabra solo tiene un 1. Pero esto da una contradiccion.
Ejemplo 8 Los siguientes son tambien ejemplos de lenguajes no regulares :
= 0, 1 y el lenguaje L dado por la condici on el n umero de 1s es mayor
que el n umero de 0s.
Para el mismo alfabeto el lenguaje :
L := 0
[m]
1
[m]
: m N
Para el alfabeto = 0, 1, . . . , 9 sea

el lenguaje formado por las


palabras que son prejos de la expansi on decimal de R, es decir :
L := 3, 31, 314, 3141, 31415, . . .
2.5. Minimizacion de Automatas Deterministas
En ocasiones uno puede observar que el automata que ha dise nado (usando algunas
de las propiedades o metodos ya descritos) es un automata con demasiados estados
(y, por tanto, el codigo del programa es excesivo para el programador). Para resolver
esta situacion se utiliza un proceso de minimizacion de los automatas que pasaremos
a describir a continuacion.
Comenzaremos observando que las computaciones que realizan varios estados pueden
ser esencialmente las mismas, que los efectos que producen ciertos estados podran
ser los mismos. Esto se caracteriza mediante la relacion de equivalencia siguiente:
Sea A := (Q, , Q
0
, F, ) un automata. Dos estados p, q Q se dicen equivalentes si
se verica la siguente propiedad:
z

, Si
__
(p, z) (p

, )
_

_
(q, z) (q

, )
__
=
_
(p

F) (q

F)
_
.
52 CAP

ITULO 2. AUT

OMATAS FINITOS
En otras palabras, dos estados son equivalentes si para cualquier palabra el efecto
de la computacion que generan es el mismo (en terminos de alcanzar o no un estado
nal aceptador).
Denotaremos por p
A
q en el caso de que p y q sean equivalentes. Para cada estado
p Q, denotaremos por [q]
A
la clse de equivalencia denida por q y denotaremos
por Q/
A
al conjunto cociente. Deniremos automata minimal al automata que
tiene el menor n umero de estados y que acepta un lenguaje.
Se tiene:
Teorema 62 Sea L un lenguaje aceptado por un aut omata determinista A. Enton-
ces, existe un aut omata mnimo que lo acepta. Dicho aut omata (

Q, ,

Q
0
,

F,

) viene
dado por las propiedades siguientes:

Q := Q/
A
,

F := [q]
A
: q F.

Q
0
:= [Q
0
]
A
.

([q]
A
, z) := [(q, a)].
Demostracion. Lo dejamos para la reexion de los alumnos.
El problema es que el calculo de las clases de equivalencia no puede hacerse de
manera simple (porque habramos de vericar todas las palabras z

). Por eso
se plantean algoritmos alternativos como el que se describe a continuacion (tomado
de [Eilenberg, 74]).
Para construir nuestro automata cociente, tomaremos una cadena de relaciones de
equivalencia. Las deniremos recursivamente del modo siguiente:
Sea A := (Q, , Q
0
, F, ) un automata. Denamos las siguientes relaciones:
La relaci on E
0
: Dados p, q Q, diremos que pE
0
q (p y q estan relacionados al
nivel 0) si se verica:
p F q F.
Es claramente una relacion de equivalencia. El conjunto cociente esta formado
por dos clases:
Q/E
0
:= F, Q F.
Denamos e
0
:= (Q/E
0
) = 2.
La relaci on E
1
: Dados p, q Q, diremos que pE
1
q (p y q estan relacionados al
nivel 1) si se verica:
pE
1
q
_
_
_
pE
0
q,
(p, z)E
0
(q, z), z
Es, de nuevo, una relacion de equivalencia. El conjunto cociente ya no es tan
obvio, y denimos:
e
1
:= (Q/E
1
) .
2.5. MINIMIZACI

ON DE AUT

OMATAS DETERMINISTAS 53
La relaci on E
n
: Para n 2, denimos la relacion del modo siguiente: Dados
p, q Q, diremos que pE
n
q (p y q estan relacionados al nivel n) si se verica:
pE
n
q
_
_
_
pE
n1
q,
(p, z)E
n1
(q, z), z
Es, de nuevo, una relacion de equivalencia. El conjunto cociente ya no es tan
obvio, y denimos:
e
n
:= (Q/E
n
) .
Lema 63 Sea A := (Q, , Q
0
, F, ) un aut omata y sean E
n
: n N la cadena
de relaciones de equivalencia denidas conforme a la regla anterior. Se tiene:
1. Para cada n N, e
n
e
n+1
.
2. Si existe n N, tal que e
n
= e
n+1
, entonces
e
m
= e
n
, m n.
Demostracion. Es claro que si dos estados estan relacionados a nivel n entonces,
estan relacionados a nivel n 1. Esto es as por pura construccion (por denicion).
Por tanto, la relacion E
n+1
lo mas que puede hacer es partir en mas de una clase de
equivalencia alguna de las clases de equivalencia del conjunto cociente anterior. Por
tanto,
e
n
= (Q/E
n
) (Q/E
n+1
) = e
n+1
.
Como, ademas, la relacion E
n+1
se dene inductivamente a partir de la relacion E
n
,
si e
n
= e
n+1
, entonces, las clases a nivel n siguen siendo las clases a nivel n + 1. En
otras palabras, si e
n
= e
n+1
, entonces para todo par p, q Q, pE
n
q si y solamente si
pE
n+1
q. En particular, E
n
= E
n+1
y ambas relaciones de equivalencia son la misma.
Inductivamente, para n + 2 se tendra
pE
n+2
q
_
_
_
pE
n+1
q,
(p, z)E
n+1
(q, z), z
_
_
_

_
_
_
pE
n
q,
(p, z)E
n
(q, z), z
_
_
_
pE
n+1
q pE
n
q.
Por tanto E
n+2
= E
n+1
= E
n
y, en consecuencia, e
n+2
= e
n+1
= e
n
.
Para cualquier m n + 3, aplquese induccion para concluir E
m
= E
n+1
= E
n
y,
ademas, e
m
= e
n
.
Proposici on 64 Con las notaciones del Lema anterior, para cada aut omata A exis-
te n N, con n (Q) 2, tal que para todo m n se verica:
1. pE
m
q pE
n
q, p, q Q.
54 CAP

ITULO 2. AUT

OMATAS FINITOS
2. e
m
= e
n
.
Demostracion. Por el Lema anterior, concluimos:
2 = e
0
e
1
e
2
e
n

Ahora consideremos n = (Q) 2. Pueden ocurrir dos cosas:
Caso I: Que e
i
,= e
i+1
para todo i n. Es decir, que tengamos (con n =
(Q) 2):
2 = e
0
< e
1
< e
2
< < e
n
.
En este caso, tendramos
e
1
e
0
+ 1 = 3,
e
2
e
1
+ 1 4,
.
.
.
e
n1
e
n2
+ 1 e
1
+ (n 2) 3 + (n 1) = n + 2 = (Q).
e
n
e
n1
+ 1 n + 3 = (Q).
Recordemos que e
n
= (Q/E
n
) y el n umero de clases de equivalencia no puede
ser mayor que el n umero de elementos de Q, es decir, habremos logrado que
n + 3 e
n
(Q) = n + 2 y eso es imposible. As que este caso no se puede
dar.
Caso II: La negacion del caso anterior. Es decir, existe un i, con 0 i n (y
n = (Q) 2) tal que e
i
= e
i
+ 1. Entonces, por el Lema anterior, se tendra:
2 = e
0
< e
1
< e
2
< < e
i
= e
i+1
= = e
m
=
A partir de que solo se puede dar el caso II, es obvio que se tienen las propiedades
del enunciado.
Teorema 65 Sea A := (Q, , Q
0
, F, ) un aut omata sin transiciones y sean p, q
dos estados. Entonces, tomando n = (Q) 2, se tendr a que
p
A
q pE
n
q.
Demostracion. Lo dejamos como ejercicio para el alumno.
En particular, el algoritmo que calcula el automata minimal funciona como sigue:
Hallar el conjunto cociente (Q/E
0
) y su cardinal e
0
.
(Siguiendo los E
i
s) Mientras el conjunto cociente nuevo sea alterado con
respecto al anterior, hallar el conjunto cociente siguiente.
Parar cuando el cardinal del nuevo conjunto cociente coincida con el ultimo
calculado.
2.6. CUESTIONES Y PROBLEMAS. 55
2.6. Cuestiones y Problemas.
2.6.1. Cuestiones.
Cuesti on 14 Sea A := (Q, , Q
0
, F, ) una aut omata indeterminista que verica la
siguiente propiedad: Para todo estado q y para todo smbolo z ,
(p : (q, z) = p) 1,
donde signica cardinal. Dar un procedimiento inmediato para hallar uno equiva-
lente que sea determinista.
Cuesti on 15 Hallar una expresi on regular sobre el alfabeto a, b que describa
el lenguaje aceptado por el aut omata siguiente. Sea Q := Q
0
, Q
1
y F = Q
1
.
Siendo la funci on de transici on dada por la tabla:
a b
Q
0
Q
0
Q
1
N.D.
Q
1
N.D. N.D. N.D.
Donde N.D. signica No Denido.
Cuesti on 16 Considerar el aut omata A := (Q, , Q
0
, F, ), donde
:= a,
Q := Q
0
, Q
1
, Q
2
,
F := Q
2
.
Y la funci on de transici on es dada por la Tabla siguiente:
a
Q
0
Q
1
N.D.
Q
1
Q
2
N.D.
Q
2
Q
0
N.D.
Probra que L(A) = (aaa)
n
aa : n N.
Cuesti on 17 Describir una aut omata que acepta el siguiente lenguaje:
L(A) := a, b

: (apariciones de b en ) 2N.
Cuesti on 18 Considerese el aut omata siguiente:
:= 0, 1,
Q := Q
0
, Q
1
, Q
2
, Q
3
, Q
4
, Q
5
,
F := Q
2
, Q
3
, Q
4
.
56 CAP

ITULO 2. AUT

OMATAS FINITOS
Cuya funci on de transici on es dada por la tabla siguiente:
0 1
Q
0
Q
1
Q
2
N.D.
Q
1
Q
0
Q
3
N.D.
Q
2
Q
4
Q
5
N.D.
Q
3
Q
4
Q
4
N.D.
Q
4
Q
4
Q
5
N.D.
Q
5
Q
5
Q
5
N.D.
1. Dibuja el grafo que describe al aut omata.
2. Probar que Q
0
y Q
1
son equivalentes.
3. Probar que Q
2
, Q
3
, Q
4
son equivalentes.
4. Hallar el aut omata mnimo correspondiente.
Cuesti on 19 Sea G una gram atica sobre el alfabeto a, b cuyas reglas de produc-
ci on son las siguientes:
q bA [
A bB [
B aA
Hallar una aut omata que acepte el elnguaje generado por esa gram atica. Hallar el
aut omata mnimo que acepte ese lenguaje. Hallar una expresi on regular que describa
ese lenguaje.
Cuesti on 20 Dado un aut omata A que acepta el lenguaje L, Hay un aut omata
que acepta el lenguaje L
R
?, C omo le describiras?.
Cuesti on 21 dado un aut omata A que acepta el lenguaje descrito por una expresi on
regular y dado un smbolo a del alfabeto, C omo sera el aut omata regular que
acepta el lenguaje L(D
a
())?
2.6.2. Problemas
Problema 34 Construir aut omatas que acepten los siguientes lenguajs:
1. L
1
:= a, b

: abab es una subcadena de .


2. L
2
:= a, b

: ni aa ni bb son subcadenas de .
3. L
3
:= a, b

: ab y ba son subcadenas de .
4. L
4
:= a, b

: bbb no es subcadena de .
Problema 35 Hallar una aut omata determinista equivalente al aut omata indeter-
minista A := (Q
0
, Q
1
, 0, 1, Q
0
, Q
1
, ), donde es dado por la tabla siguiente:
2.6. CUESTIONES Y PROBLEMAS. 57
0 1
Q
0
Q
0
, Q
1
Q
1
N.D.
Q
1
N.D. Q
1
, Q
0
N.D.
Problema 36 Hallar una aut omata determinista equivalente al aut omata indeter-
minista A := (Q, 0, 1, Q
0
, F, ), donde
:= 0, 1,
Q := Q
0
, Q
1
, Q
2
, Q
3
, Q
4
,
F := Q
4
.
Y es dado por la tabla siguiente:
a b
Q
0
N.D. Q
2
Q
1
Q
1
Q
0
, Q
4
N.D. Q
2
, Q
3
Q
2
N.D. Q
4
N.D.
Q
3
Q
4
N.D. N.D.
Q
4
N.D. N.D. Q
3
Problema 37 Minimizar el aut omata sobre el alfabeto 0, 1 dado por las propie-
dades siguientes:
:= 0, 1,
Q := Q
0
, Q
1
, Q
2
, Q
3
, Q
4
, Q
5
,
F := Q
3
, Q
4
.
0 1
Q
0
Q
1
Q
2
N.D.
Q
1
Q
2
Q
3
N.D.
Q
2
Q
2
Q
4
N.D.
Q
3
Q
3
Q
3
N.D.
Q
4
Q
4
Q
4
N.D.
Q
5
Q
5
Q
4
N.D.
Hallar su grafo, una gram atica que genere el mismo lenguaje y una expresi on regular
que lo describa.
Problema 38 Construir una expresi on regular y un aut omata nito asociados al
lenguaje siguiente:
L := a, b

: z a, b

, = azb.
Problema 39 Hallar una expresi on regular y una gram atica asociadas al lenguaje
aceptado por el aut omata A := (Q, , Q
0
, F, ), dado por las propiedades siguientes
58 CAP

ITULO 2. AUT

OMATAS FINITOS
:= a, b,
Q := Q
0
, Q
1
, Q
2
, Q
3
, Q
4
,
F := Q
3
, Q
4
.
Y es dado por la tabla siguiente:
a b
Q
0
Q
1
N.D. N.D.
Q
1
Q
2
Q
4
N.D.
Q
2
Q
3
Q
4
N.D.
Q
3
Q
3
Q
4
N.D.
Q
4
N.D. Q
4
N.D.
Problema 40 Hallar un aut omata determinista que acepta el lenguaje descrito por
la siguiente expresion regular:
a(bc)

(b +bc) +a.
Minimiza el resultado obtenido.
Problema 41 Haz lo mismo que en el problema anterior para la expresi on regular:
(a (ab)

da (ab)

.
Problema 42 Haz lo mismo que en el problema anterior para la expresi on regular:
0(011)

0 + 10

(1 (11)

0 +) +.
Problema 43 Cacula un aut omata nito determinista minimal, una gram atica re-
gular y una expresi on regular para el lenguaje siguiente:
L := 0, 1

: [ (0s en ) 2N] [ (1s en ) 3N].


Problema 44 Obtener una expresi on regular para el aut omata descrito por las si-
guientes propiedades: A := (Q, , Q
0
, F, ), y
:= a, b,
Q := Q
0
, Q
1
, Q
2
,
F := Q
2
.
Y es dado por la tabla siguiente:
a b
Q
0
Q
0
, Q
2
N.D. Q
1
Q
1
Q
2
Q
1
N.D.
Q
2
N.D. N.D. Q
1
2.6. CUESTIONES Y PROBLEMAS. 59
Problema 45 Dada la expresi on regular (ab)

(ba)

+aa

, hallar:
1. El aut omata determinista minimal que acepta el lenguaje que describe esa ex-
presi on regular.
2. Una gram atica regular que genere dicho lenguaje.
Problema 46 Considera un tipo de datos real que consideres acorde con el tipo
de alg un lenguaje de programaci on. Halla una expresi on regular que describa las
palabras de este tipo de datos. Halla un aut omata que los reconzoca y una gram atica
que los genere.
Problema 47 Se considera el aut omata descrito por la informaci on siguiente A :=
(Q, , Q
0
, F, ), y
:= 0, 1,
Q := Q
0
, Q
1
, Q
2
, Q
3
, Q
4
, Q
5
,
F := Q
1
, Q
3
, Q
5
.
Y es dado por la tabla siguiente:
0 1
Q
0
N.D. N.D. Q
1
Q
1
Q
2
N.D. N.D.
Q
2
N.D. Q
3
N.D.
Q
3
Q
4
N.D. Q
1
Q
4
Q
5
N.D. N.D.
Q
5
N.D. N.D. Q
3
, Q
1
Se pide:
1. Dibujar el grafo de transici on del aut omata.
2. Decidir si 0101 es aceptado por al aut omata y describir la computaci on sobre
esta palabra.
3. Hallar un aut omata determinista ue acepte el mismo lenguaje.
4. Minimizar el aut omata determinista hallado.
5. Hallar una expresi on regular que describa el languaje aceptado por ese aut oma-
ta.
6. Hallar una gram atica que genere dicho lenguaje.
Problema 48 Hallar un aut omata que acepte las expresiones matematicas con su-
mas y restas y sin parentesis. A nadir a este una cinta donde escribir la traduccion
al espa nol acabando en punto. Ejemplo:
4 + 3 5 cuatro mas tres menos cinco.
60 CAP

ITULO 2. AUT

OMATAS FINITOS
Problema 49 Suponer que al aut omata anterior se le quisiera a nadir expresiones
con parentesis. Para hacer esto toma la expresion regular del automata anterior y
se a nade considera la siguiente expresion regular (

. Demostrar que el automata


no comprueba que todos los parentesis que se abren son cerrados.
Problema 50 Otro de los problemas de los aut omatas nitos es que no tienen en
cuenta eo orden entre los distintos elementos. Utilicemos una expresion regular
mencionada en el ejercicio anterior. Hallar el automata que acepte el lenguaje ge-
nerado por la siguiente expresion regular
(

alpha(

.
Demostrar que el automata no tiene en cuenta el orden de aparicion de las llaves y
los parentesis.
Problema 51 Este ejercicio demuestra el problema de traducci on para las estruc-
turas condicionales. Suponemos que EXPRESION es conocido y los bucles condicio-
nales est an dados por la siguiente expresi on regular:
((if EXPRESION then BUCLE) (else if EXPRESION then BUCLE )*) Hallar un
automata nito que acepte el lenguaje dado por la expresi on regular y discutir como
a nadir una cinta de traducci on.
Captulo 3
Gramaticas Libres de Contexto
y Automatas con Pila
3.1. Introduccion
El proceso de compilacion es el proceso que justica la presencia de un estudio
teorico de lenguajes y automatas como el que se desarrolla en esta asignatura. Sin
embargo, el objetivo de un curso como este no puede ser solamente, el dise no de
un compilador, ni siquiera el analisis de todos los procesos que intervienen en la
compilacion. Para culminar este proceso existe una asignatura dedicada a Compi-
ladores (la asignatura llamada Procesadores de Lenguajes) en el curso cuarto de
la titulacion dentro del plan de estudios vigente.
De otro modo, la perdida de la motivacion puede suponer la perdida del interes
(y del potencial atractivo) de una materia teorica y densa como la presente. En
compensacion, podemos recuperar el esquema basico de un clasico como los dos
vol umenes (que han inuido intensamente en el dise no del presente manuscrito)
como son [Aho-Ullman, 72a] y [Aho-Ullman, 72b]. Por tanto, dedicaremos una parte
del curso al proceso de parsing (Analisis Sintactico) sin mas pretensiones que las
de dar al lector una introduccion suciente al tema. En terminos bibliogracos,
alcanzaremos lo esencial del volumen I ([Aho-Ullman, 72a]) dejando el resto de los
temas de [Aho-Ullman, 72b] para la asignatura correspondiente.
Antes de comenzar se nalemos que los lenguajes de programacion modernos son esen-
cialmente lenguajes dados por gramaticas libres de contexto. El uso de gramaticas
en niveles mas elevados de la jerarqua de Chomsky hace nos adentremos en lo
indecidible algortmicamente:
En la Seccion 1.5 observamos que el Problema de Palabra para Gramaticas
Formales cualesquiera es indecidible, esto es, no puede existir ning un algoritmo
que lo resuelva.
Para gramaticas sensibles al contexto, el problema de decidir si el lenguaje que
genera es vaco o no tambien es un problema indecidible.
En cuanto al Problema de Palabra para gramaticas sensibles al contexto, el
61
62 CAP

ITULO 3. LIBRES DE CONTEXTO


problema es PSPACEcompleto para ciertas subclases, con lo que se hace
impracticable para su uso en compilacion.
De ah la restriccion a Gramaticas Libres de Contexto para los lenguajes de progra-
macion (con algunos aderezos de producciones sensibles al contexto controlables
por tratamientos semanticos. Veremos en este Captulo (vease la Subseccion 3.3.3)
que el problema de palabra para gramaticas libres de contexto es decidible. Esto
signica que es posible dise nar un algoritmo/programa que realice la tarea siguiente:
Problema de detecci on de errores para lenguajes dados por gramaticas
libres de contexto. Dado un lenguaje de programaci on L

y una gram atica


libre de contexto G que lo genera, y dada una palabra

(un chero) decidir si


es un programa v alido (i.e. una palabra aceptada) para ese lenguaje de programaci on.
Recordemos que una Gramatica Libre de Contexto (CFG) o de Tipo 2 es dada por
la siguiente denicion.
Denici on 66 (Gramaticas libres de contexto o de Tipo 2) Llamaremos gra-
m atica libre de contexto a toda gram atica G = (V, , q, P) tal que todas las produc-
ciones de P son del tipo siguiente:
A , donde A V y ( V )

.
Un lenguaje libre de contexto es un lenguaje generado por una gram atica libre de
contexto.
El sistema de transicion asociado a una gramatica libre de contexto es el mismo que
asociamos a una gramatica cualquiera. Usaremos el smbolo C
G
C

para indicar
que la conguracion C

es deducible de la conguracion C mediante computaciones


de G.
Esta sera la primera accion asociada a un compilador: resolver el problema de
palabra para un lenguaje de programacion jado a priori. En otras palabras, ser
capaz de decidir si un chero es un programa o devolver al programador un mensaje
de error.
El problema de palabra en general admite tambien como input la gramatica que
lo genera. Sin embargo, la situacion usual es que nuestro lenguaje de programacion
esta jado. Por tanto, el problema a resolver no tiene a la gramatica como input
sino, simplemente, la palabra. Esto es,
Problema de detecci on de errores para un lenguaje dado por una gramati-
ca libre de contexto. Fijado un lenguaje de programacion L decidir si una pala-
bra

(un chero) es un programa v alido (i.e. una palabra aceptada) para ese
lenguaje de programaci on.
En este caso no se necesita generar el programa que decida como parte de la resolu-
cion del problema. Basta con tener un unico programa que resuelve el problema de
palabra para cualquier palabra dada. El modelo de algoritmo natural que aparece
es el automata con pila que discutiremos en este Captulo.
3.2.

ARBOLES DE DERIVACI

ON DE UNA GRAM

ATICA 63
Un automata con pila (PDA) resuelve el problema de palabra para una gramatica
libre de contexto. En este Captulo dise namos solamente los aspectos relativos a la
equivalencia entre ambas concepciones: la gramatica como generador y los PDAs co-
mo reconocedores. Mostraremos la equivalencia entre ambas concepciones sin entrar
en detalles de la ecacia de ese dise no.
3.2.

Arboles de Derivacion de una Gramatica
Denici on 67 Llamamos formas sentenciales a todos los elementos de (V )

.
Llamaremos formas terminales a las formas sentenciales que s olo tienen smbolos
en el alfabeto de smbolos terminales, es decir, a los elementos de

.
Denici on 68 (

Arbol de Derivaci on) Sea G := (V, , Q


0
, P) una gram atica li-
bre de contexto, sea A V una variable. Diremos que un arbol T
A
:= (V, E) etique-
tado es un arbol de derivaci on asociado a G si verica las propiedades siguientes:
La raz del arbol es un smbolo no terminal (i.e. una variable).
Las etiquetas de los nodos del arbol son smbolos en V .
Cada nodo interior est a etiquetado con un smbolo en V (i.e. un smbolo no
terminal).
Cada hoja est a etiquetada con una variable, un smbolo terminal o
Si un nodo est a etiquetado con una variable X y sus descendientes (ledos de
izquierda a derecha) en el arbol son X
1
, . . . , X
k
entonces, hay una producci on
X X
1
X
k
en G.
Ejemplo 9 Hallar arboles de derivaci on para las gram aticas siguientes:
A BF, B EC, E a, C b, F c, de tal manera que la raz sea A y
las hojas esten etiquetadas con a, b, c en este orden.
A

B F

E C c

a b
(3.1)
Q
0
zABz, B CD, C c, D d, A a, de tal manera que la raz sea
Q
0
y las hojas esten etiquetadas (de izquierda a derecha) mediante z, a, c, d, z.
Q
0
aQ
0
bQ
0
[ bQ
0
aQ
0
[ .Escribe arboles de derivaci on cuyas hojas tengan
la lectura siguiente:
Una s ola hoja con .
64 CAP

ITULO 3. LIBRES DE CONTEXTO


Un arbol con varias hojas, tales que leyendo la palabra se obtenga abab.
Un arbol distinto, con varias hojas tales que leyendo la palabra se obtenga
abab.
Proposici on 69 Sea G := (V, , Q
0
, P) una gram atica libre de contexto, sea A V
una variable. Sea T
A
un arbol asociado a la gram atica con raz A. Sea (V )

la forma sentencial obtenida leyendo de izquierda a derecha los smbolos de las hojas
de T
A
. Entonces, A
G
. En particular, las formas sentenciales alcanzables desde
el smbolo inicial Q
0
est a representados por los arboles de derivaci on de raz Q
0
.
Demostracion. Obvio a partir de la denicion.
Corolario 70 Las palabras sobre el alfabeto est an en el lenguaje L(G) generado
por una gram atica G si y solamente si existe un arbol de derivaci on cuyas hojas
(ledas de izquierda a derecha) expresan la palabra .
Demostracion. Obvio.
3.2.1. Un algoritmo para la vacuidad.
Comenzaremos con un ejemplo de un algoritmo que sera reutilizado, por analoga,
en los demas algoritmos de esta Subseccion. Su objetivo consiste en mostrar que el
problema de decidir si es o no vaco el lenguaje generado por una gramatica libre de
contexto.
Teorema 71 (Vacuidad de un lenguaje libre de contexto) El problema de la
vacuidad de los lenguajes generados por gram aticas libres de contexto es decidible.
Es decir, existe un algoritmo que toma como input una gram atica libre de contexto
G y devuelve una respuesta armativa si L(G) ,= y negativa en caso contrario.
Demostracion. Denimos el algoritmo siguiente:
Input: Una gramatica libre de contexto G = (V, , Q
0
, P).
M :=
N := A V : (A a) P, a

while N ,= M do
M := N
N := A V : (A a) P, a (N )

N.
endwhile
if Q
0
N, then Ouput SI
else Output NO

Observese que este algoritmo tiene la propiedad de que los sucesivos conjuntos M
y N construidos en su recorrido son siempre subconjuntos del conjunto de smbolos
3.3. FORMAS NORMALES DE GRAM

ATICAS. 65
no terminales V que es un conjunto nito. Por tanto, es un algoritmo que acaba sus
calculos en todos los datos de entrada.
Veamos que este algoritmo realiza las tareas prescritas. Para ello, consideremos una
cadena de subconjuntos N
i
de V que reejan los sucesivos pasos por el ciclo while.
Escribamos N
0
= y denotemos por N
i
al conjunto obtenido en el iesimo paso
por el ciclo while, sin considerar la condicion de parada. Esto es,
N
i
:= A V : (A a) P, a (N
i1
)

N
i1
.
Esta claro que tenemos una cadena ascendente
N
0
N
1
N
2
N
n

Por construccion observamos, ademas, que si existe un paso i tal que N
i
= N
i+1
,
entonces, N
i
= N
m
para todo m i + 1.
Analicemos que propiedades han de vericar las variables en N
i
. Por induccion se
probara lo siguiente:
Una variable X V verica que X N
i
si y solamente si existe un arbol de
derivaci on de G de altura
1
i+1 que tiene X como raz y cuyas hojas est an etiquetadas
con smbolos en .
Una vez probada esta propiedad, es claro que se tiene:
Sea i tal que nuestro algoritmo detiene sus calculos tras i pasos por el ciclo
while. Sea N el conjunto de variables calculado en ese paso. Entonces, N = N
m
,
m i + 1.
Si Q
0
N, entonces, N = N
i+1
y existe un arbol de derivacion de la gramatica
de altura i + 2 cuyas hojas son todo smbolos en y cuya raz es Q
0
.
Sea

, la palabra descrita mediante la lectura (de izquierda a derecha)


de las hojas del arbol. Entonces, Q
0

G

, luego L(G) ,= .
Por otro lado, si L(G) ,= habra un arbol de derivacion de G cuya raz
es Q
0
y cuyas hojas tienen sus etiquetas en producen, leyendo de
izquierda a derecha, . Sea m la altura de tal arbol (m 1, obviamente) y,
por tanto, Q
0
N
m1
N
i+1
= N para cualquier m.
3.3. Formas Normales de Gramaticas.
Esta Seccion mostrara una serie de reducciones algortmicas (transformaciones de
gramaticas) hasta reducir una gramatica libre de contexto a una gramatica en Forma
Normal de Chomsky. Las diferentes subsecciones estan basadas en las progresivas
reducciones y simplicaciones.
1
Medimos altura por el n umero de nodos atravesados en el camino mas largo.
66 CAP

ITULO 3. LIBRES DE CONTEXTO


3.3.1. Eliminacion de Smbolos In utiles o Inaccesibles
Denici on 72 (Smbolos In utiles) Sea G := (V, , Q
0
, P) una gram atica libre
de contexto. Llamamos smbolos utiles de G a todos los smbolos (terminales o no)
X V tales que existen , (V )

de tal modo que:


Q
0

G
X, y X
G
.
Los smbolos in utiles son los que no son utiles.
Ejemplo 10 Consideremos la gram atica G := (Q
0
, A, B, a, b, Q
0
, P), donde las
producciones de P son dadas por:
P := Q
0
a [ A, A AB, B b.
Observese que A, B, b son smbolos in utiles en esta gram atica. La raz on es que el
lenguaje aceptado es a. Si, por el contrario, a nadieramos la producci on A a,
entonces, todos ellos seran smbolos utiles.
Denici on 73 Sea G := (V, , Q
0
, P) una gram atica libre de contexto.
Llamamos smbolos productivos (o fecundos) de G a todos los smbolos no
terminales X V tales que existe

tal que X
G
. Son improductivos
(o infecundos) a los que no satisfacen esta propiedad.
Llamamos smbolos accesibles de G a todos los smbolos (terminales o no)
X V tales que existen , (V )

de tal modo que:


Q
0

G
X.
Se llaman inaccesibles a los que no son accesibles.
Ejemplo 11 N otese que si X es un smbolo util, se han de producir dos propiedades.
De una parte, la propiedad Q
0

G
X que nos dice que X es accesible. De otra
parte, por estar en una gram atica libre de contexto, ha de existir

tal que
X
G
. Esto es necesario porque, al ser libre de contexto, todas las producciones
se basan en reemplazar una variables por formas sentenciales. Si la variable X no
alcanzara nunca una forma terminal en el sistema de transici on, entonces, X
tampoco alcanzara una forma terminal contradiciendo el hecho de ser X util. La
existencia de

tal que X
G
nos dice que X es un smbolo fecundo o
productivo. En el siguiente ejemplo:
P := Q
0
AB [ CD, A AQ
0
, B b, C Cc [ , D d.
El smbolo B es fecundo y accesible, pero es un smbolo in util.
Proposici on 74 Si G := (V, , Q
0
, P) es una gram atica libre de contexto, entonces
los smbolos utiles son productivos y accesibles. El recproco no es cierto, en general.
3.3. FORMAS NORMALES DE GRAM

ATICAS. 67
Demostracion. Es obvia la implicacion enunciada. En cuanto a ejemplos que mues-
tran que el recproco no es en general cierto, baste con ver las gramaticas expuestas
en los Ejemplos 10 y 11 anteriores.
Proposici on 75 Si G := (V, , Q
0
, P) es una gram atica libre de contexto, y libre
de smbolos infecundos, entonces todo smbolo es util si y solamente si es accesible.
Demostracion. En ausencia de smbolos infecundos accesibilidad es sin onimo de
utilidad. La prueba es la obvia.
Proposici on 76 [Eliminaci on de smbolos infecundos] Toda gram atica libre de
contexto es equivalente a una gram atica libre de contexto sin smbolos infecundos.
Adem as, dicha equivalencia puede hacerse de manera algortmica.
Demostracion. El algoritmo es esencialmente el propuesto en el Teorema 70 ante-
rior:
Input: Una gramatica libre de contexto G = (V, , Q
0
, P).
M :=
N := A V : (A a) P, a

while N ,= M do
M := N
N := A V : (A a) P, a (N )

N.
endwhile
Output

G := (V N, , Q
0
,

P), donde

P son las producciones de P que
involucran solamente smbolos en (V N)
Por la prueba del Teorema 70, sabemos que N es justamente el conjunto de variables
productivas y el algoritmo realiza la tarea pretendida.
Eliminaci on de Smbolos Inaccesibles.
Teorema 77 [Eliminaci on de Smbolos Inaccesibles] Toda gram atica libre de
contexto es equivalente a una gram atica libre de contexto sin smbolos inaccesibles.
Adem as, dicha equivalencia puede hacerse de manera algortmica.
Demostracion. El siguiente algoritmo elimina smbolos inaccesibles de una gramati-
ca libre de contexto. La demostracion de que es un algoritmo y de que realiza la tarea
prevista es analoga a la demostracion del Teorema 70 anterior. Notese que, de facto,
el algoritmo calcula los smbolos que s son accesibles.
Input: Una gramatica libre de contexto G = (V, , Q
0
, P).
68 CAP

ITULO 3. LIBRES DE CONTEXTO


M := Q
0

N := X V : A M, , (V )

, con A X en P.
while N ,= M do
M := N
N := X V : A M, , (V )

, con A X en P.
endwhile
Output: La gramatica

G = (

V ,

, Q
0
,

P), con

V := N V,

:= N ,

P := Las producciones de P que solo contienen los elementos de



V

.
Eliminaci on de Smbolos In utiles.
Teorema 78 [Eliminaci on de Smbolos In utiles] Toda gram atica libre de con-
texto es equivalente a una gram atica sin smbolos in utiles. Adem as, esta equivalencia
es calculable algortmicamente.
Demostracion. Utilizaremos un algoritmo que combina los dos algoritmos descritos
anteriormente y el enunciado de la Proposicion 74. Primero eliminamos los smbolos
infecundos y luego los inaccesibles.
Input: Una gramatica libre de contexto G = (V, , Q
0
, P).
Eliminar Smbolos Infecundos
M :=
N := A V : (A a) P, a

while N ,= M do
M := N
N := A V : (A a) P, a (N )

N.
endwhile
G
1
:= (V
1
, , Q
0
, P
1
), donde
V
1
:= V N,
P
1
:= Las producciones en P que no involucran smbolos fuera de V
1
.
3.3. FORMAS NORMALES DE GRAM

ATICAS. 69
Eliminar Smbolos Inaccesibles de G
1
M := Q
0

N := X V
1
: A M, , (V )

, con A X en P.
while N ,= M do
M := N
N := X V
1
: A M, , (V )

, con A X en P.
endwhile
Output: La gramatica

G = (V
1
, , Q
0
, P
1
), con
V
1
:= N V
1
, := N ,
P := Las producciones de P que solo contienen los elementos de V
1
.
3.3.2. Transformacion en Gramaticas Propias.
En nuestro camino hasta la Forma Normal de Chomsky, continuaremos con trans-
formaciones de las gramaticas libes de contexto hasta obtener gramaticas propias.
Eliminaci on de producciones.
Denici on 79 Sea G = (V, , Q
0
, P) una gram atica libre de contexto.
1. Llamaremos producciones en G a todas las producciones de la forma X ,
donde X V es un smbolo no terminal.
2. Diremos que la gram atica G es libre si verica una de las dos propiedades
siguientes:
O bien no posee producciones,
o bien la unica producci on es de la forma Q
0
y Q
0
no aparece
en el lado derecho de ninguna otra producci on de P (es decir, no existe
ninguna producci on de la forma X Q
0
, con , (V )

).
Ejemplo 12 Consideremos la gram atica cuyas producciones son:
Q
0
aQ
0
bQ
0
[ bQ
0
aQ
0
[ .
No es una gram atica libre.
Teorema 80 (Transformaci on a Gramatica libre) Toda gram atica libre de
contexto es equivalente a una gram atica libre. Adem as, dicha equivalencia es cal-
culable algortmicamente.
70 CAP

ITULO 3. LIBRES DE CONTEXTO


Demostracion. El algoritmo comienza con una tarea que repite esencialmente lo
hecho en algoritmos anteriores.
Hallar V

:= A V : A
G
.
A partir del calculo de V

procedemos de la forma siguiente:


1. Calculamos el nuevo sistema de producciones P del modo siguiente:
Consideremos todas las producciones de la forma siguiente:
A
0
B
1

1
B
k

k
,
donde
i
(V

, B
i
V

y no todos los
i
son iguales a .
Denamos
P := P A
0
X
1

1
X
k

k
: X
i
B
i
, .
Consideremos todas las producciones de la forma siguiente:
A B
1
B
k
,
donde B
i
V

. Denamos:
P := P (A X
1
X
k
: X
i
B
i
, A ) .
Suprimir todas las producciones.
2. Finalmente, si Q
0
V

sea V := V Q

0
, con Q

0
, V . Y a nadamos
P = P Q

0
Q
0
[ .
En otro caso, V = V .
El output sera la gramatica G := (V , , Q

0
, P) y satisface las propiedades pretendi-
das.
Eliminaci on de Producciones Simples
Denici on 81 (Producciones Simples o Unarias) Se llaman producciones sim-
ples (unarias) a las producciones de una gram atica libre de contexto de la forma
A B, donde A y B son smbolos no terminales.
Teorema 82 [Eliminaci on de Producciones Simples] Toda gram atica libre es
equivalente a una gram atica libre y sin producciones simples. Esta equivalencia
es calculable algortmicamente.
Demostracion. El algoritmo tiene dos partes. La primera parte sigue el mismo
esquema algortmico usado en resultados anteriores. La segunda parte se dedica a
eliminar todas las producciones simples.
3.3. FORMAS NORMALES DE GRAM

ATICAS. 71
Clausura Transitiva de smbolos no terminales. Se trata de calcular, para cada
A V , el conjunto siguiente:
V
A
:= B V : A B A.
El algoritmo obvio funciona del modo siguiente:
Input: Una gramatica libre de contexto G := (V, , Q
0
, P)
Para cada A V calcular
M
A
:=
N
A
:= A
while N
A
,= M do
M := N
A
N
A
:= C V : B C esta en P, y B N
A
N
A
od
Output: Para cada A V , N
A
.
Eliminar las producciones simples. Para cada variable B tal que existe una
produccion simple A B en P, procederemos somo sigue:
Hallar todos los Xs tales que B V
X
.
Para cada produccion B que no sea produccion simple, a nadir a P
la produccion X .
Eliminar toda produccion del tipo X B.
Notese que cada iteracion de la parte segunda del proceso a nade producciones no
simples y elimina al menos una produccion simple. Con ello se alcanza el objetivo
buscado.
Hacia las Gramaticas Propias.
Denici on 83 Diremos que una gram atica libre de contexto G := (Q, , Q
0
, F, )
es acclica (o libre de ciclos) si no existe ning un smbolo no terminal A V tal que
existe una computaci on no trivial (en el sistema de transici on asociado):
A B
1
B
k
= A.
Denici on 84 (Gramaticas Propias) Diremos que una gram atica libre de con-
texto G := (Q, , Q
0
, F, ) es propia si verica las siguientes propiedades:
G es acclica,
G es libre,
72 CAP

ITULO 3. LIBRES DE CONTEXTO


G es libre de smbolos in utiles.
Lema 85 [Interacci on entre los algoritmos expuestos] Se dan las siguientes propie-
dades:
1. Si G es una gram atica libre de contexto que es libre y est a libre de produc-
ciones simples, entonces G es acclica.
2. Sea G es una gram atica libre de contexto, libre. Sea

G la gram atica obtenida
despues de aplicar a G el algoritmo de eliminaci on de producciones simples
descrito en la demostraci on del Teorema 81. Entonces,

G sigue siendo libre.
3. Sea G es una gram atica libre de contexto, libre de producciones simples y
libre. Sea

G la gram atica obtenida despues de aplicar a G el algoritmo de
eliminaci on de smbolos in utiles descrito en la demostraci on del Teorema 77.
Entonces,

G sigue siendo libre de producciones simples y libre.
Demostracion.
1. Supongamos que la gramatica fuera libre y libre de producciones simples,
pero hubiera un estado que generara un ciclo. Es decir, supongamos que existe:
A
1

k
A,
con k 1. Entonces, puedo suponer que

k
:=
0
X
1

1

n1
X
n

n
,
donde
i

, X
i
V . En primer lugar, observese que, como estamos hablan-
do de gramaticas libres de contexto, las unicas producciones que se aplican son
de la forma B . Si alguno de los
i
fuera distinto de la palabra vaca , no
habra forma de borrarlos usando las producciones libre de contexto (para
quedarnos solamente con un smbolo no terminal como A). Por tanto,
i
=
para cada i, 0 i n. En conclusion, solo tenemos (como ultima accion):
B
k
= X
1
X
n
A.
Si, ademas, n 2, con una unica produccion libre de contexto, no podramos
eliminar nada mas que un smbolo no terminal. Con lo cual no podramos
obtener A. Por tanto, tenemos, en realidad, n 2. Tenemos dos casos n = 1 o
n = 2. Si n = 1 tendremos:
B
k
= X
1
A.
En el este caso debera existir la produccion simple X
1
A, pero hemos dicho
que nuestra gramatica es libre de producciones simples. Por tanto, el segundo
caso (n = 1) no puede darse. Nos queda un unico caso n = 2 y tendremos:
B
k
= X
1
X
2
A.
3.3. FORMAS NORMALES DE GRAM

ATICAS. 73
En este caso hay dos opciones simetricas, con lo que discutiremos solo una
de ellas: X
1
= A y X
2
es una produccion. Pero nuestra gramatica es
libre. Si hay una produccion X
2
es solo porque X
2
es el smbolo inicial
X
2
= Q
0
. Por tanto, tenemos una computacion:
A
1

k1
AQ
0
A,
Pero, para llegar a AQ
0
desde A tiene que ocurrir que Q
0
este en la parte
derecha de alguna produccion (lo cual es imposible por la propia dencion de
libre. Luego no puede haber ciclos.
2. Retomemos el algoritmo descrito en la prueba del Teorema 81. Una vez hemos
calculado V
A
para cada A, y tratamos las producciones unarias del tipo A B
del modo siguiente:
Hallar todos los Xs tales que B V
X
.
Para cada produccion B que no sea produccion simple, a nadir a P
la produccion X .
Eliminar la produccion A B.
Ahora bien, si G es una gramatica libre, y si Q
0
es el estado inicial, Q
0
no
puede estar en la derecha de ninguna produccion. En particular, no existen
producciones simples de la forma A Q
0
. Por tanto, toda produccion simple
A B de P verica que B ,= Q
0
. De otro lado, como G es libre, para
todo B ,= Q
0
, las producciones de la forma B verican que ,= .
Por tanto, ninguna de las producciones que a nadimos en este proceso es una
produccion. Y, por tanto,

G sigue siendo libre.
3. Basta con observar que el algoritmo de eliminacion de smbolos in utiles so-
lamente elimina smbolos y producciones que los involucran. Pero no a nade
producciones. Por ello, si no haba en G ninguna produccion simple, tampoco
la habra en

G. Si G era libre, tambien lo sera

G puesto que no a nadimos
producciones.
Teorema 86 Toda gram atica libre de contexto es equivalente a una gram atica pro-
pia. Dicha equivalencia es calculable algortmicamente.
Demostracion. Basta con unir los algoritmos antes expuestos en el orden adecuado
como indica el Lema 84 anterior. El proceso sera el siguiente:
Input: Una gramatica G libre de contexto.
Hallar G
1
la gramatica libre obtenida aplicando a G, mediante el algoritmo
del Teorema 79.
Hallar G
2
la gramatica obtenida de aplicar a G
1
el algoritmo del Teorema 81.
74 CAP

ITULO 3. LIBRES DE CONTEXTO


Hallar G
3
la gramatica obtenida de aplicar a G
2
el algoritmo del Teorema 77.
Output: G
3
El algoritmo anterior realiza la tarea prescrita. La gramatica G
1
es claramente
libre como consecuencia del Teorema 79. Como consecuencia del apartado 2 del
Lema 84, como la gramatica G
1
es libre, tambien es libre la gramatica G
2
. De
otro lado, el Teorema 81 nos garantiza que G
2
es libre de producciones simples.
Como consecuencia del apartado 3 del Lema 84, la gramatica G
3
sigue siendo una
gramatica libre y libre de producciones simples. Asimismo, el Teorema 77 nos
garantiza que G
3
es libre de smbolos in utiles.
Finalmente, el apartado 1 del Lema 84, nos garantiza que G
3
es acclica. Por tanto,
verica todas las propiedades para ser una gramatica propia.
3.3.3. El Problema de Palabra para Gramaticas Libres de Contexto
es Decidible.
En la Seccion 1.5 hemos descrito algunos resultados relativos a la indecidibilidad
del Problema de palabra de sistemas de semiThue (o gramaticas de Tipo 0). En
esta Subseccion mostraremos que este problema es decidible para gramaticas libres
de contexto. Es decir, se trata de mostrar un algoritmo que resuelve el problema
siguiente:
Problema de Palabra para Gramaticas libres de Contexto. Dada una
gramatica libre de contexto G = (V, , Q
0
, P) y dada una palabra

, deci-
dir si L(G).
Lema 87 Sea G = (V, , Q
0
, P) una gram atica libre de contexto y libre. Sea
L(G) una palabra aceptada por la gram atica y sea:
Q
0

1

2

n
= ,
una computaci on aceptadora de , donde
i
(V )

son formas sentenciales de


la gram atica. Entonces, la longitud de cada una de estas formas sentenciales verica:
[
i
[ [[, i.
Demostracion. De hecho, basta con observar que si tenemos dos conguraciones
(i.e. dos formas sentenciales)
G

y si la gramatica es libre, entonces o bien


= (en cuyo caso c = Q
0
forzosamente) o bien [c[ [[ (dado que no suprimimos
ninguna variable, al reemplazarla nos sale, al menos, un smbolo y la longitud no
puede disminuir).
Teorema 88 El problema de palabra es decidible para gram aticas libres de contexto.
3.3. FORMAS NORMALES DE GRAM

ATICAS. 75
Demostracion. Basta con usar el Lema anterior. El procedimiento es el siguien-
te: En primer lugar, transformamos nuestra gramatica original en una gramatica
libre. posteriormente, dado , construiremos un grafo G

:= (N

, E

) con las
reglas siguientes:
Los vertices del grafo N

son todas las palabras de (V )

de longitud menor
o igual que la longitud de .
Las aristas del grafo E

son los pares (c, c

) N

tales que c
G
c

.
A partir de del grafo G

, calculamos la clausura transitiva de Q


0
: CT
G
(Q
0
). Enton-
ces, usando el Lema anterior, esta en L(G) si y solamente si esta en la clausura
transitiva de Q
0
.
Nota 89 Decidibilidad no signica eciencia. Es decir, el hecho de la existencia
de un algoritmo para el problema de palabra no signica de modo inmediata que
se pueda usar ese algoritmo para la detecci on de errores. De hecho, debe haber un
preprocessing para el c alculo del aut omata (con pila, como veremos) que decide el
problema de palabra y luego s olo debe usarse el aut omata para cada palabra concreta.
En otro caso estaramos consumiendo una enormidad de tiempo de c alculo para cada
vericaci on de correctitud de una palabra.
3.3.4. Transformacion a Formal Normal de Chomsky.
Denici on 90 (Forma Normal de Chomsky) Una gram atica libre de contexto
G := (Q, , Q
0
, F, ) se dice que est a en Forma Normal de Chomsky si es libre y
las unicas producciones (exceptuando, eventualmente, la unica producci on Q
0

), son exclusivamente de uno de los dos tipos siguientes.
A b, con A V y b ,
A CD, con A, C, D V .
Teorema 91 (Transformaci on a Forma Normal de Chomsky) Toda gram ati-
ca libre de contexto es equivalente a una gram atica libre de contexto en Forma Nor-
mal de Chomsky. Adem as, esta equivalencia es algortmicamente computable.
Demostracion. Bastara con que demos un algoritmo que transforma gramaticas
propias en gramaticas en forma normal de Chomsky. As, supongamos que tenemos
una gramatica G = (V, , Q
0
, P) propia. Procederemos del modo siguiente:
Denamos un par de clases

V y

P de smbolos no terminales y producciones, con-
forme a las reglas siguientes:
Inicializar con

V := V ,

P = .
Si Q
0
esta en P, a nadir Q
0
a

P sin modicar

V .
76 CAP

ITULO 3. LIBRES DE CONTEXTO


Si en P hay una produccion del tipo A a entonces, a nadir A a a

P
sin modicar

V .
Si en P hay una produccion del tipo A CD, con C, D V , esta en P,
entonces, a nadir A CD a

P sin modicar

V .
Finalmente, Para cada produccion en P del tipo
A X
1
X
k
,
con X
i
V que no sea de ninguno de los tres tipos anteriores
2
realizar las
tareas siguientes:
Para cada i tal que X
i
V , no modicar

V
Para cada i tal que X
i
, a nadir a

V una nueva variable

X
i
, distinta
a todas las que ya estuvieran en

V . A nadir a

P la produccion

X
i
X
i
en este caso. (Observese que, en este caso, aparece una produccion del Tipo
1).
A nadir

P la produccion A X

1
X

k
, donde X

i
viene dada por:
X

i
:=
_
X
i
, si X
i
V

X
i
, en otro caso
Si k = 2, no modicar.
Si k > 2, reemplazar en

P, la produccion A X

1
X

k
por una cadena
de producciones:
A X

1
Y
2
, Y
2
X

2
Y
3
, , Y
k1
X

k1
X

k
,
a nadiendo a

V las variables Y
2
, . . . , Y
k1
.
Output: (

V , , Q
0
,

P).
Es claro que el algoritmo descrito verica las propiedades deseadas.
Nota 92 Observese que los arboles de derivaci on asociados a gram aticas en Forma
Normal de Chomsky son arboles binarios cuyas hojas vienen de nodos con salida
unaria.
2
Observese que k 2 puesto que no hay producciones simples. Si k = 2, al no ser de ninguno de
los tipos anteriores, son o bien dos smbolos en o bien uno es un smbolos en y el otro esta en
V . En cualquier caso se aplica el mismo metodo.
3.4. AUT

OMATAS CON PILA. 77


3.3.5. Forma Normal de Greibach
Es otra normalizacion de las gramaticas libres de contexto que hace referencia al
trabajo de Sheila A. Greibach en Teora de Automatas.
Denici on 93 Una gram atica G := (V, , Q
0
, P) se dice en Forma Normal de Grei-
bach si es libre y las unicas producciones (exceptuando, eventualmente, la unica
producci on Q
0
) pertenecen al tipo siguiente:
A X,
donde A V es una variable, es un smbolo terminal y X es una lista
(posiblemente vaca) de smbolos no terminales (variables en V ) entre los cuales no
est a el smbolo inicial Q
0
.
Obviamente toda gramatica libre de contexto es equivalente a una gramatica en
Formal Normal de Greibach.
3.4. Automatas con Pila.
3.4.1. Nocion de Automatas con Pila.
Antes de pasar a denir un automata con pila (o pushdown) recordemos (super-
cialmente) la estructura de datos pila (stack).
Stacks.
Podemos identicar las pilas con ciertos lenguajes y ciertas funciones sobre un alfa-
beto del modo siguiente. Comenzaremos a nadiendo un nuevo smbolo Z
0
que no
esta en . Las pilas (stacks) son elementos del lenguaje: Z
0

. El smbolo Z
0
se
identicara con el signicado Fondo de la Pila.
Tendremos unas ciertas funciones sobre pilas:
empty: Denimos la aplicacion
empty : Z
0

0, 1,
dada mediante:
empty(Z
0
) :=
_
1, si =
0, en otro caso
top: Denimos la aplicacion
top : Z
0

,
mediante la regla siguiente:
Dada una pila Z
0
Z
0

(con = w
1
w
n

),
top(Z
0
w) :=
_
w
n
, si = w
1
w
n

, ,=
, en caso contrario
78 CAP

ITULO 3. LIBRES DE CONTEXTO


push: Apilar (empujar) una pila encima de otra. Denimos la aplicacion
push : Z
0

Z
0

,
mediante la regla siguiente:
Dada una pila Z
0
Z
0

(con = w
1
w
n

), y una palabra a

,
dada mediante: a := a
1
a
r
, denimos
push(Z
0
, a) := Z
0
w
1
w
n
a
1
a
r
Z
0

.
pop (Pull Out the toP): Denimos la aplicacion
pop : Z
0

Z
0

,
mediante la regla siguiente:
Dada una pila Z
0
Z
0

, denimos pop(Z
0
) como el resultado de eliminar
top(Z
0
), esto es
pop(Z
0
) :=
_
Z
0
w
1
w
n1
Z
0

, si = w
1
w
n

, ,=
Z
0
, en caso contrario
Nota 94 Una de las propiedades b asicas de las operaciones es, obviamente, la si-
guiente:
push(pop(Z
0
), top(Z
0
)) = Z
0
.
Denici on 95 (NonDeterministic Pushdown Automata) Un aut omata con
pila (o pushdown aut omata) indeterminista es una lista A := (Q, , , Q
0
, F, Z
0
, )
donde:
Q es un conjunto nito cuyos elementos se llaman estados y que suele deno-
minarse espacio de estados,
es un conjunto nito (alfabeto),
es un conjunto nito llamado alfabeto de la pila.
Q
0
es un elemento de Q que se denomina estado inicial,
F es un subconjunto de Q, cuyos elementos se denominan estados nales acep-
tadores,
Z
0
es un smbolo que no est a en el alfabeto y que se denomina fondo de la
pila.
es una correspondencia:
: Q( ) ( ) Q

,
3.4. AUT

OMATAS CON PILA. 79


que se denomina funci on de transici on y que ha de vericar la propiedad si-
guiente
3
para cada lista (q, x, A) Q( ) ( ):
((q, ) Q

: (q, x, A) = (q, )) < .


Es decir, s olo un n umero nito de elementos de Q

estar an relacionados
con cada elemento (q, x, A) mediante la funci on de transici on.
Nota 96 N otese que hemos supuesto que la funci on de transici on tiene su rango
(el conjunto hacia el que va a parar) en Q

. Esta condici on nos dir a (m as


adelante) que no podemos escribir en la pila el smbolo de fondo de pila nada m as
que cuando se escriba en la conguraci on inicial. Podremos, sin embargo, leerlo. No
estar a, en ning un caso, en medio de la pila.
El determinismo en automatas con pila diere del caso de aut omatas nitos. No
vamos a exigir que sea aplicacion sino algo mas delicado.
Denici on 97 (Aut omata con Pila Determinista) Un aut omata con pila in-
determinista A := (Q, , , Q
0
, Z
0
, ) se denomina determinista si verica las si-
guientes dos propiedades:
La imagen de cualquier lectura contiene a lo sumo 1 elemento. Es decir, para
cualesquiera (q, x, A) Q( )( Z
0
), el conjunto de los elementos
relacionados con el a traves de tiene, a lo sumo, 1 elemento:
((p, ) Q

: (q, x, A) = (p, )) 1.
Si dados q Q y A , existieran (p, ) Q

tales que (q, , A) = (q, ),


entonces, ninguno de los elementos de Q( Z
0
) tiene imagen por .
Es decir, si
((p, ) Q

: (q, , A) = (p, )) = 1,
entonces

_
_
x
(p, ) Q

: (q, x, A) = (p, )
_
= 0.
Nota 98 No es cierto, en el caso de aut omatas con pila, que todo aut omata con
pila indeterminista sea equivalente a un aut omata con pila determinista. As, el
siguiente lenguaje es aceptado por un aut omata con pila indeterminista, pero no
puede ser aceptado por un aut omata con pila determinista:
L := a
n
b
m
c
n
: n, m 1
_
a
n
b
m
c
m
: n, m 1 a, b, c

.
3
Recuerdese que si X es un conjunto nito, denotamos por (X) su cardinal (i.e. el n umero de
sus elementos).
80 CAP

ITULO 3. LIBRES DE CONTEXTO


3.4.2. Sistema de Transicion Asociado a un Automata con Pila.
Sea dado un automata A := (Q, V, , Q
0
, F, Z
0
, ). El espacio de conguraciones es
el producto o
A
:= Q

Z
0
V

. Dada una palabra

, la conguracion
inicial vendra dada por:
I
A
() := (Q
0
, , Z
0
),
esto es, escribimos en la cinta de trabajo , escribimos el estado inicial en la unidad
de control y escribimos Z
0
en la pila como tareas de inicializacion.
Modelo graco del sistema de transici on.
Gracamente podemos dibujar el automata con pila mediante los siguientes ele-
mentos. El alfabeto de la cinta sera = 0, 1. El alfabeto de la pila sera =
A, B, C. El espacio de estados seran los primeros cien n umeros naturales, i.e.
Q = 0, 1, 2, 3, . . . , 98, 99, 100. Una representacion graca de la conguracion sera:
[ 0 [ 1 [ 1 [

[ 23 [
.
.
.
B
C
Z
0
En este dibujo, el estado es 23 y la unidad de control lee el primer smbolo de la
cinta de entrada 0 y tambien lee el smbolo B en la pila. Supondremos que, en la
pila, lee siempre el smbolo que se encuentra mas arriba en la pila (el top), lo que
supone que, en el dibujo, por encima de B no hay nada en la pila.
Transiciones: Formalismo.
Las transiciones son de los tipos siguientes:
Transiciones Read/Push. Son transiciones entre dos conguraciones:
(q, , Z
0
Z)
A
(q

, Z
0
Z

),
donde q Q y
:= w
1
w
r
, Z
0
Z = Z
0
Z
1
Z
n
.
Realizamos las siguientes operaciones:
Read Leemos la informacion (Q, w
1
, Z
n
) (es decir, el estado, el primer
smbolo de la palabra y el top de la pila). Supondremos w
1
,= .
Transition Aplicamos la funcion de transicion obteniendo (Q, w
1
, Z
n
) =
(Q

, ), con

, ,= .
Push and Move Entonces,
3.4. AUT

OMATAS CON PILA. 81


Q

= Q (cambia el estado de la transicion).


= w
2
w
r
(borramos un smbolo de la palabra a analizar (mo-
ve).
Z

:= Z
0
Z
1
Z
n1
, es decir, Z
0
Z

:= push(pop(Z
0
Z), ).
Transiciones Read/Pop: Son transiciones entre dos conguraciones:
(Q, , Z
0
Z)
A
(Q

, Z
0
Z

),
donde q Q y
:= w
1
w
r
, Z
0
z = Z
0
z
1
z
n
.
Realizamos las siguientes operaciones:
Read Leemos la informacion (q, w
1
, z
n
) (es decir, el estado, el primer
smbolo de la palabra y el top de la pila). Supondremos w
1
,= .
Transition Aplicamos la funcion de transicion obteniendo (q, w
1
, z
n
) =
(q

, ) (esta es la caracterizacion de las acciones Read/Pop). Observese


que, en este caso, se ha obtenido como smbolo de la pila, esto indica
que debemos hacer pop sin hacer push.
Pop and Move Entonces,
q

= q (cambia el estado de la transicion).


= w
2
w
r
(borramos un smbolo de la palabra a analizar (mo-
ve).
Z
0
z

:= Z
0
z
1
z
n1
:= pop(Z
0
z) = push(pop(Z
0
z), ).
Transiciones Lambda/Push. Son transiciones entre dos conguraciones:
(q, , Z
0
z)
A
(q

, Z
0
z

),
donde q Q y
:= w
1
w
r
, Z
0
z = Z
0
z
1
z
n
.
Realizamos las siguientes operaciones:
Read Lambda En este caso, no se lee la cinta a un que s se lee la pila.
Leeremos (q, , z
n
) (es decir, el estado, la palabra vaca y el top de la pila).
Transition Aplicamos la funcion de transicion obteniendo (q, , z
n
) =
(q

, ), con

, ,= .
Push Entonces,
q

= q (cambia el estado de la transicion).


= (No borramos un smbolo de la palabra a analizar (make


no move)).
Z
0
z

:= Z
0
z
1
z
n1
:= push(pop(z), ).
82 CAP

ITULO 3. LIBRES DE CONTEXTO


Transiciones Lambda/Pop: Son transiciones entre dos conguraciones:
(q, , Z
0
z)
A
(q

, Z
0
z

),
donde q Q y
:= w
1
w
r
, Z
0
z = Z
0
z
1
z
n
, con z
n
,= Z
0
.
Realizamos las siguientes operaciones:
Read Lambda De nuevo, no se lee la cinta aunque s se lee la pila. Ten-
dremos (q, , z
n
) (es decir, el estado, la palabra vaca y el top de la pila).
Transition Aplicamos la funcion de transicion obteniendo (q, , z
n
) =
(q

, ). Observese que, en este caso, se ha obtenido como smbolo de la


pila, esto indica que debemos hacer pop sin hacer push.
Pop and Move Entonces,
q

= q (cambia el estado de la transicion).


= (No borramos un smbolo de la palabra a analizar (make


no move)).
Z
0
z

:= Z
0
z
1
z
n1
:= pop(Z
0
z) = push(pop(Z
0
z), ).
Nota 99 Es importante se nalar que la diferencia entre instrucciones /Push y
/Pop es articial, esto es, las incluimos por necesidades did acticas solamente.
N otese que
pop(z) = push(pop(z), )
y
push(z) = push(pop(z), ),
con

, no tienen diferencias sem anticas signicativas porque, obviamente,

. Las distinguimos para que el lector pueda ver la operaci on borrar el ultimo
dgito de la pila como una operaci on distinguida.
Nota 100 Los aut omatas nitos del Captulo anterior se pueden releer como aut oma-
tas con pila del modo siguiente: Suponemos que la funci on de transici on verica
que
(q, x, z) = (q

, ), (q, x, z) Q( )

.
En este caso, todas las instrucciones pasan por hacer push(pop(Z
0
), ) que no cambia
el contenido de la pila desde la conguraci on inicial.
Proposici on 101 Si A es un aut omata con pila determinista, su sistema de transi-
ci on (S
A
,
A
) es determinista. Es decir, dada una conguraci on c S
A
, existir a a
lo sumo una unica conguraci on c

S
A
tal que c
A
c

.
Demostracion. Siguiendo las dos hipotesis de la Denicion de Automata De-
terminista: Dada una conguracion, uno pude hacer una transicion Read/... o
una Lambda/.... Si cabe la posibilidad de hacer una transicion Lambda/..., no
habra ninguna transicion que permita hacer lectura (por la segunda de las con-
diciones impuestas). Si, por el contrario, no hay ninguna transicion Lambda/...,
entonces es forzoso hacer una transicion de lectura y esta es, a lo sumo, unica.
3.4. AUT

OMATAS CON PILA. 83


Nota 102 Esta propiedad nos garantiza que la ejecuci on de un aut omata con pila
determinista es posible dado que a cada conguraci on le sigue o bien una congura-
ci on siguiente o bien una salida por no tener ninguna opci on de continuar.
Codicaci on del Aut omata con Pila.
La introduccion que hemos hecho de la nocion de Automata con Pila se basa en varios
principios basicos. El primero es que los Automatas con Pila son expresables sobre
un alfabeto nito, del mismo modo que lo fueron los automatas. Una vez visto que
expresable sobre un alfabeto nito y visto el sistema de transicion podemos admitir
(espero) que se trata de un programa que es ejecutable en alg un tipo de interprete
que sea capaz de seguir las instrucciones asociadas a la transicion. Es, obviamente,
simple dise nar un programa (en Java, C++, C o cualquier lenguaje) asociado a
un automata (con la salvedad de los problemas de determinismo/indeterminismo:
no tiene sentido programar automatas no deterministas porque su sistema de
transicion no es determinista).
Sin embargo, podemos utilizar diversas representaciones del automata. La mas sim-
ple es la de tabla. Para ello, podemos usar dos entradas. De una parte, el producto
cartesiano E := Q( ) ( Z
0
) que sera el conjunto de las entradas de
la funcion de transicion. De otro lado tenemos un conjunto innito de las salidas
O := Q

, pero nuestra hipotesis nos dice que solo un n umero nito de elementos
de Q

van a entrar en la relacion. As tendremos una tabla como la siguiente:


Ejemplo 13 El PDA viene dado por:
Q := Q
0
, q
1
, r, s,
:= 0, 1,
:= A,
Estado Inicial Q
0
.
Smbolo de fondo de pila Z
0
.
F := r.
Tabla de transici on:
E O
(Q
0
, 0, Z
0
) (Q
0
, A)
(Q
0
, 0, A) (Q
0
, AA)
(Q
0
, 1, A) (q
1
, )
(q
1
, 1, A) (q
1
, )
(q
1
, , Z
0
) (r, )
(q
1
, , A) (s, )
(q
1
, 1, Z
0
) (s, )
84 CAP

ITULO 3. LIBRES DE CONTEXTO


Tomemos como entrada la palabra 0
3
1
3

.
Inicializamos
I := (Q
0
, 000111, Z
0
)
Ahora las sucesivas computaciones seran dadas por la secuencia siguiente:
Read/Push I
A
c
1
= (Q
0
, 00111, Z
0
A)
Read/Push c
1

A
c
2
= (Q
0
, 0111, Z
0
AA)
Read/Push c
2

A
c
3
= (Q
0
, 111, Z
0
AAA)
Read/Pop c
3

A
c
4
= (q
1
, 11, Z
0
AA)
Read/Pop c
4

A
c
5
= (q
1
, 1, Z
0
A)
Read/Pop c
5

A
c
6
= (q
1
, , Z
0
)
Lambda/Pop c
6

A
c
6
= (r, , Z
0
)
Si, por el contrario, escojo la palabra 0
3
1
2

se produce el efecto siguiente:


Inicializamos
I := (Q
0
, 00011, Z
0
)
Read/Push I
A
c
1
= (Q
0
, 0011, Z
0
A)
Read/Push c
1

A
c
2
= (Q
0
, 011, Z
0
AA)
Read/Push c
2

A
c
3
= (Q
0
, 11, Z
0
AAA)
Read/Pop c
3

A
c
4
= (q
1
, 1, Z
0
AA)
Lambda/Pop c
4

A
c
5
= (q
1
, , Z
0
A)
Lambda/Pop c
5

A
c
6
= (s, , Z
0
)
Finalmente, escojo la palabra 0
2
1
3

se produce el efecto siguiente:


Inicializamos
I := (Q
0
, 00111, Z
0
)
Read/Push I
A
c
1
= (Q
0
, 0111, Z
0
A)
Read/Push c
1

A
c
2
= (Q
0
, 111, Z
0
AA)
Read/Pop c
2

A
c
3
= (q
1
, 11, Z
0
A)
Read/Pop c
3

A
c
4
= (q
1
, 1, Z
0
)
Lambda/Pop c
4

A
c
5
= (s, , Z
0
)
Observese que:
Si tengo mas ceros que unos, llegare a leer (q
1
, , A) con lo que acabare en el
estado s
3.4. AUT

OMATAS CON PILA. 85


Si tengo mas unos que ceros, llegare a leer (Q
0
, 1, Z
0
) con lo que acabare en s.
La unica forma de llegar a r sera tener el mismo n umero de ceros que de unos.
Mas a un, las unicas palabras que llegan al estado r son las dadas por
L := 0
n
1
n
: n N.
3.4.3. Lenguaje Aceptado por un Automata con Pila.
Hay dos maneras de interpretar el lenguaje aceptado por un automata con pila: por
estado nal aceptador y por pila y cinta vacas. Sea A := (Q, , , Q
0
, Z
0
, F) un
automata con pila y sea o
A
el sistema de transicion asociado. Escribiremos c
A
c

cuando la conguracion c

es alcanzable desde c en el sistema de transicion o


A
.
Denici on 103 (Lenguaje aceptado mediante estado nal aceptador)
Sea A := (Q, , , Q
0
, Z
0
, F, ) un aut omata con pila y sea o
A
el sistema de transi-
ci on asociado. Para cada palabra

, denimos la conguraci on inicial en a


la conguraci on:
I
A
() := (Q
0
, , Z
0
) o
A
.
Llamaremos lenguaje aceptado (mediante estado nal nal aceptador) por el aut oma-
ta A (y lo denotaremos por L(A)) al conjunto siguiente:
L(A) :=

: I
A
()
A
(f, , z) o
A
, f F.
Este concepto nos lleva a un modelo de programa en el que la condicion de parada
viene dada por los estados nales aceptadores y por tener la cinta vaca. Es decir,
un programa con la estructura siguiente:
Input:

Initialize: I := (Q
0
, , Z
0
).
while I , F Z
0

do
Hallar c

S
A
tal que I
A
c

Com.: Realiza un paso en el sistema de transicion.


I := c

od
Output: ACEPTAR
end
Denici on 104 (Lenguaje aceptado mediante pila y cinta vacas) Sea A :=
(Q, , , Q
0
, Z
0
, F) un aut omata con pila y sea o
A
el sistema de transici on asociado.
Llamaremos lenguaje aceptado (mediante pila y cinta vacas) por el aut omata A (y
lo denotaremos por L

(A)) al conjunto siguiente:


L(A) :=

: I
A
()
A
(f, , Z
0
) o
A
, f Q Q
0

4
.
4
Si admitimos Q0 entonces, todo lenguaje aceptado por pila vaca debera contener la palabra
vaca.
86 CAP

ITULO 3. LIBRES DE CONTEXTO


La diferencia entre aceptar por pila vaca o por estado nal es que en el caso de
aceptar por estado nal, la pila puede estar o no vaca mientras que en el caso de
aceptacion por pila vaca, la pila queda vaca, pero no nos preocupamos de cual es
el estado alcanzado.
En este segundo caso el programa tendra la pinta siguiente:
Input:

Initialize: I := (Q
0
, , Z
0
).
while I , Q Z
0
do
Hallar c

S
A
tal que I
A
c

Com.: Realiza un paso en el sistema de transicion.


I := c

od
Output: ACEPTAR
end
Nota 105 N otese que las palabras no aceptadas (i.e. Output: RECHAZAR) no se
han incluido en una salida del bucle sino que se admite que puedan continuar inde-
nidamente dentro del bucle. Trataremos de claricar el signicado de este proceso.
N otese tambien que los programas anteriores no tienen el sentido usual cuando
el aut omata es indeterminista. Lo cual es, parcialmente, causa de este formalismo
admitiendo bucles innitos.
La siguiente Proposicion muestra la equivalencia entre ambas formas de aceptacion,
aunque sera mas comodo utilizar el caso de pila vaca.
Proposici on 106 Un lenguaje es aceptado por un aut omata con pila mediante pila
y cinta vacas si y solamente si es aceptado por un aut omata con pila mediante
estado nal aceptador.
Demostracion. Mostraremos un mecanismo de paso, construyendo para cada len-
guaje L(A) aceptado por un automata con pila A mediante estado nal aceptador
un automata con pila

A que acepta el mismo lenguaje mediante pila y cintas vacas
y recprocamente. Esto es, L(A) = L

(

A).
Dado un automata con pila A := (Q, , , Q
0
, Z
0
, F, ) que acepta el lenguaje
L(A) mediante estado nal aceptador, construyamos el nuevo aut omata que
aceptara el mismo lenguaje mediante pila vaca

A := (

Q,

,

,

Q
0
,

Z
0
,

F,

) del
modo siguiente:
Sea p
0
, p
f
, Q dos nuevos estados y denamos

Q := Q p
0
, p
f
.


:= ,

Q
0
:= p
0
,

Z
0
:= Z
0
.
La idea clave consiste en introducir un nuevo smbolo en el alfabeto de
la pila X
0
que protegera el smbolo de fondo de la pila. As, elegiremos
X
0
, y

:= X
0
.
3.4. AUT

OMATAS CON PILA. 87


F := F, dejamos el mismo conjunto de estados nales aceptadores
5
.
Denamos

:

Q
_

Z
0

,
mediante:


(p
0
, w, Z
0
) = (Q
0
, Z
0
X
0
). Es decir, inicializamos protegiendo Z
0
con una variable X
0
. La transformacion sera:
I
A
()
A
(Q
0
, , Z
0
X
0
).
Mientras vivamos en el viejo automata no cambiamos la funcion
de transicion, es decir:

[
Q({})
= ,
Aqui nos garantizamos que la variable protectora X
0
no sera nunca
a nadida despues de haberla usado por vez primera.
Para una transicion

(q, w, X
0
) hacemos lo que hubiera hecho el viejo
automata si estuviera leyendo la pila vaca. As, si (q, w, Z
0
) = (p, z)
y z ,= haremos:

(q, w, X
0
) := (q, w, Z
0
) = (p, z).
Varios elementos importantes a describir aqu:
Por nuestra denicion de la funcion pop, Z
0
no puede borrarse,
por eso, si la segunda coordenada de (q, w, Z
0
) = (q, z) es z = ,
entonces deniremos:

(q, w, X
0
) := (p, X
0
).
La idea de esta transformacion es que, durante los calculos del
viejo automata, pudiera ser que, en una etapa intermedia, se
vaciase la pila sin haber acabado con la palabra. En ese caso,
seguiramos apilando informacion que podra ser util en el resto
de la computacion.
Si q F, denimos

(q, , z) := (p
f
, ), para z , z ,= Z
0
, X
0
.
Si q F, denimos

(q, , X
0
) := (p
f
, X
0
).
Finalmente, denimos para cada z ,= Z
0
,

(p
f
, , z) = (p
f
, ).
Para alcanzar el estado p
f
, debemos alcanzar un estado nal aceptador de F.
Ademas, las conguraciones de

A tienen la forma siguiente para q ,= p
0
, p
f
:
(q, , Z
0
X
0
Z), con

, Z

,
y estan identicadas con las conguraciones de A dadas mediante:
(q, , Z
0
Z), con

, Z

,
5
Aunque bien podramos haber a nadido p
f
a F y tendramos el todo.
88 CAP

ITULO 3. LIBRES DE CONTEXTO


Las demas conguraciones son o bien la conguracion inicial (Q
0
, , Z
0
) o
conguraciones cuyo estado es p
f
. Para una palabra

, tendremos:
I
A
()
A
(q, , Z
0
Z).
Si q F, el automata

A habra calculado tambien:
I
A
()
A
(q, , Z
0
X
0
Z).
Y, en la siguiente fase, procedera a vaciar la pila, usando

(q, , X
0
) :=
(p
f
, X
0
) y

(p
f
, , z) = (p
f
, ), para todo z ,= Z
0
. Esto nos da L(A) L

(

A).
De otro lado, dada

si L

(A), entonces, habremos realizado una


computacion que produce el efecto siguiente:
I
A
()
A
(p
f
, , Z
0
).
Ahora bien, p
f
solo se alcanza tras una conguracion nal aceptadora de A,
por lo que deberamos haber calculado:
I
A
()
A
(q,

, Z
0
X
0
Z)
A
(p
f
, , Z
0
),
con q F en alg un momento intermedio. Entonces, la accion del aut omata

A
nos permite garantizar que se tiene:
I
A
()
A
(q,

, Z
0
X
0
Z)
A
(q,

, Z
0
X
0
)
A
(p
f
, , Z
0
),
Si

,= , las transiciones asociadas al borrado de la pila (

(q, , ) := (p
f
, )

(q, , X
0
) := (p
f
, X
0
) y

(p
f
, , z) = (p
f
, Z
0
)) no nos permiten borrar conte-
nido en la cinta. Por tanto, la unica conguracion nal alcanzable sera:
I
A
()
A
(q,

, Z
0
X
0
Z)
A
(q,

, Z
0
X
0
)
A
(p
f
,

, Z
0
).
Por tanto, solo cabe la posibilidad de que

= con lo cual habremos hecho


la computacion mediante:
I
A
()
A
(q, , Z
0
X
0
a)
A
(p
f
, , Z
0
).
Y el automata A habra seguido la computacion:
I
A
()
A
(q, , Z
0
Z),
con lo que L

(

A) L(A).
Recprocamente, dado un automata con pila A := (Q, , , Q
0
, Z
0
, F, ) que
acepta el lenguaje L

(A) mediante pila y cinta vacas, construyamos el nuevo


automata que aceptara el mismo lenguaje mediante estados nales aceptadores

A := (

Q,

,

,

Q
0
,

Z
0
,

F,

) del modo siguiente. Introduciremos un estado nal


aceptador nuevo p
f
y denimos

F := p
f
,

Q := Q p
f
. Introducimos un
nuevo smbolo inicial para la pila

Z
0
:= X
0
y denimos

:= Z
0
. Ahora
introducimos una nueva funcion de transicion

denida del modo siguiente:

[
Q({})

= .
3.4. AUT

OMATAS CON PILA. 89

(q, , Z
0
) := (p
f
, ).

(

Q
0
, , X
0
) := (Q
0
, Z
0
).
Es clara la identicacion entre las conguraciones de A y las conguraciones
de

A que poseen un estado de A:
(q, , ) (q, , X
0
).
Ahora consideramos L(

A) el lenguaje aceptado mediante estado nal aceptador
por

A. Una palabra

es aceptada si se ha producido una computacion


cuyos extremos son:
I
A
()
A
(p
f
, , ).
Ahora observamos que el estado p
f
solo se alcanza mediante transiciones
que leen el smbolo Z
0
en la pila (i.e.

(q, , Z
0
) := (p
f
, )). Pero el smbolo
Z
0
solo se lee cuando la pila original esta vaca (i.e. = Z
0
). As, nuestra
computacion debe tener la forma:
I
A
()
A
(q,

, X
0
Z
0
)
A
(p
f
, , X
0
).
De otro lado, estas transiciones no borran informacion en la cinta. Por
tanto, con los mismos argumentos que en el apartado anterior, necesariamente
ha de darse

= y existiran:
I
A
()
A
(q, , X
0
Z
0
)
A
(p
f
, , X
0
Z
0
),
que se corresponde a la computacion en A
I
A
()
A
(q, , Z
0
).
Con ello concluimos que L

(A), es aceptado por A mediante pila y cinta


vacas, y L(

A) L

(A).
De otro lado, supongamos que es aceptado por A mediante pila y cinta
vacas. En ese caso, tendremos una computacion en A de la forma:
I
A
()
A
(q, , Z
0
).
Esto se transforma en una computacion en

A de la forma:
I
A
()
A
(q, , X
0
Z
0
).
Aplicando la transicion (q, , Z
0
) := (p
f
, ) obtendremos:
I
A
()
A
(q, , X
0
Z
0
)
A
(p
f
, , X
0
)
y habremos probado que L

(A) L(

A) como pretendamos.
90 CAP

ITULO 3. LIBRES DE CONTEXTO


3.4.4. Equivalencia con Gramaticas Libres de Contexto.
Teorema 107 Los lenguajes libres de contexto son exactamente los lenguajes acep-
tados por los aut omatas con pila mediante cinta y pila vacas. Es decir, se verican
las siguiente dos propiedades:
1. Para cada gram atica libre de contexto G sobre un alfabeto de smbolos ter-
minales, existe un aut omata con pila A tal que L(G) = L

(A).
2. Para cada aut omata A con alfabeto de cinta existe una gram atica libre de
contexto G tal que el lenguaje generado por G coincide con L

(A).
M as a un, daremos procedimientos de construcci on en ambos sentidos.
Demostracion. Dividiremos la prueba en las dos armaciones.
1. Bastara con lo probemos para gramaticas en Forma Normal de Chomsky. El
resto se obtiene en las progresivas transformaciones de gramaticas. As, su-
pongamos que G es dada mediante G := (V, , Q
0
, P), donde Q
0
es el smbolo
inicial. Deniremos un automata con pila A := (Q, , , Q
0
, Z
0
, F, ) de la
forma siguiente:
Q := Q
0
posee un unico estado (que es tambien el estado inicial).
El smbolo de fondo de la pila es un smbolo auxiliar.
El alfabeto de la pila reune a todos los smbolos (terminales o no) de la
gramatica := V Q
0
.
La funcion de transicion estara dada del modo siguiente:
(Q
0
, , Z
0
) := (Q
0
, Z
0
Q
0
) (al comenzar pongamos Q
0
justo encima
del fondo de la pila).
Si la gramatica tiene una produccion del tipo A a ,
escribamos
6
:
(Q
0
, , A) := (Q
0
, a).
Si la gramatica tiene una produccion del tipo A CD, con C, D V ,
pongamos:
(Q
0
, , A) := (Q
0
, DC).
Finalmente, para cada a , pongamos:
(Q
0
, a, a) := (Q
0
, ).
Para ver la demostracion de la igualdad bastara con observar que la pila ejecuta
un arbol de derivacion de la gramatica. Por tanto, basta con seguir (borrando)
las hojas para ir borrando en la cinta. El vaciado de la cinta y de la pila se
produce conforme vamos vericando las hojas.
2. Para la segunda de las armaciones, consideremos dado un automata con pi-
la A := (Q, , , Q
0
, Z
0
, ) que acepta un lenguaje L

(A). Construyamos la
gramatica G := (V, , Q
0
, P) mediante las deniciones siguientes:
6
Notese que para las producciones A borramos A.
3.5. PROPIEDADES B

ASICAS 91
V := Q ( Z
0
) Q Q
0
. Utilizaremos la notacion qAp) para
representar el smbolo no terminal (q, A, p) V .
El smbolo inicial Q
0
lleva acompa nada unas producciones del tipo si-
guiente:
Q
0
Q
0
Z
0
p),
para cada p Q.
Si la funcion de transicion satisface (p, a, A) = (q, ) con a
y A , escribiremos la produccion:
pAq) a.
Si la funcion de transicion satisface (p, a, A) = (q, B
1
B
n
) con a
y B
1
, . . . , B
n
Z
0
, escribiremos las producciones siguientes:
pAq) apB
n
s
1
)s
1
B
n1
s
2
)s
2
B
n2
s
3
) s
n1
B
1
q),
para todos los estados (s
1
, . . . , s
n2
) Q
n2
.
Nota 108 N otese que la construcci on de la gram atica asociada a un aut omata con
pila introduce un n umero exponencial (en el n umero de estados) de producciones por
lo que es poco aconsejable utilizar esa construcci on. Nos conformaremos con saber
de su existencia. En todo caso, podemos usar aut omatas con una sola producci on
como el mostrado para el paso de gram aticas a aut omatas.
3.5. Algunas Propiedades de la clase de lenguajes libres
de contexto
Denici on 109 Llamamos lenguajes libres de contexto a los lenguajes generados
por una gram atica incontextual (o, equivalentemente, los reconocidos por un aut oma-
ta con pila mediante pila y cinta vacas).
En esta Seccion nos ocuparemos de enunciar unas pocas propiedades de la clase de
lenguajes libres de contexto.
Teorema 110 (Intersecci on con Lenguajes Regulares) La clase de lenguajes
libres de contexto est a cerrada mediante intersecci on con lenguajes regulares. Es
decir, si L

es un lenguaje libre de contexto y si M

es un lenguaje
regular, entonces, L M es un lenguaje libre de contexto.
Nota 111 Veremos que la intersecci on de dos lenguajes libres de contexto puede no
ser un lenguaje libre de contexto. Para ello, consideremos los dos lenguajes siguien-
tes:
L := a

b
n
c
n
: n N a, b, c

.
92 CAP

ITULO 3. LIBRES DE CONTEXTO


M := a
n
b
n
: n N b

a, b, c

.
La intersecci on es el lenguaje:
L M := a
n
b
n
c
n
: n N a, b, c

.
Veremos m as adelante que L M no es un lenguaje libre de contexto.
Denici on 112 (Morsmo de monoides) Dados dos monoides (M, ) y (N, )
llamaremos morsmo de monoides a toda aplicaci on f : M N que verica las
propiedades siguientes:
1. f(
M
) =
N
, donde
M
y
N
son los respectivos elementos neutros de los
monoides M y N.
2. f(x y) = f(x) f(y) para todo x, y M.
Teorema 113 (Imagenes inversas por morsmos) La clase de lenguajes libres
de contexto es cerrada por im agenes inversas por morsmos de monoides. Esto es,
dados dos alfabetos
1
y
2
y dado un morsmo de monoides f :

2
, para
cada lenguaje libre de contexto L

2
, el siguiente tambien es un lenguaje libre de
contexto:
f
1
(L) := x

1
: f(x) L.
Teorema 114 (Complemento de un Lenguaje Libre de Contexto Determinista)
La clase de los lenguajes aceptados por un aut omata con pila determinista es cerrada
por complementaci on. Es decir, si L

es un lenguaje aceptado por un aut omata


con pila determinista, su complementario L
c
:=

L es tambien un lenguaje libre


de contexto.
El siguiente es un importante resultado de caracterizacion de lenguajes libres de
contexto debido a W.F. Ogden
7
.
Denici on 115 (Marcador de una palabra) Llamamos marcador de una pala-
bra x

a una lista := (
1
, . . . ,
n
) 0, 1
n
, donde n = [x[.
Notese que un marcador consiste en se nalar ciertos smbolos de una palabra y no
otros. Obviamente, el n umero de marcadores de una palabra x es igual a 2
|x|
. Una
manera de interpretar un marcador es el de subrayar algunos smbolos de la palabra
y no otros, conforme a la regla obvia: subraya el smbolos iesimo si
i
= 1 y
no lo subrayes en el caso contrario. A modo de ejemplo, tomemos la palabra x =
abbbbabaa de longitud 9 y elijamos dos marcados = (0, 1, 1, 0, 0, 0, 1, 0, 1) y

=
(1, 0, 0, 0, 1, 0, 0, 0, 1). Estos dos marcadores se nalan smbolos de la palabra conforma
a las siguientes reglas:
marcado(x, ) := abbbbabaa.
marcado(x,

) := abbbbabaa.
Llamamos n umero de posiciones distinguidas de un marcador al n umero de 1s. As,
el n umero de posiciones distinguidas de es 4 y el de

es 3.
7
W.F. Ogden. A Helpful Result for Proving Inherent Ambiguity.Mathematical Systems
Theory2 (1968) 191194.
3.5. PROPIEDADES B

ASICAS 93
Teorema 116 (Lema de Ogden) Sea G := (V, , Q
0
, P) una gram atica libre de
contexto. Existe un n umero natural N 1 tal que para toda palabra z L(G) y para
todo marcador de z con un n umero de posiciones distinguidas mayor o igual a N,
existe una factorizaci on:
z = uvwxy,
vericando:
1. La subpalabra w contiene, al menos, una posici on distinguida.
2. Las subpalabras v y x contienen, al menos, una posici on distinguida entre las
dos.
3. La subpalabra vwx tiene, a lo sumo, N posiciones distinguidas.
4. Existe un smbolo no terminal A V tal que se verica Z
0

G
uAy, A
G
vAx
A
G
w. En particular, tenemos una propiedad de bombeo, puesto que para
todo i 0, uv
i
wx

iy L(G).
Aunque el enunciado tiene un aspecto complejo, es un instrumento mas que util
para mostrar lenguajes que no son libres de contexto. Una de las conclusiones de
este Lema de Ogden es el siguiente resultado conocido como Lema de BarHillel
8
aunque es debido a BarHillel, Perles y Shamir.
Corolario 117 (Lema de BarHillel) Si L es un lenguaje que satisface la si-
guiente propiedad:
Para cada n umero natural N, N 1, existe una palabra z L en el lenguaje de
longitud mayor que N vericando la siguiente propiedad:
Para cualesquiera palabras u, v, w, x, y

, vericando
[z = uvwxy, [vwx[ N, [w[ 1, [vx[ 1] i 0, uv
i
wx
i
y , L.
Entonces L no es un lenguaje libre de contexto.
Demostracion. La prueba es obvia a partir del Lema de Ogden. Notese que las
condiciones de longitud pueden reescribirse en terminos de marcadores.
Ejemplo 14 El lenguaje a
n
b
n
c
n
: n N no es un lenguaje libre de contexto.
N otese que para cada N N la palabra a
N
b
N
c
N
verica que para toda factorizaci on
a
N
b
N
c
N
= uvwxy,
con las propiedades prescritas: [vwx[ N, [w[ 1, [vx[ 1 signica que en vwx no
pueden estar m as de dos smbolos (o bien a, b o bien b, c). Por tanto, bombeando
uv
i
wx
i
y en alg un momento desequilibramos el n umero de smbolos. As, por ejemplo,
si vwx s olo contiene smbolos en a, b, bombeando uv
i
wx
i
y aumentamos el n umero
de as y de bs, pero no aumentamos el n umero de cs, con lo que, en alg un momento,
uv
i
wx
i
y , L.
8
Y. BarHillel, M. Perles, E. Shamir. Onformal properties of simple phasestructure gram-
mars.Zeitschrift f ur Phonetik, Sparchwissenschaft und Kommunikationsforschung 14(1961) 143
172.
94 CAP

ITULO 3. LIBRES DE CONTEXTO


3.6. Cuestiones y Problemas
3.6.1. Cuestiones
Cuesti on 22 Comprobar, utilizando las siguientes producciones de una gram atica
G, que al convertir una gram atica libre, puede quedar con smbolos in utiles:
S a [ aA, A bB, B .
Cuesti on 23 Decidir si existe un algoritmo que realice la tarea siguiente:
Dada una gram atica libre de contexto G y dadas dos formas sentenciales de la
gram atica c y c

, el algoritmo decide si c
G
c

.
Cuesti on 24 Sean L
1
y L
2
dos lenguajes libres de contexto. Decidir si es libre de
contexto el lenguaje siguiente:
L :=
_
n1
(L
1
)
n
(L
2
)
n
.
Cuesti on 25 Hallar una estimaci on del n umero de pasos necesarios para generar
una palabra de un lenguaje libre de contexto, en el caso en que la gram atica que lo
genera este en forma normal de Chomsky.
Cuesti on 26 Discutir si alguno de los siguientes lenguajes es un lenguaje incon-
textual:
1. a, b

: =
R
, x, y a, b

, ,= xabay.
2. a
i
b
j
c
k
: i = j j = k.
3. a
i
b
j
c
k
d
l
: (i = j k = l) (i = l j = k).
4. xcy : x, y a, b


a
(x) +
b
(y) 2Z [x[ = [y[.
Cuesti on 27 Sea P un Aut omata con pila con lenguaje por pila y lista vacas
L = N(P), y suponed que la palabra vaca no est a en el lenguaje. Describid c omo
modicar el aut omata para que acepte tambien la palabra vaca mediante pila y lista
vacas.
3.6.2. Problemas
Problema 52 Dada una gram atica libre de contexto G, con las siguientes produc-
ciones:
Q
0
AB [ 0Q
0
1 [ A [ C, A 0AB [ , B B1 [ .
Se pide:
Eliminar los smbolos in utiles
Convertirla en libre
Eliminar las producciones unitarias
3.6. CUESTIONES Y PROBLEMAS 95
Problema 53 Eliminar las variables improductivas en la gram atica G con las si-
guientes producciones:
Q
0
A [ AA [ AAA, A ABa [ ACa [ a, B ABa [ Ab [ ,
C Cab [ CC, D CD [ Cd [ CEa, E b.
Eliminar los smbolos inaccesibles en la gram atica resultante.
Problema 54 Hallar una gram atica libre equivalente a la siguiente:
Q
0
aQ
0
a [ bQ
0
b [ aAb [ bAa, A aA [ bA [ .
Es una gram atica propia?.
Problema 55 Hallar una gram atica propia equivalente a la siguiente:
Q
0
XY, X aXb [ , Y bY c [ .
Problema 56 Sea G = (V, , Q
0
, P) la gram atica libre de contexto dada por las
propiedades siguientes:
V := Q
0
, X, Y, Z, T,
:= 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, , (, ),
Las producciones en P est an dadas por:
Q
0
X [ X +Q
0
, X T [ Y Z,
Y T [ (X +Q
0
), Z Y [ Y Z,
T 0 [ 1 [ 2 [ 3 [ 4 [ 5 [ 6 [ 7 [ 8 [ 9.
Se pide:
1. Hallar la clase de formas terminales de esta gram atica.
2. Hallar el lenguaje generado por esta gram atica.
3. Eliminar producciones unarias.
4. Eliminar producciones in utiles.
5. Convertirla en una gram atica propia.
6. Transformarla en Forma Normal de Chomsky.
Problema 57 Hacer los mismos pasos 3 a 6 del problema anterior con la gram atica
siguiente:
Q
0
A [ B, A aA [ aAb [ a, B Bd [ ABa [ b.
96 CAP

ITULO 3. LIBRES DE CONTEXTO


Problema 58 Eliminar producciones y hacer los mismos pasos del problema an-
terior con la gram atica siguiente:
Q
0
ABQ
0
[ BAQ
0
[ , A bAA [ a, B aBB [ b.
Problema 59 Dar un algoritmo que decida si el lenguaje generado por una gram ati-
ca libre de contexto es nito o innito.
Problema 60 Hallar un aut omata con pila para el lenguaje
L := 0
n
1
n
: n N.
Problema 61 Hallar un aut omata con pila para el palndromo.
Problema 62 Construir aut omatas con pila que acepten los complementarios (en
a, b

) de los siguiente lenguajes:


1. a
n
b
n
c
n
: n N.
2.
R
: a, b.
3. a
m
b
n
a
m
b
n
: m, n 1.
Problema 63
9
Probar que el conjunto de palabras que pueden aparecer en una pila
de un aut omata con pila es un lenguaje regular.
Problema 64 Probar que si un aut omata con pila verica que existe una constante
k N tal que la pila nunca contiene palabras de longitud mayor que k, entonces, el
lenguaje aceptado por ese aut omata es un lenguaje regular.
Problema 65 Dise nar un automata con pila para cada uno de los siguientes len-
guajes
1.
a
i
b
j
c
k
[i ,= jorj ,= k
2. El conjunto de todos las cadenas de smbolos que no son de la forma ww, esto
es que no son igual a ning un string repetido.
Problema 66 Sea el siguiente PDA denido por
P = (Q
0
, q
1
, q
2
, q
3
, f), a, b, Z
0
, A, B, , Q
0
, Z
0
, f)
Donde est a dada por las siguientes reglas:
(Q
0
, a, Z
0
) = (q
1
, AAZ
0
) (Q
0
, b, Z
0
) = (q
2
, BZ
0
) (Q
0
, , Z
0
) = (f, )
(q
1
, a, A) = (q
1
, AAA) (q
1
, b, A) = (q
1
, ) (q
1
, , Z
0
) = (Q
0
, Z
0
)
(q
2
, a, B) = (q
3
, ) (q
2
, b, B) = (q
2
, BB) (q
2
, , Z
0
) = (Q
0
, Z
0
)
(q
3
, , B) = (q
3
, ) (q
3
, , Z
0
) = (q
1
, AZ
1
)
9
Problema Difcil.
3.6. CUESTIONES Y PROBLEMAS 97
1. Demostrar que la cadena de caracteres bab est a en el lenguaje.
2. Demostrar que la cadena abb est a en el lenguaje.
3. Dar los contenidos de la pila despues de que el aut omata ha ledo b
7
a
4
.
4. Describir el lenguaje generado.
Problema 67 Un aut omata con pila se llama restringido si en cada transici on la
pila solamente aumenta en, a lo sumo, un smbolo. Demostrar que todo lenguaje
dado por un aut omata se puede denir mediante aut omatas restringidos.
Problema 68 Convertir la gram atica
Q
0
0Q
0
1 [ A, A 0A1 [ Q
0
[ ,
a un aut omata con pila que acepte el lenguaje por pila vaca o por estados nales
aceptadores.
Problema 69 Convertir la gram atica con producciones
Q
0
aAA, A aQ
0
[ bQ
0
[ a,
a un aut omata con pila que acepte el lenguaje por pila vaca o por estado nales.
Problema 70 Dise nar una gram atica y un aut omata con pila que acepte el siguiente
lenguaje:
0
n
1
m
[ n m 2m.
Problema 71 Consideremos la siguiente gram atica libre de contexto. :
< Q
0
> while < EXPRESION > < PROCEDIMIENTO >
< Q
0
> if < EXPRESION > then < PROCEDIMIENTO >
< PROCEDIMIENTO > < Q
0
>
< PROCEDIMIENTO > t + +; cout << endl << t << endl;
< EXPRESION > < NUMERO > less than < V ARIABLE >
< EXPRESION > < V ARIABLE > less than < NUMERO >
< EXPRESION > < NUMERO > less than < FORMULA >
< FORMULA > < FORMULA > + < V ARIABLE >
< FORMULA > (< FORMULA >)
< NUMERO > 1 < NUMERO >
< NUMERO > 0
< V ARIABLE > t
< V ARIABLE > < FORMULA > +t
< V ARIABLE > < FORMULA > +1
98 CAP

ITULO 3. LIBRES DE CONTEXTO


Denotaremos a las variables utilizando < x >, donde la variable de inicio sera
denotada con < Q
0
>. El alfabeto esta formado por los siguientes smbolos:
:= while, if, , , then, t, +, ; , cout, endl, <<, less than, 1, 0, (, ).
Se pide lo siguiente:
1. Eliminar las producciones unarias de la gram atica.
2. Eliminar los smbolos in utiles de la gram atica.
3. Construir la tabla de an alisis sint actico de la gram atica.
4. Obtener la siguiente palabra mediante derivaciones a la izquierda:
while t less than 110 if t less than 10 then t++; cout << endl << t << endl; .
Problema 72 Una gram atica se dice ambigua si se puede derivar la misma palabra
mediante dos derivaciones diferentes a la izquierda.
Demostrar que la siguiente gram atica es ambigua:
< Q
0
> if < EXPRESION > then < PROCEDIMIENTO >
< Q
0
> if < EXPRESION > then < PROCEDIMIENTO >
else < PROCEDIMIENTO >
< PROCEDIMIENTO > if < EXPRESION > then < PROCEDIMIENTO >
< PROCEDIMIENTO > if < EXPRESION > then < PROCEDIMIENTO >
else < PROCEDIMIENTO >
< PROCEDIMIENTO > System.out.println(1);
< PROCEDIMIENTO > System.out.println(0);
< EXPRESION > < NUMERO > less than < V ARIABLE >
< EXPRESION > < V ARIABLE > less than < NUMERO >
< NUMERO > 1 < NUMERO >
< NUMERO > 0
< V ARIABLE > t
3.6. CUESTIONES Y PROBLEMAS 99
Demostrar que esta gram atica genera el mismo lenguaje:
< Q
0
> if < EXPRESION > then < PROCEDIMIENTO >
< Q
0
> if < EXPRESION > then < PROCED ELSE >
else < PROCEDIMIENTO >
< PROCEDIMIENTO > if < EXPRESION > then < PROCEDIMIENTO >
< PROCED ELSE > if < EXPRESION > then < PROCED ELSE >
else < PROCED ELSE >
< PROCEDIMIENTO > System.out.println(1);
< PROCEDIMIENTO > System.out.println(0);
< PROCED ELSE > System.out.println(1);
< PROCED ELSE > System.out.println(0);
< EXPRESION > < NUMERO > less than < V ARIABLE >
< EXPRESION > < V ARIABLE > less than < NUMERO >
< NUMERO > 1 < NUMERO >
< NUMERO > 0
< V ARIABLE > t
y ademas demostrar que no es ambigua.
Problema 73 Construir una derivacion a la izquierda de la siguiente palabra 10 +
11 1111 utilizando la siguiente gram atica:
< Q
0
> < EXPRESION > < EXPRESION >
< Q
0
> < EXPRESION > + < EXPRESION >
< EXPRESION > < NUMERO > + < EXPRESION >
< EXPRESION > < NUMERO > < EXPRESION >
< NUMERO > 1 < NUMERO >
< NUMERO > 0 < NUMERO >
< NUMERO > 0[1.
Decidir si la gram atica es ambigua y que pasa si se elimina la segunda producci on.
Problema 74 Supongamos que el siguiente lenguaje de programaci on dado por la
100 CAP

ITULO 3. LIBRES DE CONTEXTO


siguiente gram atica:
< Q
0
> < DECLARACION >< Q
0
>< ORDEN >
< DECLARACION > < TIPO >< NOMBRE >=< V ALOR >;
< TIPO > REAL[INTEGER
< NOMBRE > a[b
< ORDEN > < NOMBRE >=< ORDEN > + < ORDEN >;
< ORDEN > < V ALOR >
< ORDEN > < NOMBRE >
< V ALOR > 1 < V ALOR >
< V ALOR > 0
Hallar una derivaci on a la izquierda para esta palabra (los espacios y retornos de
carro se eliminaran):
REAL a = 10; REAL b = 110; a = a +b; b = a +a +a;
Demostrar que el lenguaje asi denido admite como correcta la siguiente expresion:
REAL a = 10; a = a = a +a; +110s;
Comprobar que se acepta esta expresion y modicar la gram atica para que solo se
acepten expresiones correctas de sumas.
Apendice A
Generadores de Analisis
sintactico
Los generadores de analizadores sintacticos han tenido gran auge y en el momento
de publicacion de estas notas, hay una gran variedad de ellos. Por ser el padre de
muchos de ellos, quizas el mas conocido sea YaCC, desarrollado en AT & T, a partir
de el se crearon versiones libres, algunas tan conocidas como GNU Bison y Ber-
keley YaCC. YaCC necesitaba un analizador morfologico que separara el codigo a
realizar el analisis sintactico en Tokens. Como en el caso de analizadores sintacti-
cos, tambien existen diferentes opciones para generar analizadores morfologicos. Por
comodidad, muchos analizadores sintacticos incluyen alg un metodo para poder es-
pecicar los tokens necesarios.
Hablaremos de dos analizadores sintacticos, que ademas incluyen sus propios gene-
radores de analizadores morfologicos.
ANTLR: Generador de analizadores sintacticos de gramaticas LL. Iniciado el
proyecto por Terence Parr, tiene una gran comunidad detras y diferentes foros
donde poder consultar dudas. Ademas, ofrece la posibilidad de generar los
Parsers en diferentes lenguajes de programacion.
SableCC: Generador de analizadores sintacticos de gramaticas LALR, una sub-
clase de las gramaticas LR. Contiene una implementacion de los ultimos al-
goritmos en el campo. Como punto negativo, hay que comentar que el codigo
generado es java.
En las dos proximas secciones se dara una peque na introduccion a los dos programas.
Intentando dar una base solida al lector, de forma que el lector interesado pueda
profundizar en el tema. Se supondra que el lector ha ledo los dos primeros temas,
poniendo enfasis a la notacion BNF, EBNF y manejo de expresiones regulares.
A.1. Una introduccion al SableCC
Antes de empezar, es necesario instalar sablecc. La ultima version se puede encontrar
en http://sablecc.org/wiki/DownloadPage. En estos momentos, la version esta-
ble se encuentra en la 3.2. Se nos permite descargando un archivo zip, con el codigo
101
102 AP

ENDICE A. GENERADORES DE AN

ALISIS SINT

ACTICO
fuente de SableCC, un archivo llamado sablecc.jar, que es el archivo ejecutable.
Al estar escrito en java, para poder utilizarlo, lo unico que se necesita es tener ins-
talada la maquina virtual JAVA
TM
. SableCC toma como argumento una gramatica
en un archivo de texto que siga la siguiente especicacion:
Package NOMBRE;
// Nombre es el nombre
// del paquete donde se
// genera el codigo
Tokens
//Tokens que debe reconocer
//el analizador morfologico.
//Estos deben ser dados
//por medio de una expresion regular.
//Para mas informacion, ver Problema 33
//del primer tema.
token1=[a..z];
Productions
//Aqu vendra la gramatica del documento
//las reglas seguiran la notacion BNF
variable= {etiqueta1} variable token1|{etiqueta2} token1
//Las etiquetas sirven para dar un valor
//semantico a cada produccion.
Siguiendo nuestra losofa de aprender resolviendo problemas, se propone utilizar
este generador de parsers para hacer una peque na calculadora que reconozca e in-
terprete secuencias como la siguiente:
12 + 4 4
Consideraremos solamente expresiones que involucren sumas y multiplicaciones. Lo
primero de todo, consideraremos tres tipos de tokens, a saber, los n umero el signo
mas y el signo por. Ignoraremos los espacios y los saltos de linea por razones obvias.
Package suma ;
Tokens
numero=[ 0 . . 9 ] +;
mas=+ ;
por= ;
bl anco=( [ 9 [ 13[ 10) +; //Codigo a s c i i de l o s s a l t o s de l i ne a
I gnored Tokens //Tokens que se desecharan
// separados por comas
bl anco ;
Producti ons
A.1. UNA INTRODUCCI

ON AL SABLECC 103
//Supondremos dos t i p o s de expr es i ones l o s product os
// y l a s expr es i ones compl ej as
exp= expr es i on exp mas prod [ pr oduct os ol o prod ;
prod=f a c t o r prod por numero [ numerosol o numero ;
Ejecutando SableCC sobre este archivo, nos generara un paquete llamado suma,
dentro de un directorio llamado suma. El paquete suma genera una clase que nos
permitira recorrer el arbol de derivaciones en profundidad. Esta clase se llama Depth-
FirstAdapter.
Los metodos que dan valor semantico a las reglas gramaticales vienen determinados
por la cabecera de la produccion y la etiqueta, a nadiendo el prejo outA. Incluimos
el codigo de esta clase, as como de un peque no programa para leer caracteres del
teclado, que lee de un chero llamado entrada.txt:
import suma . node . ;
import suma . a na l ys i s . ;
import j ava . i o . ;
// Cl ase que da v al or semant i co a l a s producci ones
public cl ass Semanti ca extends DepthFi rstAdapter

i nt r e s ul t ado =0; // Var i abl e que dara e l r e s ul t ado .


i nt producto =1; // Var i abl e para l o s product os p a r c i a l e s
//Val or semant i co de l a producci on expr es i on de l a
// v a r i a b l e Exp
//Cogeremos e l v al or que hay en l a v a r i a b l e product o
// y l o sumamos al r e s ul t ado .
public void outAExpresionExp ( AExpresionExp node )

r e s ul t ado=r e s ul t ado+producto ;

//Val or semant i co de l a producci on numerosol o de l a


// v a r i a b l e Exp
//Cogeremos e l v al or que hay en e l product o y
// l o sumamos al r e s ul t ado
public void outAProductosol oExp ( AProductosol oExp node )

r e s ul t ado=r e s ul t ado+producto ;

//Val or semant i co de l a producci on f ac t or de l a


// v a r i a b l e prod
//Cogeremos e l v al or que hay en l a v a r i a b l e product o
// y l e mul t i pl i car emos por e l v al or de l numero .
104 AP

ENDICE A. GENERADORES DE AN

ALISIS SINT

ACTICO
public void outAFactorProd ( AFactorProd node )

St r i ng num=node . getNumero ( ) . getText ( ) ; // obt ener e l


// v al or de numero
// como t e x t o
i nt f a c t o r=I nt e ge r . par s e I nt (num) ; // t r ans f or mar l o
//a ent ero
producto=producto f a c t o r ;

public void outANumerosoloProd ( ANumerosoloProd node )

producto =1; // i ni c i al i z amos l a v a r i a b l e donde guardamos


// e l product o a uno
St r i ng num=node . getNumero ( ) . getText ( ) ; // obt ener e l
// v al or de numero
// como t e x t o
i nt f a c t o r=I nt e ge r . par s e I nt (num) ; // t r ans f or mar l o
//a ent ero
producto=producto f a c t o r ;

public void i mpri meResul tado ( )

System . out . pr i nt l n ( El r e s ul t ado es : +r e s ul t ado ) ;

A continuacion se incluye un peque no programa para utilizar nuestro recien creado


lexer. El codigo es bastante explicativo y no deberia representar problema alguno
para ser entendido.
import j ava . l ang . ;
import j ava . i o . ;
import j ava . u t i l . ;
import suma . par s er . ;
import suma . l e xe r . ;
import suma . node . ;
public cl ass Pr i nc i pal
public stati c void main ( St r i ng [ ] argv )

try
Fi l eReader Archi vo=new Fi l eReader ( entrada . t xt ) ;
Buf f eredReader Buf f er=new Buf f eredReader ( Archi vo ) ;
PushbackReader Cola=new PushbackReader ( Buf f er ) ;
A.2. UNA INTRODUCCI

ON A ANTLR 105
Lexer l=new Lexer ( Cola ) ;
Parser p = new Parser ( l ) ;
St ar t s t a r t = p . par s e ( ) ;
Semanti ca Prueba=new Semanti ca ( ) ;
s t a r t . appl y ( Prueba ) ; // Apl i car l a semant i ca al
// ar b ol de der i vaci on
Prueba . i mpri meResul tado ( ) ; // i mpri mi r r e s ul t ado
catch ( Excepti on e )
e . pr i nt St ackTr ace ( ) ;

;
A.2. Una introduccion a ANTLR
ANTLR es una atractiva interesante por la cantidad de herramientes que existen
para manejarlo. Aunque se puede bajar un jar ejecutable y trabajar en terminal,
existe un editor llamado ANTLRWorks
1
. Este se puede descargar de la siguiente
pagina web:http://www.antlr.org/works/index.html y haciendo doble click so-
bre el chero descargado podemos empezar a trabajar.
Lo primero que hay que declarar es que lo que necesitamos es generar un analizador
sintactico y un analizador morfologico, ya que ANTLR permite generar cualquiera
de los dos, tanto por separado o en conjunto. Esto especica iniciando el chero de
la gramatica con:
grammar Nombre para generar un analizador sintactico y un analizador mor-
fologico.
lexer Nombre para generar solamente un analizador morfologico.
parser grammar Nombre para generar solamente un analizador sintactico.
Para distinguir los tokens de las reglas gramaticales, los nombres de los tokens van
en may usculas y los nombres de las variables de nuestra gramatica en min usculas.
Si queremos denir alguna variable para guardar valores, lo podemos hacer sencilla-
mente declarando una cabecera donde ponga members.
Para darle un signicado semantico a cada produccion, el codigo ya no necesita ir en
una clase separa, sino introduccirlo en la produccion entre llaves. Esto lo hace mas
difcil de debuggear, pero es mas comodo para el programador. Ahora para ignorar
tokens hay que utilizar, entre llaves, el metodo skip(); en el token que se quiera
ignorar.
ANTLRWorks proporciona al usuario una forma automatica de probar su gramati-
ca, aunque tambien genera el codigo en caso de que tenga que ser utilizado en un
proyecto. Recordemos que ANTLR genera analizadores sintacticos de gramaticas
1
Notese que el nombre signica tanto como trabajo de ANTLR como ANTLR funciona!.
106 AP

ENDICE A. GENERADORES DE AN

ALISIS SINT

ACTICO
LL

. Esto hace que las reglas que presentan recursividad a la izquierda no funcio-
nen en ANTLR. Por esto, es conveniente utilizar notacion EBNF. Esta extension
utiliza expresiones regulares para denir producciones. Las expresiones regulares
aqu denidas salen de aplicar los algoritmos del primer captulo sobre como pasar
de gramaticas regulares a expresiones regulares. Veamos como seria la implementa-
cion del ejemplo anterior en ANTLRWorks:
grammar suma ;
@members
i nt producto =1;
i nt r e s ul t ado =0;

exp : prod r e s ul t ado=r e s ul t ado+producto ;


(MAS prod r e s ul t ado=r e s ul t ado+producto ; )
System . out . pr i nt l n ( r e s ul t ado : +r e s ul t ado ) ;
;
prod : pri mer=INT

producto =1;
i nt f a c t o r=I nt e ge r . par s e I nt ( $pri mer . t ext ) ;
producto=producto f a c t o r ;

(POR r e s t o=INT

f a c t o r=I nt e ge r . par s e I nt ( $r e s t o . t ext ) ;


producto=producto f a c t o r ;
) ;
INT : 0 . . 9 +;
MAS : + ;
POR : ;
BLANCO : ( [ n [ t [ r )+ s ki p ( ) ; ;
Bibliografa
[Adleman-Huang, 92] L.M. Adleman, M.-D- A- Huang. Primality testing and Abe-
lian varieties over nite elds. Springer, (1992).
[Aho-Ullman, 72a] A.V. Aho, J.D. Ullman. The Theory of Parsing, Translation and
Compiling. Vol I: Parsing. Prentice Hall, 1972.
[Aho-Ullman, 72b] A.V. Aho, J.D. Ullman. The Theory of Parsing, Translation and
Compiling. Vol II: Compilers. Prentice Hall, 1972.
[Alfonseca, 07] . Alfonseca. Teora De Aut omatas y Lenguajes Formales.
McGrawHill, 2007.
[BalcazarDazGabarro, 88] J.L. Balcazar, J.L. Daz and J. Gabarro. Structural
Complexity I, EATCS Mon. on Theor. Comp. Sci. 11, Springer (1988).
[Chomsky, 57] N. Chomsky. Syntactic Structures. Mouton and Co., The Hague,
1957.
[ChomskyMiller, 57] N. Chomsky, G. A. Miller.Finite state languages. Informa-
tion and Control 1:2 (1957) 91112.
[Chomsky, 59a] N. Chomsky. On certain formal properties of grammars. Infor-
mation and Control 2:2 (1959) 137167.
[Chomsky, 59b] N. Chomsky. A note on phrase structure grammars. Information
and Control 2: 4 (1959) 393395.
[Chomsky, 62] N. Chomsky. Contextfree grammarsand pushdown storage. Quar-
terly Progress Report No. 65. Research Laboratory of Electronics, M. I. T.,
Cambridge, Mass., 1962.
[Chomsky, 65] N. Chomsky. Three models for the description of language. IEEE
Trans. on Information Theory 2 (1965) 113-124.
[Cocker-Schwartz, 70] . Cocke, J.T. Shwartz. Programming Languages and their
Compilers. Courant Institute of Mathematical Sciences, NYU, 1970.
[RE Davis, 89] R.E. Davis. Truth, Deduction and Computation (Logic and Se-
mantics for Computer Science). W.H. Freeman (1989).
[M Davis, 82] M. Davis. Computability and Unsolvability Dover (1982).
107
108 BIBLIOGRAF

IA
[M Davis, 97] M. Davis. Unsolvable Problems. Handbook of Mathematical Logic
NorthHolland (1997) 567594.
[Davis-Weyuker, 94] M.D. Davis, E.J.Weyuker. Computability, Complexity, and
Languages (Fundamentals of Theoretical Computer Science), 2nd Ed.. Aca-
demic Press (1994).
[Eilenberg, 74] S. Eilenberg.Automata,Languages and Machines, vol. A. Acade-
mica Press, Pure and App. Math. 59A (1974).
[GareyJohnson, 79] M.R. Garey, D.S. Johnson. Computers and Intractability: A
Guide to the Theory of NPCompletness. W.H. Freeman (1979).
[GathenGerhard, 99] J. von zur Gathen, J. Gerhard. Modern Computer Algebra.
Cambridge University Press (1999).
[HardyWright, 60] G. Hardy, E. Wright. The Theory of Numbers. 4th. ed. Oxford
Univ. Press (1960).
[Hopcroft-MotwaniUllman, 07] J. E. Hopcroft, R. Motwani, J. D. Ullman. Intro-
duction to Automata Theory, Languages, and Computation, 3/Ed. Addison-
Wesley, 2007.
[IbarraMoran, 83] O.H. Ibarra, S. Moran. Equivalence of StraightLine Pro-
grams. J. of the ACM 30 (1983) 217228.
[Kleene, 52] S.S. Kleene. Introduction to Metamathematics. Van Nostrand Reinhold,
New York, 1952.
[Kleene, 56] S.S. Kleene. Representation of events in nerve nets. In Automata
Studies. Shannon and McCarthy eds. Princeton University Press, Princeton,
N.J. (1956) 340.
[Knuth, 62] D.E. Knuth. Evaluation of Polynomials by Computers. Comm. ACM
6 (1962) 595599.
[Knuth, 81] D.E. Knuth. The Art of Computer Programming, vol. 2 Seminumerical
Algorithms AddisonWesley (1981).
[Kozen, 92] D.C. Kozen. The Design and Analysis of Algorithms. Texts and Mo-
nographs in Computer Science, Springer Verlag (1992).
[HandBook, 92] Van Leeuwen, J. (ed.).t Handbook of Theoretical Computer Scien-
ce Elsevier, 1992.
[Lewis-Papa, 81] H.L. Lewis, C.H. Papadimitriou. Elements of the Theory of
Computation. PrenticeHall (1981).
[Martin, 03] J. Martin. Introduction to Languages and the Theory of Computation,
3rd Edition. McGraw Hill, 2003.
John Martin, NORTH DAKOTA STATE U-FARGO
BIBLIOGRAF

IA 109
[Miller, 76] G.L. Miller. Riemanns hypothesis and tests for primality. J. Comput.
Syst. Sci. 13 (1976) 300317.
[Marcus, 67] S. Marcus. Algebraic Linguistics; Analytic Models. Mathematics in
Science and Engineering, vol. 29, Academic Press (1967).
[Mingotte, 89] M. Mignotte, Mathematiques pour le Calcul Formel. Presses Univ.
de France (1989).
[Papadimitriou, 94] Christos H. Papadimitrou. Computational Complexity.
AddisonWesley (1994)
[Pratt, 75] V.R. Pratt. Every Prime has a succinct certicate. SIAM J. on Com-
put. 4 (1975) 214220.
[Rabin, 80] M.O. Rabin. Probabilistic algorithms for testing primality. J. Number
Theory 12 (1980) 128138.
[RivestShamirAdleman, 78] R.L. Rivest, A. Shamir y L.A. Adleman. A method
for obtaining digital signatures and public-key cryptosystems. Comm. ACM
21 no. 2 ,(1978) 120126.
[Rose, 94] H.E. Rose. A Course in Number Theory.2nd. ed., Oxford Sci. Publica-
tions (1994).
[Savitch, 70] W.J. Savitch. Relationships between nondeterministic and determi-
nistic tape complexities. J. Comput. System. Sci. 4 (1970) 177192.
[Solovay-Strassen, 77] R. Solovay, V. Strassen. A fast Monte Carlo test for prima-
lity. SIAM J. on Comput. 6 (1977) 8485
[Weihrauch, 97] K. Weihrauch. Computability. EATCS monographs on Theor.
Comp. Sci. 9, Springer Verlag (1987).
[Wirth, 96] N. Wirth, Compiler Construction. AddisonWesley International Com-
puter SCience Service, 1996.
[Wirth, 96] N. Wirth, Compiler Construction. AddisonWesley International Com-
puter SCience Service, 1996.

También podría gustarte