Está en la página 1de 228

Teora de la Computacion

Lenguajes, automatas,
gramaticas

Rodrigo De Castro Korgi

Ph.D. en Matematicas
University of Illinois, U.S.A.

Departamento de Matematicas
Universidad Nacional de Colombia, Bogota

Teora de la Computacion
Lenguajes, aut
omatas, gramaticas
c

Universidad Nacional de Colombia


Facultad de Ciencias
Juan Manuel Tejeiro, Decano
Natalia Ruiz, Vicedecana Academica
Gustavo Rubiano, Director de Publicaciones

Rodrigo De Castro Korgi


Profesor Asociado
Departamento de Matem
aticas
Primera edicion, 2004
Diagramacion en LATEX realizada por el autor
Impresi
on:
UNIBIBLOS
Universidad Nacional de Colombia
Bogota D.C., 2004

Indice general

Pr
ologo

Introducci
on. Qu
e es la Teora de la Computaci
on?

1. Alfabetos, cadenas y lenguajes


1.1. Alfabetos y cadenas . . . . . . . . . .
1.2. Concatenacion de cadenas . . . . . . .
1.3. Potencias de una cadena . . . . . . . .
1.4. Longitud de una cadena . . . . . . . .
1.5. Reflexion o inversa de una cadena . . .
1.6. Subcadenas, prefijos y sufijos . . . . .
1.7. Lenguajes . . . . . . . . . . . . . . . .
1.8. Operaciones entre lenguajes . . . . . .
1.9. Concatenacion de lenguajes . . . . . .
1.10. Potencias de un lenguaje . . . . . . . .
1.11. La clausura de Kleene de un lenguaje
1.12. Reflexion o inverso de un lenguaje . .
1.13. Lenguajes regulares . . . . . . . . . . .
1.14. Expresiones regulares . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

2. Aut
omatas finitos
2.1. Aut
omatas finitos deterministas (AFD) . . . . . . . .
2.2. Diagrama de transiciones de un automata . . . . . . .
2.3. Dise
no de aut
omatas . . . . . . . . . . . . . . . . . . .
2.4. Aut
omatas finitos no-deterministas (AFN) . . . . . . .
2.5. Equivalencia computacional entre los AFD y los AFN
2.6. Aut
omatas con transiciones (AFN-) . . . . . . . .
iii

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

5
5
7
8
8
9
9
10
11
12
14
14
17
18
19

.
.
.
.
.
.

25
25
28
29
33
38
43

iv

INDICE GENERAL

2.7. Equivalencia computacional entre los AFN- y los AFN


2.8. Teorema de Kleene. Parte I . . . . . . . . . . . . . . . .
2.9. Ejemplos de la parte I del Teorema de Kleene . . . . . .
2.10. Lema de Arden . . . . . . . . . . . . . . . . . . . . . . .
2.11. Teorema de Kleene. Parte II . . . . . . . . . . . . . . . .
2.12. Ejemplos de la parte II del Teorema de Kleene . . . . .
3. Otras propiedades de los lenguajes regulares
3.1. Lema de bombeo . . . . . . . . . . . . . . . .
3.2. Propiedades de clausura . . . . . . . . . . . .
3.3. Propiedades de clausura para automatas . . .
3.4. Homomorfismos
. . . . . . . . . . . . . . .
3.5. Imagen inversa de un homomorfismo
. . .
3.6. Algoritmos de decisi
on . . . . . . . . . . . . .
4. Lenguajes y gram
aticas independientes del
4.1. Gramaticas generativas . . . . . . . . . . .
4.2. Gramaticas independientes del contexto . .

4.3. Arbol
de una derivaci
on . . . . . . . . . . .
4.4. Gramaticas ambiguas . . . . . . . . . . . .
4.5. Gramaticas para lenguajes de programaci
on
4.6. Gramaticas para lenguajes naturales . . .
4.7. Gramaticas regulares . . . . . . . . . . . . .
4.8. Eliminaci
on de las variables in
utiles . . . .
4.9. Eliminaci
on de las producciones . . . . .
4.10. Eliminaci
on de las producciones unitarias .
4.11. Forma Normal de Chomsky (FNC) . . . . .
4.12. Forma Normal de Greibach (FNG)
. . .
4.13. Lema de bombeo para LIC . . . . . . . . .
4.14. Propiedades de clausura de los LIC . . . . .
4.15. Algoritmos de decisi
on para GIC . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

contexto
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .

5. Aut
omatas con pila
5.1. Aut
omatas con Pila Deterministas (AFPD) .
5.2. Aut
omatas con pila no-deterministas (AFPN)
5.3. Aceptacion por pila vaca . . . . . . . . . . .
5.4. Aut
omatas con pila y LIC. Parte I. . . . . . .
5.5. Aut
omatas con pila y LIC. Parte II.
. . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

47
49
52
55
57
58

.
.
.
.
.
.

.
.
.
.
.
.

63
63
67
69
72
74
75

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

81
81
82
88
91
94
96
98
102
107
110
113
120
125
130
135

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

143
143
149
154
157
160

INDICE GENERAL

6. M
aquinas de Turing
6.1. M
aquinas de Turing como aceptadoras de lenguajes . . . . .
6.2. Subrutinas o macros . . . . . . . . . . . . . . . . . . . . . .
6.3. M
aquinas de Turing como calculadoras de funciones . . . .
6.4. M
aquinas de Turing como generadoras de lenguajes . . . . .
6.5. Variaciones del modelo estandar de MT . . . . . . . . . . .
6.5.1. Estado de aceptaci
on u
nico . . . . . . . . . . . . . .
6.5.2. M
aquina de Turing con cinta dividida en pistas . . .
6.5.3. M
aquina de Turing con m
ultiples cintas . . . . . . .
6.5.4. M
aquinas de Turing no-deterministas (MTN) . . . .
6.6. Simulacion de aut
omatas por medio de m
aquinas de Turing
6.6.1. Simulacion de automatas . . . . . . . . . . . . . . .
6.6.2. Simulacion de automatas con pila . . . . . . . . . . .
6.7. Aut
omatas con dos pilas (AF2P) . . . . . . . . . . . . . .
6.8. Propiedades de clausura . . . . . . . . . . . . . . . . . . . .
6.9. MT, computadores, algoritmos y la tesis de Church-Turing
6.9.1. M
aquinas de Turing y algoritmos . . . . . . . . . . .
6.9.2. M
aquinas de Turing y computadores . . . . . . . . .

167
167
174
176
179
180
180
181
181
183
186
186
186
188
193
198
198
199

7. Problemas indecidibles
7.1. Codificaci
on y enumeraci
on de m
aquinas de Turing
7.2. M
aquina de Turing universal . . . . . . . . . . . .
7.3. Algoritmos de aceptaci
on para lenguajes RE . . . .
7.4. Lenguajes que no son RE . . . . . . . . . . . . . .
7.5. Lenguajes RE no recursivos . . . . . . . . . . . . .
7.6. Problemas indecidibles o irresolubles . . . . . . . .

201
201
206
209
211
212
215

Bibliografa

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

221

vi

INDICE GENERAL


Prologo
Este libro contiene lo mnimo que los estudiantes de las carreras de ingeniera de sistemas y de matem
aticas deberan saber sobre los fundamentos
matem
aticos de la teora de la computaci
on. Esta basado en el material
de clase utilizado por el autor durante los u
ltimos a
nos en la Universidad
Nacional de Colombia, sede de Bogota.

A estudiantes y profesores
El libro esta escrito tanto para estudiantes de matem
aticas quienes, es
de suponer, tienen m
as experiencia con razonamientos abstractos y demostraciones como para estudiantes de ingeniera. Es el profesor quien debe
establecer el tono del curso, enfatizando ya sea el rigor matem
atico o una
presentaci
on m
as intuitiva y practica. Los resultados estan presentados en
forma de teoremas, corolarios y lemas, con sus respectivas demostraciones;
estas pueden omitirse, si as lo estima el profesor. En los cursos dirigidos
a estudiantes de ingeniera de sistemas, el enfasis debe residir tanto por
parte del profesor como por parte del estudiante en los ejemplos y ejercicios practicos; hay que resaltar m
as el significado de los enunciados que
sus demostraciones formales. El libro contiene gran cantidad de ejemplos y
problemas resueltos, con aplicaciones o ilustraciones directas de la teora.
Como prerrequisito, es imprescindible que el estudiante haya tomado al
menos un curso de matem
aticas discretas en el que se haya familiarizado
con las nociones basicas y la notaci
on de la teora intuitiva de conjuntos,
grafos, induccion matem
atica y l
ogica elemental. La experiencia previa en
programaci
on es muy u
til pero, de ninguna manera, necesaria.
El material se presenta en secciones relativamente cortas, lo que permite
alguna flexibilidad en la selecci
on de los topicos del curso. As, si el tiempo
1

PROLOGO

disponible no es holgado, o no es posible avanzar con la velocidad suficiente,


podran suprimirse las secciones demarcadas con el smbolo .
Casi todas las secciones poseen ejercicios, de variada dificultad; los m
as
difciles estan precedidos de un smbolo de admiraci
on ! y podran ser considerados opcionales. Es responsabilidad del estudiante resolver los ejercicios
que sean asignados por el profesor. La u
nica manera de aprender y asimilar
las ideas y tecnicas presentadas en la clase es trabajar seria y completamente los ejercicios.

Material de apoyo en la red


Versiones preliminares de estas notas aparecieron, de forma incompleta,
en el curso virtual de Teora de la Computacion perteneciente al programa
Universidad Virtual de la la Universidad Nacional de Colombia. Es la intenci
on del autor mantener y actualizar permanentemente la versi
on virtual
interactiva de este curso, con material de apoyo como temas y ejercicios
nuevos, correccion de errores, software, enlaces a otra p
aginas Web, etc. Se
puede acceder libremente al curso virtual en el portal
http://www.virtual.unal.edu.co/
siguiendo los enlaces: CursosFacultad de CienciasMatem
aticasTeora de
la Computacion.

Agradecimientos
Durante la elaboracion de estas notas he recibido por parte de estudiantes
atentos muchas observaciones u
tiles que han ayudado a mejorar sustancialmente la presentaci
on. Quiero expresarles mis agradecimientos a todos
ellos, demasiado numerosos para mencionarlos individualmente.
La primera versi
on del curso virtual fue realizada con la ayuda del estudiante de posgrado Adolfo Reyes, a quien expreso mi gratitud y reconocimiento. Para la preparacion de la presente versi
on tuve la suerte de
contar con la colaboracion del estudiante de matem
aticas Camilo Cubides,
con quien estoy muy agradecido por la calidad y seriedad de su trabajo.
Finalmente, quiero agradecer a Gustavo Rubiano, Director de las oficina
de publicaciones de la Facultad de Ciencias, por su continuo apoyo y su
cooperacion desinteresada.


Introduccion

Qu
e es la Teora de la Computaci
on?
La Teora de la Computacion estudia modelos abstractos de los dispositivos
concretos que conocemos como computadores, y analiza lo que se puede y no
se puede hacer con ellos. Este estudio te
orico se inicio varias decadas antes
de la aparicion de los primeros computadores reales y contin
ua creciendo,
a medida que que la computaci
on incrementa su sofisticacion.
Entre los muchos topicos que conforman la teora de la computaci
on,
s
olo tendremos la oportunidad de tratar someramente los dos siguientes:
Modelos de computaci
on. Las investigaciones en este campo comenzaron en la decada de los 30 del siglo XX con el trabajo del l
ogico norteamericano Alonzo Church (19031995) y del matem
atico brit
anico Alan Turing
(19121954). Church introdujo el formalismo conocido como calculo- y
enuncio la tesis hoy conocida como tesis de Church de que las funciones efectivamente computables, es decir, computables por cualquier metodo
computacional concebible, son exactamente las funciones -computables.
En contraste con el enfoque m
as abstracto de Church, Turing (quien fue
alumno doctoral de Church en la universidad de Princeton) propuso un
modelo concreto de m
aquina computadora, hoy conocida como la m
aquina
de Turing, capaz de simular las acciones de cualquier otro dispositivo fsico
de computaci
on secuencial.
Curiosamente, las propuestas de Church y Turing se publicaron exactamente en el mismo a
no: 1936. Los dos formalismos resultaron ser equivalentes y, desde entonces, se han propuesto muchos otros modelos de computaci
on. Como todos han resultados ser equivalentes entre s, ha ganado
3

INTRODUCCION

aceptaci
on universal la tesis de Church-Turing: no hay modelo de computaci
on m
as general ni poderoso que la m
aquina de Turing.
En los a
nos 40 y 50 del siglo XX se adelantaron investigaciones sobre
m
aquinas de Turing con capacidad restringida, surgiendo as la nocion de
m
aquina de estado finito o aut
omata finito (aut
omata es sinonimo de
maquina de computo automatico). Los automatas han resultado ser modelos muy u
tiles para el dise
no de diversos tipos de software y hardware.
Lenguajes y gram
aticas formales. Una lnea investigativa, aparentemente alejada de los modelos de computaci
on, surgio con los estudios del
ling
uista norteamericano Noam Chomsky1 . Chomsky introdujo en 1956 la
noci
on de gram
atica generativa con el prop
osito de describir los lenguajes
naturales como el espa
nol, el ingles, el frances, etc. Chomsky clasific
o las
gramaticas en cuatro tipos, dependiendo de la forma de sus producciones,
que son las reglas que utiliza una gramatica para generar palabras o cadenas de smbolos. Pocos a
nos despues se establecio que hay una estrecha
relaci
on entre aut
omatas y gramaticas: los lenguajes de la llamada jerarqua
de Chomsky corresponden a los lenguajes que pueden ser reconocidos por
tipos especiales de aut
omatas.
La interacci
on entre los aut
omatas (mecanismos para procesar cadenas de smbolos) y las gramaticas (mecanismos para generar cadenas de
smbolos) es una fuente de resultados profundos y significativos. Desde la
aparicion de los influyentes textos de Hopcroft y Ullman ([HU1], 1969) y
([HU2], 1979), un curso semestral basico de teora de la computaci
on se
ha centrado en el estudio de aut
omatas y gramaticas. Estas notas de clase
reflejan esa tradicion.

1
En el a
no 2002, la Universidad Nacional de Colombia otorg
o el doctorado Honoris
Causa a Noam Chomsky.

Captulo

Alfabetos, cadenas y lenguajes


De manera muy amplia podra decirse que la computaci
on es la manipulaci
on de secuencias de smbolos. Pero el n
umero de smbolos disponibles en
cualquier mecanismo de computo es finito y todos los objetos usados como
entradas o salidas (inputs/outputs) deben ser identificados en un tiempo
finito. Desde el punto de vista te
orico esto impone dos restricciones basicas:
el conjunto de smbolos (alfabeto) debe ser finito y se deben considerar u
nicamente cadenas (secuencias de smbolos) de longitud finita. Surgen as los
ingredientes esenciales de una teora abstracta de la computaci
on: alfabetos y cadenas. Los conjuntos de cadenas (ya sean finitos o infinitos) se
denominaran lenguajes.

1.1.

Alfabetos y cadenas

Un alfabeto es un conjunto finito no vaco cuyos elementos se llaman


smbolos. Denotamos un alfabeto arbitrario con la letra .
Una cadena o palabra sobre un alfabeto es cualquier sucesion (o
secuencia) finita de elementos de . Admitimos la existencia de una u
nica
cadena que no tiene smbolos, la cual se denomina cadena vaca y se
denota con . La cadena vaca desempe
na, en la teora de la computaci
on,
un papel similar al del conjunto vaco en la teora de conjuntos.

b. Las siguientes son cadenas sobre :

Ejemplo

Sea = {a, b} el alfabeto que consta de los dos smbolos a y


aba
ababaaa
aaaab.
5

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Observese que aba = aab. El orden de los smbolos en una cadena es significativo ya que las cadenas se definen como sucesiones, es decir, conjuntos
secuencialmente ordenados.

cadenas sobre este alfabeto son secuencias finitas de ceros y

Ejemplo

El alfabeto = {0, 1} se conoce como alfabeto binario. Las

unos, llamadas secuencias binarias, tales como


001
1011
001000001.

idioma castellano. Las palabras oficiales del castellano (las que

Ejemplo

= {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}, el alfabeto del

aparecen en el diccionario DRA) son cadenas sobre .

programaci
on (como Pascal o C) es el conjunto de caracte-

Ejemplo

El alfabeto utilizado por muchos de los llamados lenguajes de

res ASCII (o un subconjunto de el) que incluye, por lo general, las letras
may
usculas y min
usculas, los smbolos de puntuaci
on y los smbolos matematicos disponibles en los teclados estandares.
El conjunto de todas las cadenas sobre un alfabeto , incluyendo la
cadena vaca, se denota por .

Ejemplo

Sea = {a, b, c}, entonces

= {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, abc, baa, . . .}.
En la siguiente tabla aparece la notaci
on corrientemente utilizada en la
teora de la computaci
on. De ser necesario, se emplean subndices.

Notaci
on usada en la teora de la computaci
on
denotan alfabetos.

denota el conjunto de todas las cadenas que se


pueden formar con los smbolos del alfabeto .

a, b, c, d, e,. . .

denotan smbolos de un alfabeto.

u, v, w, x, y, z, . . .
, , , . . .

denotan cadenas, es decir, sucesiones finitas de


smbolos de un alfabeto.

denota la cadena vaca, es decir, la u


nica cadena
que no tiene smbolos.

A, B, C, . . . , L, M, N ,. . . denotan lenguajes (definidos m


as adelante).

DE CADENAS
1.2. CONCATENACION

Algunos autores denotan la cadena vaca con la letra griega .


Preferimos denotarla con porque tiende a confundirse con el
smbolo usado para la relaci
on de pertenencia.

Si bien un alfabeto es un conjunto finito, es siempre un


conjunto infinito (enumerable). En el caso m
as simple, contiene

solo un smbolo, = {a}, y = {, a, aa, aaa, aaaa, aaaaa, . . .}.

Hay que distinguir entre los siguientes cuatro objetos, que son
todos diferentes entre s: , , {} y {}.

La mayor parte de la teora de la computaci


on se hace con referencia a un alfabeto fijo (pero arbitrario).

1.2.

Concatenaci
on de cadenas

Dado un alfabeto y dos cadenas u, v , la concatenaci


on de u y v
se denota como u v o simplemente uv y se define descriptivamente as:
1. Si v = , entonces u = u = u. Es decir, la concatenaci
on de
cualquier cadena u con la cadena vaca, a izquierda o a derecha, es
igual a u.
2. Si u = a1 a2 an , v = b1 b2 bm , entonces
u v = a1 a2 an b1 b2 bm .
Es decir, u v es la cadena formada escribiendo los smbolos de u y a
continuaci
on los smbolos de v.
La concatenaci
on de cadenas se puede definir inductiva o recursivamente
de la siguiente manera. Si u, v , a , entonces
1. u = u = u.
2. u (va) = (u v)a.
Propiedad. La concatenaci
on de cadenas es una operacion asociativa. Es
decir, si u, v, w , entonces
(uv)w = u(vw).
Demostraci
on. Se puede hacer escribiendo explcitamente las cadenas u, v,
w y usando la definicion descriptiva de concatenaci
on. Tambien se puede dar
una demostraci
on inductiva usando la definicion recursiva de concatenaci
on
(ejercicio opcional).

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.3.

Potencias de una cadena

Dada u y n N, se define (descriptivamente) un en la siguiente forma


u0 = ,
un = uu u .
n veces

Como ejercicio, el estudiante puede dar una definicion recursiva de un .

1.4.

Longitud de una cadena

La longitud de una cadena u se denota |u| y se define como el n


umero
de smbolos de u (contando los smbolos repetidos). Es decir,
|u| =

0, si u = ,
n, si u = a1 a2 an .

Esta no es una propiedad realmente importante (no la usare-

Ejemplo
Ejemplo

|aba| = 3, |baaa| = 4.

Si w , n, m N, demostrar que |wn+m | = |wn | + |wm |.

mos nunca en este libro!); la presentamos aqu para enfatizar los conceptos
involucrados e ilustrar los razonamientos estrictos.
Solucion.

Caso n, m 1. |wn+m | = | ww w | = (n + m)|w|. Por otro


n+m veces

lado,
|wn | + |wm | = | ww w | + | ww w | = n|w| + m|w|.
n veces

m veces

Caso n = 0, m 1. |wn+m | = |w0+m | = |wm |. Por otro lado,


|wn | + |wm | = |w0 | + |wm | = || + |wm | = 0 + |wm | = |wm |.
Caso m = 0, n 1. Similar al caso anterior.
Caso n = 0, m = 0. |wn+m | = |w0+0 | = || = 0. Por otro lado,
|wn | + |wm | = |w0 | + |w0 | = || + || = 0 + 0 = 0.

O INVERSA DE UNA CADENA


1.5. REFLEXION

1.5.

Reflexi
on o inversa de una cadena

La reflexi
on o inversa de una cadena u se denota uR y se define
descriptivamente as:
uR =

,
si u = ,
an a2 a1 , si u = a1 a2 an .

De la definicion se observa claramente que la reflexi


on de la reflexi
on de
una cadena es la misma cadena, es decir,
(uR )R = u,

para u .

Algunos autores escriben u1 en lugar de uR para denotar la reflexion de una cadena u.

Ejercicios de la secci
on 1.5

Dar una definicion recursiva de uR .


Si u, v , demostrar que (uv)R = v R uR . Generalizar esta propiedad a la concatenaci
on de n cadenas.

1.6.

Subcadenas, prefijos y sufijos

Una cadena v es una subcadena o una subpalabra de u si existen cadenas


x, y tales que u = xvy. N
otese que x o y pueden ser y, por lo tanto,
la cadena vaca es una subcadena de cualquier cadena y toda cadena es
subcadena de s misma.
Un prefijo de u es una cadena v tal que u = vw para alguna cadena
w . Se dice que v es un prefijo propio si v = u.
Similarmente, un sufijo de u es una cadena v tal que u = wv para
alguna cadena w . Se dice que v es un sufijo propio si v = u.
Observese que es un prefijo y un sufijo de toda cadena u ya que
u = u = u. Por la misma razon, toda cadena u es prefijo y sufijo de
s misma.

Ejemplo

Sean = {a, b, c, d} y u = bcbaadb.

10

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.7.

Prefijos de u :

Sufijos de u :

b
bc
bcb
bcba
bcbaa
bcbaad
bcbaadb

b
db
adb
aadb
baadb
cbaadb
bcbaadb

Lenguajes

Un lenguaje L sobre un alfabeto es un subconjunto de , es decir


L .
Casos extremos:
L = ,
L = ,

lenguaje vaco.
lenguaje de todas las cadenas sobre .

Todo lenguaje L satisface L , y puede ser finito o infinito. Los


lenguajes se denotan con letras may
usculas A, B, C, . . . , L, M, N, . . .. En la
siguiente gr
afica se visualizan dos lenguajes A y B sobre .

B
A

especificados.

Ejemplos

Los siguientes son ejemplos de lenguajes sobre los alfabetos

= {a, b, c}. L = {a, aba, aca}.


= {a, b, c}. L = {a, aa, aaa, . . .} = {an : n 1}.

1.8. OPERACIONES ENTRE LENGUAJES

11

= {a, b, c}. L = {, aa, aba, ab2 a, ab3 a, . . .} = {abn a : n 0} {}.


= {a, b, c, . . . , x, y, z, A, B, C, . . . , X, Y, Z}. L = {u : u aparece
en el diccionario espa
nol DRA}. L es un lenguaje finito.
= {a, b, c}. L = {u : u no contiene el smbolo c}. Por ejemplo,
abbaab L pero abbcaa
/ L.
= {0, 1}. L = conjunto de todas las secuencias binarias que contienen un n
umero impar de unos.
= {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. El conjunto N de los n
umeros naturales
se puede definir como un lenguaje sobre , en la siguiente forma:
N = {u : u = 0 o 0 no es un prefijo de u}.
Como ejercicio, el estudiante puede definir el conjunto de los enteros Z =
{. . . , 2, 1, 0, 1, 2, . . .} como un lenguaje sobre un alfabeto adecuado.

1.8.

El concepto abstracto de lenguaje, tal como se ha definido, no es


exactamente la misma noci
on utilizada en la expresi
on lenguaje
de programaci
on. Para precisar la relaci
on entre estos conceptos,
consideremos el alfabeto de los caracteres ASCII. Un programa
en C o en Pascal, por ejemplo, es simplemente una cadena de
smbolos de y, por lo tanto, un conjunto de programas es un
lenguaje (en el sentido formal definido en esta secci
on).

Operaciones entre lenguajes

Puesto que los lenguajes sobre son subconjuntos de , las operaciones


usuales entre conjuntos son tambien operaciones validas entre lenguajes.
As, si A y B son lenguajes sobre (es decir A, B ), entonces los
siguientes tambien son lenguajes sobre :
AB
AB
AB
A = A

Union
Interseccion
Diferencia
Complemento

Estas operaciones entre lenguajes se llaman operaciones conjuntistas o booleanas para distinguirlas de las operaciones ling
usticas (concatenacion, potencia, inverso, clausura) que son extensiones a los lenguajes de las operaciones entre cadenas.

12

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.9.

Concatenaci
on de lenguajes

La concatenaci
on de dos lenguajes A y B sobre , notada A B o simplemente AB se define como
AB = {uv : u A, v B}.
En general, AB = BA.

Ejemplo

Si = {a, b, c}, A = {a, ab, ac}, B = {b, b2 }, entonces


AB = {ab, ab2 , ab2 , ab3 , acb, acb2 }.
BA = {ba, bab, bac, b2 a, b2 ab, b2 ac}.

Ejemplo

Si = {a, b, c}, A = {ba, bc}, B = {bn : n 0}, entonces


AB = {babn : n 0} {bcbn : n 0}.
BA = {bn ba : n 0} {bn bc : n 0}
= {bn+1 a : n 0} {bn+1 c : n 0}
= {bn a : n 1} {bn c : n 1}.

Propiedades de la concatenaci
on de lenguajes. Sean A, B, C lengua
jes sobre , es decir A, B, C . Entonces
1. A = A = .
2. A {} = {} A = A.
3. Propiedad Asociativa,
A (B C) = (A B) C.
4. Distributividad de la concatenaci
on con respecto a la uni
on,
A (B C) = A B A C.
(B C) A = B A C A.
5. Propiedad distributiva generalizada. Si {Bi }iI es una familia cualquiera de lenguajes sobre , entonces
A

(A Bi ),

Bi =
iI

iI

Bi A =
iI

(Bi A).
iI

DE LENGUAJES
1.9. CONCATENACION

13

Demostraci
on.
1. A = {uv : u A, v } = .
2. A {} = {uv : u A, v {}} = {u : u A} = A.
3. Se sigue de la asociatividad de la concatenaci
on de cadenas.
4. Caso particular de la propiedad general, demostrada a continuaci
on.
5. Demostraci
on de la igualdad A
xA

iI

Bi

iI

iI

x = u v, con u A & v iI Bi
x = u v, con u A & v Bj , para alg
un j I
x A Bj , para alg
un j I
x iI (A Bi ).

Bi A =

La igualdad

(A Bi ):

Bi =
iI

(Bi A) se demuestra de forma similar.


iI

La propiedad asociativa permite escribir concatenaciones de tres


o m
as lenguajes sin necesidad de usar parentesis.

En general, no se cumple que A (B C) = A B A C. Es decir,


la concatenaci
on no es distributiva con respecto a la interseccion.
Contraejemplo: A = {a, }, B = {}, C = {a}. Se tiene:
A (B C) = {a, } = .
Por otro lado,
A B A C = {a, } {} {a, } {a} = {a, } {a2 , a} = {a}.

Ejercicios de la secci
on 1.9

Dar un ejemplo de un alfabeto y dos lenguajes diferentes A, B sobre


tales que AB = BA.
Una de las dos contenencias siguientes es verdadera y la otra es falsa.
Demostrar o refutar, seg
un sea el caso:
(i) A (B C) A B A C.
(ii) A B A C A (B C).

14

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.10.

Potencias de un lenguaje

Dado un lenguaje A sobre , (A ), y un n


umero natural n N, se
n
define A en la siguiente forma
A0 = {},
An = AA A = {u1 un : ui A, para todo i, 1 i n}.
n veces

De esta forma, A2 es el conjunto de las concatenaciones dobles de cadenas


de A, A3 esta formado por las concatenaciones triples y, en general, An
es el conjunto de todas las concatenaciones de n cadenas de A, de todas
las formas posibles. Como ejercicio, el estudiante puede dar una definicion
recursiva de An .

1.11.

La clausura de Kleene de un lenguaje

La clausura de Kleene o estrella de Kleene o simplemente la estrella


de un lenguaje A, A , es la uni
on de todas las potencias de A y se
denota por A .
(Descripci
on 1)

Ai = A0 A1 A2 An

A =
i0

Seg
un la definicion de las potencias de una lenguaje, A consta de todas
las concatenaciones de cadenas de A consigo mismas, de todas las formas
posibles. Tenemos as una u
til descripci
on de A :

(Descripci
on 2)

A = conjunto de todas las concatenaciones


de cadenas de A, incluyendo
= {u1 un : ui A, n 0}

De manera similar se define la clausura positiva de un lenguaje A, A


, denotada por A+ .
Ai = A1 A2 An

A+ =
i1

A+ se puede describir de la siguiente manera


A+

=
=

conjunto de todas las concatenaciones de cadenas de A


{u1 un : ui A, n 1}

1.11. LA CLAUSURA DE KLEENE DE UN LENGUAJE

15

Observese que A = A+ {} y que A = A+ si y solamente si A.


Propiedades de y +. Sea A un lenguaje sobre , es decir, A .
1. A+ = A A = A A .
2. A A = A .
3. A

= A , para todo n 1.

4. A

= A .

5. A+ A+ A+ .
6. A

= A .

7. A+

= A .

8. A+

= A+ .

9. Si A y B son lenguajes sobre , entonces (A B) = (A B ) .


Demostraci
on.
1.

A A = A (A0 A1 A2 )
= A1 A2 A3
= A+ .

Similarmente se demuestra que A A = A+ .


2. Si x A A , entonces x = u v, con u A , v A . De modo que,
x = u v, con u = u1 u2 un , ui A, n 0 y v = v1 v2 vm , vi A,
m 0.
De donde
x = u v = u1 u2 un v 1 v 2 v m .
con ui A, vi A, n 0. Por lo tanto, x es una concatenaci
on de n + m
cadenas de A. As que x A .
Recprocamente, si x A , entonces x = x A A . Esto prueba la
igualdad de los conjuntos A A y A .
3.

Se sigue de la propiedad anterior.

4.

= A

= {} A A A
= A .

16

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

5. La demostraci
on de esta propiedad es similar a la de la propiedad 2,
pero con la restriccion m, n 1. En general, no se tiene la igualdad A+
A+ = A+ ; m
as adelante se mostrara un contraejemplo.
A

6.

= A

(A

(A

= A A A
= A .

A+

7.

= A+

A+
+

1
+

A+

= {} A A A
= A (conjuntos contenidos en A+ )
= A .

A+

8.

= A+

A+

A+

= A (conjuntos contenidos en A+ )
= A+ .
9. Seg
un la Descripci
on 2, el lenguaje (AB) esta formado por las concatenaciones de cadenas de A consigo mismas, las concatenaciones de cadenas
de B consigo mismas y las concatenaciones de cadenas de A con cadenas de
B, de todas las formas posibles y en cualquier orden. Si se usa tambien la
Descripci
on 2, se observa que eso mismo se obtiene al efectuar (A B ) .

Contraejemplo de A+ A+ = A+ . Sea = {a, b}, A = {a}. Se


tiene
A+ = A1 A2 = {a} {aa} {aaa} = {an : n 1}.
Por otro lado,
A+ A+ = {a, a2 , a3 , . . . } {a, a2 , a3 , . . . } = {a2 , a3 , a4 , . . . }
= {an : n 2}.

Seg
un las definiciones dadas, tiene dos significados:
= conjunto de las cadenas sobre el alfabeto .
= conjunto de todas las concatenaciones de cadenas de .
No hay conflicto de notaciones porque las dos definiciones anteriores de dan lugar al mismo conjunto.

O INVERSO DE UN LENGUAJE
1.12. REFLEXION

1.12.

17

Reflexi
on o inverso de un lenguaje

Dado A un lenguaje sobre , se define AR de la siguiente forma:


AR = {uR : u A}.
AR se denomina la reflexi
on o el inverso de A.
Propiedades. Sean A y B lenguajes sobre (es decir, A, B ).
1. (A B)R = B R AR .
2. (A B)R = AR B R .
3. (A B)R = AR B R .
4. AR

= A.

5. (A )R = AR .
R

6. (A+ ) = AR

Demostraci
on. Demostraremos las propiedades 1 y 5; las demas se dejan
como ejercicio para el estudiante.
1.

x (A B)R x = uR ,

donde u A B

x = uR ,

donde u = vw, v A, w B
R

x = (vw) ,

donde v A, w B

x = wR v R ,

donde v A, w B

x B A .

5.

x (A )R x = uR , donde u A
x = (u1 u2 un )R , donde los ui A, n 0
R
R
x = uR
n u2 u1 , donde los ui A, n 0

x (AR ) .

Ejercicios de la secci
on 1.12

Demostrar las propiedades 2, 3, 4 y 6 de la reflexi


on de cadenas.
Se pueden generalizar las propiedades 2 y 3 anteriores para uniones
e intersecciones arbitrarias, respectivamente?

18

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

1.13.

Lenguajes regulares

Los lenguajes regulares sobre un alfabeto dado son todos los lenguajes
que se pueden formar a partir de los lenguajes basicos , {}, {a}, a ,
por medio de las operaciones de uni
on, concatenaci
on y estrella de Kleene.
A continuaci
on presentamos una definicion recursiva de los lenguajes
regulares. Sea un alfabeto.
1. , {} y {a}, para cada a , son lenguajes regulares sobre . Estos
son los denominados lenguajes regulares basicos.
2. Si A y B son lenguajes regulares sobre , tambien lo son
AB
AB
A

(uni
on),
(concatenacion),
(estrella de Kleene).

Observese que tanto como son lenguajes regulares sobre . La uni


on,
la concatenaci
on y la estrella de Kleene se denominan operaciones regulares.

Ejemplos Sea = {a, b}. Los siguientes son lenguajes regulares sobre

:
1. El lenguaje A de todas las cadenas que tienen exactamente una a:
A = {b} {a} {b} .
2. El lenguaje B de todas las cadenas que comienzan con b:
B = {b} {a, b} .
3. El lenguaje C de todas las cadenas que contienen la cadena ba:
C = {a, b} {ba} {a, b} .
4. ({a} {b} ) {a}.
5.

{a} {b} {b} .

Es importante observar que todo lenguaje finito L = {w1 , w2 , . . . , wn } es


regular ya que L se puede obtener con uniones y concatenaciones:
L = {w1 } {w2 } {wn },
y cada wi es la concatenaci
on de un n
umero finito de smbolos, wi =
a1 a2 ak ; por lo tanto, {wi } = {a1 } {a2 } {ak }.

1.14. EXPRESIONES REGULARES

1.14.

19

Expresiones regulares

Con el prop
osito de simplificar la descripci
on de los lenguajes regulares se
definen las llamadas expresiones regulares.
La siguiente es la definicion recursiva de las expresiones regulares
sobre un alfabeto dado.
1. Expresiones regulares basicas:
es una expresi
on regular que representa al lenguaje .
es una expresi
on regular que representa al lenguaje {}.
a es una expresi
on regular que representa al lenguaje {a}, a .
2. Si R y S son expresiones regulares sobre , tambien lo son:
(R)(S)
(R S)
(R)
(R)(S) representa la concatenaci
on de los lenguajes representados por
R y S; (R S) representa su uni
on, y (R) representa la clausura
de Kleene del lenguaje representado por R. Los parentesis ( y ) son
smbolos de agrupacion y se pueden omitir si no hay peligro de ambig
uedad.
Para una expresi
on regular R cualquiera se utiliza en ocasiones la siguiente
notaci
on:
L(R) := lenguaje representado por R.
Utilizando esta notaci
on y la definicion recursiva de expresi
on regular podemos escribir las siguientes igualdades en las que R y S son expresiones
regulares arbitrarias:
L() = .
L() = {}.
L(a) = {a}, a .
L(RS) = L(R)L(S).
L(R S) = L(R) L(S).
L(R ) = L(R) .

Ejemplo

Dado el alfabeto = {a, b, c},


(a b )a (bc)

20

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

es una expresi
on regular que representa al lenguaje
({a} {b} ) {a} {bc} .

Ejemplo

Dado el alfabeto = {a, b},


( a) (a b) (ba)

es una expresi
on regular que representa al lenguaje
({} {a}) ({a} {b}) {ba} .

ci
on 1.13 con expresiones regulares:

Ejemplos

Podemos representar los tres primeros lenguajes de la sec-

1. El lenguaje A de todas las cadenas que tienen exactamente una a:


A = b ab .
2. El lenguaje B de todas las cadenas que comienzan con b:
B = b(a b) .
3. El lenguaje C de todas las cadenas que contienen la cadena ba:
C = (a b) ba(a b) .

La representaci
on de lenguajes regulares por medio de expresiones
regulares no es u
nica. Es posible que haya varias expresiones regulares diferentes para el mismo lenguaje. Por ejemplo, b(a b)
y b(b a) representan el mismo lenguaje.
Otro ejemplo: las dos expresiones regulares (a b) y (a b ) representan el mismo lenguaje por la propiedad 9 de la secci
on 1.11.

lenguajes, definidos sobre el alfabeto = {a, b}:

Ejemplos

Encontrar expresiones regulares que representen los siguientes

1. Lenguaje de todas las cadenas que comienzan con el smbolo b y


terminan con el smbolo a.
Solucion.

b(a b) a.

1.14. EXPRESIONES REGULARES

21

2. Lenguaje de todas las cadenas que tienen un n


umero par de smbolos
(cadenas de longitud par).
on regular para este lenSolucion. (aa ab ba bb) . Otra expresi
guaje es [(a b)(a b)] .
3. Lenguaje de todas las cadenas que tienen un n
umero par de aes.
Soluciones:
b (b ab ab ) .
(ab a b) .
(b ab ab ) b .

lenguajes, definidos sobre el alfabeto = {0, 1}:

Ejemplos

Encontrar expresiones regulares que representen los siguientes

1. Lenguaje de todas las cadenas que tienen exactamente dos ceros.


Solucion.

1 01 01 .

2. Lenguaje de todas las cadenas cuyo pen


ultimo smbolo, de izquierda
a derecha, es un 0.
Solucion. (0 1) 0(0 1). Usando la propiedad distributiva obtenemos otra expresi
on regular para este lenguaje: (0 1) 00 (0 1) 01.

el lenguaje de todas las cadenas que no contienen dos ceros

Ejemplo

Sea = {0, 1}. Encontrar una expresi


on regular que represente

consecutivos.
Solucion. La condici
on de que no haya dos ceros consecutivos implica que
todo cero debe estar seguido necesariamente de un uno, excepto un cero al
final de la cadena. Por lo tanto, las cadenas de este lenguaje se obtienen
concatenado unos con bloques 01, de todas las formas posibles. Hay que
tener en cuenta, adem
as, que la cadena puede terminar ya sea en 1 o en 0.
A partir de este an
alisis, llegamos a la expresi
on regular
(1 01) (1 01) 0.
Usando la propiedad distributiva, obtenemos otra expresi
on para este lenguaje: (1 01) ( 0).

sente el lenguaje de todas las cadenas que no contienen la ca-

Ejemplo

dena bc.

Sea = {a, b, c}. Encontrar una expresi


on regular que repre-

22

CAPITULO 1. ALFABETOS, CADENAS Y LENGUAJES

Solucion. Una b puede estar seguida solamente de otra b o de una a, mientras


que las aes y las ces pueden estar seguidas de cualquier smbolo. Teniendo
en cuenta todas las restricciones y posibilidades, arribamos a la siguiente
expresi
on regular:
(a c b+ a) b .
La condici
on de que no aparezca la cadena bc significa que una c puede
estar precedida solamente de una a y de otra c. Siguiendo esta descripcion,
obtenemos otra expresi
on regular para el lenguaje en cuesti
on:
c (b ac ) .

Ejercicios de la secci
on 1.14

Encontrar expresiones regulares para los lenguajes descritos a continuaci


on:
(i) = {0, 1, 2}. Lenguaje de todas las cadenas que comienzan con
2 y terminan con 1.
(ii) = {a, b, c}. Lenguaje de todas las cadenas que tienen un n
umero par de smbolos.
(iii) = {a, b}. Lenguaje de todas las cadenas que tienen un n
umero
impar de smbolos.
(iv) = {a, b, c}. Lenguaje de todas las cadenas que tienen un n
umero impar de smbolos.
(v) = {a, b}. Lenguaje de todas las cadenas que tienen un n
umero
impar de aes.
(vi) = {a, b}. Lenguaje de todas las cadenas que tienen la cadena
ab un n
umero par de veces.
(vii) = {a, b}. Lenguaje de todas las cadenas que tienen un n
umero
par de aes o un n
umero impar de bes.
(viii) = {0, 1, 2}. Lenguaje de todas las cadenas que no contienen
dos unos consecutivos.
Encontrar expresiones regulares para los siguientes lenguajes definidos
sobre el alfabeto = {0, 1}:
(i) Lenguaje de todas las cadenas que tienen por lo menos un 0 y
por lo menos un 1.

1.14. EXPRESIONES REGULARES

23

(ii) Lenguaje de todas las cadenas que tienen a lo sumo dos ceros
consecutivos.
(iii) Lenguaje de todas las cadenas cuyo quinto smbolo, de izquierda
a derecha, es un 1.
(iv) Lenguaje de todas las cadenas de longitud par 2 formadas
por ceros y unos alternados.
(v) Lenguaje de todas las cadenas cuya longitud es 4.
(vi) Lenguaje de todas las cadenas de longitud impar que tienen
unos u
nicamente en las posiciones impares.
(vii) Lenguaje de todas las cadenas cuya longitud es un m
ultiplo de
tres.
(viii) Lenguaje de todas las cadenas que no contienen tres ceros consecutivos.
(ix) Lenguaje de todas las cadenas que no contienen cuatro ceros
consecutivos.
!(x) Lenguaje de todas las cadenas que no contienen la subcadena
101.

No todos los lenguajes sobre un alfabeto dado son regulares.


M
as adelante se mostrara que el lenguaje
L = {, ab, aabb, aaabbb, . . . } = {an bn : n 0}
sobre = {a, b} no se puede representar por medio de una expresion regular, y por lo tanto, no es un lenguaje regular.

Captulo

Automatas finitos
Los aut
omatas son m
aquinas abstractas con capacidad de computaci
on.
Historicamente, su estudio se origin
o con la llamada maquina de Turing,
que fue propuesta en 1936 por el matem
atico brit
anico Alan Turing (1912
1954) con el prop
osito de precisar las caractersticas y las limitaciones de
un dispositivo de computaci
on mecanica. En los a
nos 40 y 50 del siglo XX
se adelantaron investigaciones sobre m
aquinas de Turing con capacidad
restringida, lo que dio lugar a la noci
on de automata finito.

2.1.

Aut
omatas finitos deterministas (AFD)

Los aut
omatas finitos son m
aquinas abstractas que procesan cadenas de
entrada, las cuales son aceptadas o rechazadas:
Aut
omata
M

si

(u es aceptada)

Cadena de
entrada u
no

(u es rechazada)

El automata act
ua leyendo los smbolos escritos sobre una
infinita, dividida en celdas o casillas, sobre la cual se escribe
de entrada u, un smbolo por casilla. El automata posee una
control (tambien llamada cabeza lectora, control finito o
25

cinta semiuna cadena


unidad de
unidad de

26

CAPITULO 2. AUTOMATAS
FINITOS

memoria) que tiene un n


umero finito de configuraciones internas, llamadas estados del aut
omata. Entre los estados de un automata se destacan
el estado inicial y los estados finales o estados de aceptaci
on.
Formalmente, un aut
omata finito M esta definido por cinco par
ametros
o componentes, M = (, Q, q0 , F, ), a saber:
1. Un alfabeto , llamado alfabeto de cinta. Todas las cadenas que procesa M pertenecen a .
2. Q = {q0 , q1 , . . . , qn }, conjunto de estados internos del automata.
3. q0 Q, estado inicial.
4. F Q, conjunto de estados finales o de aceptaci
on. F = .
5. La funcion de transicion del automata
: Q
Q
(q, s) (q, s)
Una cadena de entrada u se coloca en la cinta de tal manera que el primer
smbolo de u ocupa la primera casilla de la cinta. La unidad de control
esta inicialmente en el estado q0 escaneando la primera casilla:
u

Unidad
de control

La funcion de transicion indica el estado al cual pasa el control finito,


dependiendo del smbolo escaneado y de su estado actual. As, (q, s) = q
significa que, en presencia del smbolo s, la unidad de control pasa del
estado q al estado q y se desplaza hacia la derecha. Esta accion constituye
un paso computacional:
(q, s) = q


2.1. AUTOMATAS
FINITOS DETERMINISTAS (AFD)

27

Puesto que la funcion esta definida para toda combinacion estadosmbolo, una cadena de entrada cualquiera es procesada completamente,
hasta que la unidad de control encuentra la primera casilla vaca.
La unidad de control de un automata siempre se desplaza hacia la derecha; no puede retornar ni escribir smbolos sobre la cinta.

componentes:

Ejemplo

Consideremos el aut
omata definido por los siguientes cinco

= {a, b}.
Q = {q0 , q1 , q2 }.
q0 : estado inicial.
F = {q0 , q2 }, estados de aceptaci
on.
Funcion de transicion :

q0 q0 q1
q1 q1 q2
q2 q1 q1

(q0 , a) = q0

(q0 , b) = q1

(q1 , a) = q1

(q1 , b) = q2

(q2 , a) = q1

(q2 , b) = q1 .

Vamos a ilustrar el procesamiento de dos cadenas de entrada.


1.

u = aabab.
u
a

q0

q0

q0

q1

q1

q2

Como q2 es un estado de aceptaci


on, la cadena de entrada u es aceptada.
2.

v = aababa.
v
a

q0

q0

q0

q1

q1

q2

q1

Puesto que q1 no es un estado de aceptaci


on, la entrada v es rechazada.

28

CAPITULO 2. AUTOMATAS
FINITOS

Caso especial: la cadena es la cadena de entrada.

q0
Como q0 es un estado de aceptaci
on, la cadena es aceptada.
En general se tiene lo siguiente: la cadena vaca es aceptada por un
automata M si y solamente si el estado inicial q0 de M tambien es un estado
de aceptaci
on.
Los aut
omatas finitos descritos anteriormente se denominan aut
omatas
finitos deterministas (AFD) ya que para cada estado q y para cada
smbolo a , la funcion de transicion (q, a) siempre esta definida. Es
decir, la funcion de transicion determina completa y unvocamente la
accion que el aut
omata realiza cuando la unidad de control se encuentra en
un estado q leyendo un smbolo s sobre la cinta.
Dado un aut
omata M , el lenguaje aceptado o reconocido por M se
denota L(M ) y se define por
L(M ) := {u : M termina el procesamiento de la cadena
de entrada u en un estado q F }.

2.2.

Diagrama de transiciones de un aut


omata

Un aut
omata finito se puede representar por medio de un grafo dirigido y
etiquetado. Recuerdese que un grafo es un conjunto de vertices o nodos
unidos por arcos o conectores; si los arcos tienen tanto direccion como
etiquetas, el grafo se denomina grafo dirigido y etiquetado o digrafo
etiquetado.
El digrafo etiquetado de un automata se obtiene siguiendo las siguientes
convenciones:
Los vertices o nodos son los estados del automata.
El estado q se representa por: q
El estado inicial q0 se representa por: >q0
Un estado final q se representa por: q

29

DE AUTOMATAS

2.3. DISENO

La transicion = (q, s) = p se representa en la forma


s
q
p
Dicho grafo se denomina diagrama de transiciones del aut
omata y
es muy u
til para hacer el seguimiento completo del procesamiento de una
cadena de entrada. Una cadena u es aceptada si existe una trayectoria
etiquetada con los smbolos de u, que comienza en el estado q0 y termina
en un estado de aceptaci
on.

ci
on anterior.

Ejemplo

Diagrama de transiciones del automata presentado en la sec-

= {a, b}.
Q = {q0 , q1 , q2 }.
q0 : estado inicial.
F = {q0 , q2 }, estados de aceptaci
on.
Funcion de transicion :

q0 q0 q1
q1 q1 q2
q2 q1 q1

(q0 , a) = q0

(q0 , b) = q1

(q1 , a) = q1

(q1 , b) = q2

(q2 , a) = q1

(q2 , b) = q1

> q0

a
q1

a, b
b
q2

Examinando el diagrama de transiciones podemos observar f


acilmente que
la entrada aaababbb es aceptada mientras que aabaaba es rechazada.

2.3.

Dise
no de aut
omatas

Para aut
omatas deterministas se adopta la siguiente convencion adicional
con respecto a los diagramas de transiciones: se supone que los arcos no

30

CAPITULO 2. AUTOMATAS
FINITOS

dibujadas explcitamente conducen a un estado limbo de no-aceptacion.


Es decir, en el diagrama de transiciones se indican u
nicamente los arcos que
intervengan en trayectorias de aceptaci
on. Esto permite simplificar considerablemente los diagramas.
En este captulo abordaremos dos tipos de problemas:
1.

Dado un lenguaje regular L dise


nar un automata finito M que acepte
o reconozca a L, es decir, tal que L(M ) = L.

2.

Dado un aut
omata M determinar el lenguaje aceptado por M .

M
as adelante se demostrar
a, en toda su generalidad, que estos problemas
siempre tienen solucion. Consideremos inicialmente problemas del primer
tipo.

Ejemplo

L = a = {, a, a2 , a3 , . . .}. AFD M tal que L(M ) = L:


a
> q0

a
b

q1
b

a
Versi
on simplificada:

Ejemplo

> q0

L = a+ = {a, a2 , a3 , . . .}. AFD M tal que L(M ) = L:


a
> q0
b

a
q1

q2
b
a
Versi
on simplificada:

> q0

q1

mente dos aes = b ab ab . AFD M tal que L(M ) = L:

Ejemplo

= {a, b}. L = lenguaje de las cadenas que contienen exacta-

DE AUTOMATAS

2.3. DISENO

> q0

31

q1

q2

n
umero par de smbolos (cadenas de longitud par). AFD M

Ejemplo

= {0, 1}. L = lenguaje de las cadenas sobre que tienen un

tal que L(M ) = L:


0, 1
> q0

q1
0, 1

un n
umero par de ceros. AFD M tal que L(M ) = L:

Ejemplo

= {0, 1}. L = lenguaje de las cadenas sobre que contienen


1

> q0

1
q1

en b. AFD M tal que L(M ) = L:

Ejemplo

= {a, b}. L = lenguaje de las cadenas sobre que terminan


a

> q0

b
q1

Ejercicios de la secci
on 2.3

Dise
nar aut
omatas finitos deterministas que acepten los siguientes
lenguajes:
(i) = {0, 1}. L = lenguaje de las cadenas sobre de longitud
impar.
(ii) = {0, 1}. L = lenguaje de las cadenas sobre que contienen
un n
umero impar de unos.

32

CAPITULO 2. AUTOMATAS
FINITOS

(iii) = {a, b}. L = ab+ .


(iv) = {a, b}. L = ab ab a.
(v) = {0, 1}. L = (0 10) .
(vi) = {0, 1}. L = (01 10) .
(vii) = {0, 1}. Lenguaje de todas las cadenas que no contienen dos
unos consecutivos.
(viii) = {a, b}. L = {a2i b3j : i, j 0}.
(ix) = {a, b}. L = lenguaje de las cadenas sobre que contienen
un n
umero par de aes y un n
umero par de bes. Ayuda: utilizar
4 estados.
(x) = {a, b}. Para cada combinacion de las condiciones par e
impar y de las conectivas o e y, dise
nar un AFD que
acepte el lenguaje L definido por
L = lenguaje de las cadenas con un n
umero par/impar de aes
y/o un n
umero par/impar de bes.
Ayuda: utilizar el aut
omata de 4 estados dise
nado en el ejercicio anterior, modificando adecuadamente el conjunto de estados
finales.
Determinar los lenguajes aceptados por los siguientes AFD. Describir
los lenguajes ya sea por medio de una propiedad caracterstica o de
una expresi
on regular.
(i)
0

> q0

q1

q2

q3

q4

(ii)
1
> q0

q1

q2

q3
0


2.4. AUTOMATAS
FINITOS NO-DETERMINISTAS (AFN)

33

(iii)
q1
0

1
0
> q0

q2

q3

1
(iv)
b
> q0

q1

a
q2

2.4.

Aut
omatas finitos no-deterministas (AFN)

Los aut
omatas finitos no-deterministas (AFN) se asemejan a los AFD,
excepto por el hecho de que para cada estado q Q y cada a , la
transicion (q, a) puede consistir en m
as de un estado o puede no estar
definida. Concretamente, un AFN esta definido por M = (, Q, q0 , F, )
donde:
1. es el alfabeto de cinta.
2. Q es un conjunto (finito) de estados internos.
3. q0 Q es el estado inicial.
4. = F Q es el conjunto de estados finales o estados de aceptaci
on.
5.

: Q (Q)
(q, s) (q, s) = {qi1 , qi2 , . . . , qik }
donde

(Q) es el conjunto de subconjunto de Q.

34

CAPITULO 2. AUTOMATAS
FINITOS

El significado de (q, s) = {qi1 , qi2 , . . . , qik } es el siguiente: estando en


el estado q, en presencia del smbolo s, la unidad de control puede pasar
(aleatoriamente) a uno cualquiera de los estados qi1 , qi2 ,. . . , qik , despues de
lo cual se desplaza a la derecha.
Puede suceder que (q, s) = , lo cual significa que, si durante el procesamiento de una cadena de entrada u, M ingresa al estado q leyendo sobre
la cinta el smbolo s, el computo se aborta.
Computo abortado:
u

q
La noci
on de diagrama de transiciones para un AFN se define de manera
an
aloga al caso AFD, pero puede suceder que desde un mismo nodo (estado)
salgan dos o m
as arcos con la misma etiqueta:

q
s
q

Un AFN M puede procesar una cadena de entrada u de varias maneras. Sobre el diagrama de transiciones del automata, esto significa que
pueden existir varias trayectorias, desde el estado q0 , etiquetadas con los
smbolos de u.
La siguiente es la noci
on de aceptaci
on para automatas no-deterministas:
L(M ) = lenguaje aceptado o reconocido por M
= {u : existe por lo menos un computo completo
de u que termina en un estado q F }

35

2.4. AUTOMATAS
FINITOS NO-DETERMINISTAS (AFN)

Es decir, para que una cadena u sea aceptada, debe existir alg
un computo en el que u sea procesada completamente y que finalice estando M en
un estado de aceptaci
on.

Ejemplo
a
> q0

Sea M el siguiente AFN:

q1

b
q2

a
q3

q0

{q0 , q1 , q3 }

q1

{q1 }

{q2 }

q2

{q1 , q2 }

q3

{q3 }

b
Para la cadena de entrada u = abb, existen computos que conducen al rechazo, computos abortados y computos que terminan en estados de aceptaci
on.
Seg
un la definicion de lenguaje aceptado, u L(M ).
u
Computo de rechazo:

q0

q1

q2

q2

u
Computo de aceptaci
on:

q0

q3

q3

q3

u
Otro computo de aceptaci
on:

q0

q1

q2

q1

36

CAPITULO 2. AUTOMATAS
FINITOS

u
Computo abortado:

q0

q0

AFD que acepta el lenguaje de las cadenas sobre = {a, b}

Ejemplo

En el u
ltimo ejemplo de la secci
on 2.3 se dise
no el siguiente

que terminan en b:
a

> q0

q1
a

Un AFN que acepta el mismo lenguaje y que es, tal vez, m


as facil de
concebir, es el siguiente:
a
b

> q0

q1

b
Este aut
omata se asemeja a la expresi
on regular (a b) b.

Ejemplo

Considerese el lenguaje L = ab a+ sobre el alfabeto =


{a, b}. El siguiente AFN M satisface L(M ) = L.
a
> q0
a

b
q1

a
q2

Ejemplo

= {0, 1}, L = (01 010) . El siguiente AFN acepta a L.


2.4. AUTOMATAS
FINITOS NO-DETERMINISTAS (AFN)

37

0
> q0
0

q1

0
q2

q3

1
Otro AFN que acepta el mismo lenguaje y que tiene s
olo tres estados es el
siguiente:
0
1
q1
q2
> q0
1
0

Ejercicios de la secci
on 2.4

Dise
nar aut
omatas AFD o AFN que acepten los siguientes lenguajes:
= {a, b}. L = ab+ a .
= {a, b}. L = a(a ab) .
= {a, b, c}. L = a b c .
= {0, 1, 2}. L = lenguaje de las cadenas sobre que comienzan
con 0 y terminan con 2.
= {0, 1}. Lenguaje de las cadenas de longitud par 2 formadas
por ceros y unos alternados.
= {0, 1}. Lenguaje de las cadenas que tienen a lo sumo dos ceros
consecutivos.
= {0, 1}. Lenguaje de las cadenas de longitud impar que tienen
unos u
nicamente en las posiciones impares.
= {a, b, c}. L = lenguaje de las cadenas sobre que contienen la
cadena bc.
= {a, b, c}. L = lenguaje de las cadenas sobre que no contienen
la cadena bc. En el u
ltimo ejemplo de la secci
on 1.14 se presentaron
dos expresiones regulares para L. Nota: se puede construir un AFD
con s
olo dos estados para aceptar este lenguaje!

38

2.5.

CAPITULO 2. AUTOMATAS
FINITOS

Equivalencia computacional entre los AFD y


los AFN

En esta secci
on se mostrara que los modelos AFD y AFN son computacionalmente equivalentes. En primer lugar, es facil ver que un AFD M =
(, Q, q0 , F, ) puede ser considerado como un AFN M = (, Q, q0 , F, )
definiendo (q, a) = {(q, a)} para cada q Q y cada a . Para la
afirmacion recproca tenemos el siguiente teorema.
2.5.1 Teorema. Dado un AFN M = (, Q, q0 , F, ) se puede construir
un AFD M equivalente a M , es decir, tal que L(M ) = L(M ).
Este teorema, cuya demostraci
on se dar
a en detalle m
as adelante, establece que el no-determinismo se puede eliminar. Dicho de otra manera,
los automatas deterministas y los no-deterministas aceptan los mismos lenguajes. La idea de la demostraci
on consiste en considerar cada conjunto de
estados {p1 , . . . , pj }, que aparezca en la tabla de la funcion del automata
no-determinista, como un u
nico estado del nuevo automata determinista.
La tabla de se completa hasta que no aparezcan nuevas combinaciones de
estados. Los estados de aceptaci
on del nuevo automata son los conjuntos
de estados en los que aparece por lo menos un estado de aceptaci
on del
automata original. El siguiente ejemplo ilustra el procedimiento.

acepta el lenguaje L(M ) = ab a+ sobre = {a, b}:

Ejemplo

Consideremos el AFN M , presentado en la secci


on 2.4, que

a
> q0
a

b
q1

a
q2

q0

{q1 , q2 }

q1

{q1 }

q2

{q2 }

El nuevo AFD M construido a partir de M tiene un estado m


as, {q1 , q2 },
y su funcion de transicion tiene el siguiente aspecto:

2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

q0

{q1 , q2 }

q1

{q1 }

q2

{q2 }

{q1 , q2 }

{q2 }

{q1 }

39

El diagrama de transiciones de este automata es:


a
a

a
> {q0 }

{q1 , q2 }

{q2 }

{q1 }

b
Los estados de aceptaci
on son aquellos en los que aparezcan q1 o q2 , que
son los estados de aceptaci
on del automata original.
Para mayor simplicidad, podemos cambiar los nombres de los estados
del nuevo aut
omata:
a

a
> p0

p1

a
p2

b
p3

lenguaje L = (01 010) sobre = {0, 1}.

Ejemplo

El siguiente AFN M , presentado en la secci


on 2.4, acepta el

40

CAPITULO 2. AUTOMATAS
FINITOS

> q0

q1

q2

1
0

La tabla de la funcion de transicion de M se extiende para completar la


funcion del nuevo AFN:

q0

{q1 }

q1

{q0 , q2 }

q2

{q0 }

{q0 , q2 }

{q0 , q1 }

{q0 , q1 }

{q1 }

{q0 , q2 }

El diagrama de transiciones del nuevo automata es:


0
0
> {q0 }

{q1 }

{q2 }

0
0

{q0 , q2 }

{q0 , q1 }

Los estados de aceptaci


on son aquellos en los que aparezca q0 ya que q0 es
el u
nico estado de aceptaci
on del automata original.
Puesto que el nuevo estado {q2 } no interviene en la aceptaci
on de cadenas, el aut
omata se puede simplificar en la siguiente forma:

2.5. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFD Y LOS AFN

41

0
> p0

p1

0
0

p2

p3

Para la demostraci
on del Teorema 2.5.1, conviene extender la definicion de
la funcion de transicion, tanto de los automatas deterministas como de los
no-deterministas.
2.5.2 Definici
on. Sea M = (, Q, q0 , F, ) un AFD. La funcion de transici
on : Q Q se extiende a una funcion : Q Q por medio
de la siguiente definicion recursiva:

(q, ) = q, q Q,
(q, a) = (q, a), q Q, a ,

(q, wa) = ((q, w), a), q Q, a , w .

Seg
un esta definicion, para una cadena de entrada w , (q0 , w) es el
estado en el que el aut
omata termina el procesamiento de w. Por lo tanto,
podemos describir el lenguaje aceptado por M de la siguiente forma:
L(M ) = {w : (q0 , w) F }.
Notaci
on. Sin peligro de ambig
uedad, la funcion extendida (q, w) se notar
a simplemente (q, w).
2.5.3 Definici
on. Sea M = (, Q, q0 , F, ) un AFN. La funcion de transicion : Q (Q) se extiende inicialmente a conjuntos de estados.
Para a y S F se define
(S, a) :=

(q, a).
qS

42

CAPITULO 2. AUTOMATAS
FINITOS

Luego se extiende a una funcion : Q (Q), de manera


similar a como se hace para los AFD. Recursivamente,

(q, ) = {q}, q Q,

(q, a) = (q, a), q Q, a ,


(q, wa) = ((q, w), a) =
(p, a), q Q, a , w .

p(q,w)

Seg
un esta definicion, para una cadena de entrada w , (q0 , w) es el
conjunto de los posibles estados en los que terminan los computos completos
de w. Si el computo se aborta durante el procesamiento de w, se tendra
(q0 , w) = . Usando la funcion extendida , el lenguaje aceptado por M
se puede describir de la siguiente forma:
L(M ) = {w : (q0 , w) contiene un estado de aceptaci
on}.
Notaci
on. Sin peligro de ambig
uedad, la funcion extendida (q, w) se
notar
a simplemente (q, w).
Demostraci
on del Teorema 2.5.1:
Dado el AFN M = (, Q, q0 , F, ), construimos el AFD M as:
M = (, (Q), {q0 }, F , )

donde

: (Q) (Q)
(S, a) (S, a) := (S, a).
F = {S (Q) : S F = }.

Se demostrar
a que L(M ) = L(M ) probando que, para toda cadena w ,
({q0 }, w) = (q0 , w). Esta igualdad se demostrar
a por induccion sobre w.
Para w = , claramente se tiene ({q0 }, ) = (q0 , ) = {q0 }. Para w = a,
a , se tiene
({q0 }, a) = ({q0 }, a) = (q0 , a).
Supongase (hip
otesis de induccion) que ({q0 }, w) = (q0 , w), y que a .
({q0 }, wa) = (({q0 }, w), a)
= (({q0 }, w), a)

(definicion de la extensi
on de )
(hip
otesis de induccion)

= (({q0 }, w), a) (definicion de )


= ({q0 }, wa)

(definicion de la extensi
on de )

= (q0 , wa)

(definicion de la extensi
on de ).


2.6. AUTOMATAS
CON TRANSICIONES (AFN-)

Ejercicios de la secci
on 2.5

43

Dise
nar AFD equivalentes a los siguientes AFN:

b
> q0

q1

b
q2

q3
a

0
> q0

q1

1
q2

0
q3
1

2.6.

Aut
omatas con transiciones (AFN-)

Un aut
omata finito con transiciones (AFN-) es un automata nodeterminista M = (, Q, q0 , F, ) en el que la funcion de transicion esta definida como:
: Q ( {}) (Q).
on , transici
on
La transicion (q, ) = {pi1 , . . . , pin }, llamada transici
nula o transici
on espont
anea, tiene el siguiente significado computacional: estando en el estado q, el aut
omata puede cambiar a uno cualquiera de
los estados pi1 , . . . , pin , independientemente del smbolo ledo y sin mover
la unidad de control. Dicho de otra manera, las transiciones permiten
al automata cambiar internamente de estado sin procesar o consumir el
smbolo ledo sobre la cinta.
En el diagrama del aut
omata, las transiciones dan lugar a arcos con
etiquetas . Una cadena de entrada w es aceptada por un AFN- si existe por lo menos una trayectoria, desde el estado q0 , cuyas etiquetas son
exactamente los smbolos de w, intercalados con cero, uno o m
as s.

44

CAPITULO 2. AUTOMATAS
FINITOS

En los aut
omatas AFN-, al igual que en los AFN, puede haber m
ultiples
computos para una misma cadena de entrada, as como computos abortados.

Ejemplo

M:
a

q1

q2

q3

q4

> q0

Ejemplos de cadenas aceptadas por M :


u = aab
v = abaa
w = abbaa
Computos de aceptaci
on de u = aab y v = abaa:

q0

q1

q1

q2

q0

q3

q3

q4

q4

q1

q4


2.6. AUTOMATAS
CON TRANSICIONES (AFN-)

45

Los AFN- permiten a


un m
as libertad en el dise
no de automatas, especialmente cuando hay numerosas concatenaciones.

Ejemplo

= {a, b, c}. L = a b c . AFD que acepta a L:


a

> q0

q1

c
q2

c
AFN- que acepta a L:
a

> q0

q1

c
q2

Este aut
omata se asemeja a la expresi
on regular a b c : las concatenaciones
han sido reemplazadas por transiciones .

tienen un n
umero par de aes o un n
umero par de bes.

Ejemplo

= {a, b}. L = lenguaje de todas las cadenas sobre que

AFD que acepta el lenguaje de las cadenas con un n


umero par de aes:
b

> q0

b
q1

a
AFD que acepta el lenguaje de las cadenas con un n
umero par de bes:
a

> q0

a
q1

b
AFN- que acepta el lenguaje de las cadenas con un n
umero par de aes o
un n
umero par de bes:

46

CAPITULO 2. AUTOMATAS
FINITOS

q1

b
q2

a
> q0
b

q3
a

q4
b

A diferencia de los AFD y los AFN, en los AFN- pueden existir computos
infinitos, es decir computos que nunca terminan. Esto puede suceder si
el automata ingresa a un estado desde el cual haya varias transiciones
encadenadas que retornen al mismo estado, como por ejemplo:

Ejercicios de la secci
on 2.6

Dise
nar AFN- que acepten los siguientes lenguajes:
(ab b) ab , sobre = {a, b}.
a(a c) b+ , sobre = {a, b, c}.
ab ba b(ab ba) , sobre = {a, b}.
ab ba b(ab ba) , sobre = {a, b}.
(0 010) 0 (01 10) , sobre = {0, 1}.
0+ 1(010) (01 10) 1+ , sobre = {0, 1}.
= {a, b}. L = lenguaje de todas las cadenas sobre que tienen un
n
umero par de aes y un n
umero par de bes.

2.7. EQUIVALENCIA COMPUTACIONAL ENTRE LOS AFN- Y LOS AFN

2.7.

47

Equivalencia computacional entre los AFN-


y los AFN

En esta secci
on se mostrara que el modelo AFN- es computacionalmente
equivalente al modelo AFN. O dicho m
as gr
aficamente, las transiciones
se pueden eliminar, a
nadiendo transiciones que las simulen, sin alterar el
lenguaje aceptado.
En primer lugar, un AFN M = (, Q, q0 , F, ) puede ser considerado
como un AFN- en el que, simplemente, hay cero transiciones . Para la
afirmacion recproca tenemos el siguiente teorema.
2.7.1 Teorema. Dado un AFN- M = (, Q, q0 , F, ), se puede construir
un AFN M equivalente a M , es decir, tal que L(M ) = L(M ).
Bosquejo de la demostraci
on. Para construir M a partir de M se requiere
la noci
on de -clausura de un estado. Para un estado q Q, la clausura de q, notada [q], es el conjunto de estados de M a los que se
puede llegar desde q por 0, 1 o m
as transiciones . N
otese que, en general,
[q] = (q, ). Por definicion, q [q]. La -clausura de un conjunto de
estados {q1 , . . . , qk } se define por:
[{q1 , . . . , qk }] := [q1 ] [qk ].
Adem
as, [] := . Sea M = (, Q, q0 , F , ) donde
: Q
(q, a)

(Q)
(q, a) := ([q], a) .

M simula as las transiciones de M teniendo en cuenta todas las posibles


trayectorias. F se define como:
F = {q Q : [q] contiene al menos un estado de aceptaci
on}.
Es decir, los estados de aceptaci
on de M incluyen los estados de aceptaci
on
de M y aquellos estados desde los cuales se puede llegar a un estado de
aceptaci
on por medio de una o m
as transiciones .
Como se puede apreciar, la construcci
on de M a partir de M es puramente algortmica.

sentado en el segundo ejemplo de la secci


on 2.6.

Ejemplo

Vamos a ilustrar el anterior algoritmo con el AFN- M , pre-

48

CAPITULO 2. AUTOMATAS
FINITOS

> q0

q1

q2

L(M ) = a b c . Las -clausuras de los estados vienen dadas por:


[q0 ] = {q0 , q1 , q2 }.
[q1 ] = {q1 , q2 }.
[q2 ] = {q2 }.
La funcion de transicion : Q {a, b, c} ({q0 , q1 , q2 }) es:
(q0 , a)
(q0 , b)
(q0 , c)
(q1 , a)
(q1 , b)
(q1 , c)
(q2 , a)
(q2 , b)
(q2 , c)

=
=
=
=
=
=
=
=
=

[([q0 ], a)] = [({q0 , q1 , q2 }, a)] = [{q0 }] = {q0 , q1 , q2 }.


[([q0 ], b)] = [({q0 , q1 , q2 }, b)] = [{q1 }] = {q1 , q2 }.
[([q0 ], c)] = [({q0 , q1 , q2 }, c)] = [{q2 }] = {q2 }.
[([q1 ], a)] = [({q1 , q2 }, a)] = [] = .
[([q1 ], b)] = [({q1 , q2 }, b)] = [{q1 }] = {q1 , q2 }.
[([q1 ], c)] = [({q1 , q2 }, c)] = [{q2 }] = {q2 }.
[([q2 ], a)] = [({q2 }, a)] = [] = .
[([q2 ], b)] = [({q2 }, b)] = [] = .
[([q2 ], c)] = [({q2 }, c)] = [{q2 }] = {q2 }.

El automata M as obtenido es el siguiente:


a, b, c

> q0
a

q1
a, b

Ejercicios de la secci
on 2.7

q2
b, c

Construir AFN equivalentes a los siguientes AFN-:

> q0
a,

q1

b
q2

q3

49

2.8. TEOREMA DE KLEENE. PARTE I

> q0

q1

b
q2

q3
b

2.8.

Teorema de Kleene. Parte I

En las secciones anteriores se ha mostrado la equivalencia computacional


de los modelos AFD, AFN y AFN-, lo cual puede ser descrito en la forma:

AFD AFN AFN-


Esto quiere decir que para cada automata de uno de estos tres modelos se
pueden construir aut
omatas equivalentes en los otros modelos. Por lo tanto,
los modelos AFD, AFN y AFN- aceptan exactamente los mismos lenguajes. El Teorema de Kleene establece que tales lenguajes son precisamente
los lenguajes regulares.
2.8.1. Teorema de Kleene. Un lenguaje es regular si y s
olo si es aceptado
por un aut
omata finito (AFD o AFN o AFN-).
Para demostrar el teorema consideraremos las dos direcciones por separado.
Primero demostraremos que para un lenguaje regular L dado existe un
AFN- tal que L(M ) = L. En la secci
on 2.11 demostraremos que, a partir
de un AFD M , se puede encontrar una expresi
on regular R tal que L(M ) =
R. En ambas direcciones las demostraciones son constructivas.
Las construcciones de este captulo se pueden presentar as:
AFN
AFD
T. de Kleene II

AFN-
Lenguajes regulares

T. de Kleene I

50

CAPITULO 2. AUTOMATAS
FINITOS

Parte I. Dada una expresi


on regular R sobre un alfabeto , se puede
construir un AFN- M tal que el lenguaje aceptado por M sea exactamente
el lenguaje representado por R.

Expresion regular R

Procedimiento

AFN-

algortmico

tal que L(M ) = R.

Demostraci
on. Puesto que la definicion de las expresiones regulares se hace
recursivamente, la demostraci
on se lleva a cabo razonando por induccion sobre R. Para las expresiones regulares basicas, podemos construir facilmente
automatas que acepten los lenguajes representados. As, el automata
> q0

q1

acepta el lenguaje , es decir, el lenguaje representado por la expresi


on
regular R = .
El aut
omata
> q0
acepta el lenguaje {}, es decir, el lenguaje representado por la expresi
on
regular R = .
El aut
omata
a

> q0

q1

acepta el lenguaje {a}, a , es decir, el lenguaje representado por la


expresi
on regular R = a.
Paso inductivo: supongase que para las expresiones regulares R y S existen AFN- M1 y M2 tales que L(M1 ) = R y L(M2 ) = S. Esquematicamente
vamos a presentar los aut
omatas M1 y M2 en la siguiente forma:
M1
>

M2
..
.

>

..
.

51

2.8. TEOREMA DE KLEENE. PARTE I

Los estados finales o de aceptaci


on se dibujan a la derecha, pero cabe advertir que el estado inicial puede ser tambien un estado de aceptaci
on.
Obviando ese detalle, podemos ahora obtener AFN- que acepten los lenguajes R S, RS y R .
Aut
omata que acepta R S. Los automatas M1 y M2 se conectan
en paralelo y los estados finales del nuevo automata son los estados
finales de M1 junto con los de M2 :

M1
..
.

>
M2

..
.

Aut
omata que acepta RS. Los automatas M1 y M2 se conectan en
serie y los estados finales del nuevo automata son u
nicamente los
estados finales de M2 :

M1
>

..
.

..
.

M2
..
.

Aut
omata que acepta R . Los estados finales del nuevo automata son
los estados finales de M1 junto con el estado inicial.

52

CAPITULO 2. AUTOMATAS
FINITOS

M1
..
.

>

Esto concluye la demostraci


on de la parte I del Teorema de Kleene. En la siguiente secci
on se presentan ejemplos concretos del procedimiento utilizado
en la demostraci
on.

2.9.

Ejemplos de la parte I del Teorema de Kleene

De acuerdo con las construcciones presentadas en la demostraci


on de la
parte I del Teorema de Kleene, un AFN- que acepta el lenguaje a es:

>

Para simplificar las proximas construcciones utilizaremos, en su lugar, el


bucle de un estado:
a
>

un AFN- que acepte el lenguaje a (ab ba) a(b a ) sobre

Ejemplo

Vamos a utilizar el procedimiento del teorema para construir

el alfabeto {a, b}.


Aut
omata que acepta ab:

a
>

2.9. EJEMPLOS DE LA PARTE I DEL TEOREMA DE KLEENE

Aut
omata que acepta ba:

b
>

Aut
omata que acepta ab ba:

>

Aut
omata que acepta (ab ba) :

>

53

54

CAPITULO 2. AUTOMATAS
FINITOS

Aut
omata que acepta a (ab ba) :

>

Aut
omata que acepta b a :
b

>

a
Aut
omata que acepta a(b a ):
b

>

55

2.10. LEMA DE ARDEN

Aut
omata que acepta a (ab ba) a(b a ):

>

Ejercicios de la secci
on 2.9

Dise
nar aut
omatas AFN- que acepten los siguientes lenguajes sobre el
alfabeto = {a, b, c}:
a (b ab ab a)c (a b)(a ac) .
c a(a ba) (abc) c (a cb c).
(ac) a(a ab a) (abc) (cba) (c ab ba ca) (ca cb) .

2.10.

Lema de Arden

Vamos a utilizar el siguiente resultado, conocido como lema de Arden,


para demostrar la segunda parte del Teorema de Kleene.
2.10.1. Lema de Arden. Si A y B son lenguajes sobre un alfabeto y
A, entonces la ecuaci
on X = AX B tiene una u
nica soluci
on dada
por X = A B.

56

CAPITULO 2. AUTOMATAS
FINITOS

Demostraci
on. Si X es una solucion de X = AX B, entonces B
AX B = X. Tambien se tiene AX X; a partir de esta contenencia y
usando induccion sobre n, se puede demostrar que An X X para todo
n N. Por lo tanto
An B An X X
para todo n N. As que
An B =

A B =
n0

An B X.
n0

Esto muestra que toda solucion de X = AX B contiene a A B y es facil


verificar que, de hecho, A B es una solucion:
A(A B) B = A+ B B = (A+ )B = A B.
Para la unicidad, demostraremos que si A B C, con C A B = , es una
solucion de la ecuaci
on, entonces C = .
A B C = A(A B C) B
= A+ B AC B
= (A+ )B AC
= A B AC.
Intersectando con C ambos lados de la anterior igualdad, se tiene:
(A B C) C = (A B C) (AC C),
C = AC C.
Por lo tanto, C AC. Si se tuviera C = , existira una cadena u C de
longitud mnima. Entonces u = vw, con v A, w C. Como A, v = ;
por consiguiente |w| < |u|. Esta contradicci
on muestra que necesariamente
C = , tal como se quera.

X = (a2 b+ )X ab. Por el lema de Arden la ecuaci


on tiene

Ejemplo
Ejemplo

La ecuaci
on X = aX b ab tiene solucion u
nica X = a b ab.
La ecuaci
on X = a2 X b+ X ab se puede escribir en la forma

solucion u
nica X = (a2 b+ ) ab.

X = (ab2 a)X (a b b a). Por lema de Arden la ecuaci


on

Ejemplo

La ecuaci
on X = ab2 X aX a b b a se puede escribir como

tiene solucion u
nica X = (ab2 a) (a b b a).

2.11. TEOREMA DE KLEENE. PARTE II

Ejercicios de la secci
on 2.10

57

Encontrar las soluciones (


unicas) de las siguientes ecuaciones:
(i) X = aX bX.
(ii) X = aX b ab bX a .
! Demostrar de si A, entonces Y es una solucion de la ecuaci
on
X = AX B si y solo si Y = A (B D) para alg
un D .

2.11.

Teorema de Kleene. Parte II

En esta secci
on demostraremos que para todo AFN M = (, Q, q0 , F, )
existe una expresi
on regular R tal que L(M ) = R.
Un aut
omata tiene un u
nico estado inicial pero cambiando dicho estado surgen nuevos aut
omatas. Para cada qi Q, sea Mi el automata
que coincide con M pero con estado inicial qi ; m
as precisamente, Mi =
(, Q, qi , F, ). Al lenguaje aceptado por Mi lo denotaremos Ai ; es decir,
L(Mi ) = Ai . En particular, A0 = L(M ). Puesto que los estados de aceptaci
on no se han alterado, se tiene que
Ai = {w : (qi , w) F = }.
Cada Ai se puede escribir como

{aAj : qj (qi , a)},


(2.1)
Ai = a

{aAj : qj (qi , a)} .

si qi F,
si qi F.

Si Q = {q0 , q1 , . . . , qn }, las igualdades de la forma (2.1) dan lugar a un


sistema de n + 1 ecuaciones con n + 1 incognitas (los Ai ):

A0 = C01 A0 C02 A1 C0n An ()

A1 = C11 A0 C12 A1 C1n An ()


....

..

An = Cn1 A0 Cn2 A1 Cnn An ()

donde cada coeficiente Cij o es o es un smbolo de . El termino se


a
nade a una ecuaci
on solamente si el estado correspondiente es un estado
de aceptaci
on.

58

CAPITULO 2. AUTOMATAS
FINITOS

Utilizando sucesivas veces el lema de Arden, se puede mostrar que este


sistema de ecuaciones siempre se puede solucionar y su solucion es u
nica.
En efecto, comenzando con la u
ltima ecuaci
on, se escribe An en terminos
de los demas Ai , para lo cual se usa el lema de Arden si es necesario. Este
valor de An se reemplaza en las demas ecuaciones y el sistema se reduce a
n ecuaciones con n incognitas. Similarmente, An1 se escribe en terminos
de los demas Ai , usando el lema de Arden si es necesario, y tal valor se
reemplaza en las ecuaciones restantes. Prosiguiendo de esta manera, el sistema original se reduce a una sola ecuaci
on cuya incognita es precisamente
A0 . Esta ecuaci
on se soluciona recurriendo una vez m
as al lema de Arden.
Puesto que los coeficientes Cij diferentes de son smbolos de , se obtiene
una expresi
on regular R tal que L(M ) = A0 = R.

2.12.

Ejemplos de la parte II del Teorema de


Kleene

A continuaci
on ilustraremos el procedimiento de la secci
on 2.11 para encontrar L(M ) a partir de un AFN M = (, Q, q0 , F, ) dado.

Ejemplo

Considerese el siguiente AFN M :


a

> q0

q1

a
q2
b

Por simple inspecci


on sabemos que L(M ) = (a b) a2 (a b) , pero utilizaremos el metodo descrito para encontrar explcitamente L(M ).
El sistema de ecuaciones

(1)
(2)

(3)

asociado con el automata M es:


A0 = aA0 bA0 aA1
A1 = aA2
A2 = aA2 bA2 .

La ecuaci
on (3) se puede escribir como
(4)

A2 = (a b)A2 .

Aplicando el lema de Arden en (4):


(5)

A2 = (a b) = (a b) .

2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

59

Reemplazando (5) en (2):


(6)

A1 = a(a b) .

Reemplazando (6) en (1):


(7)

A0 = (a b)A0 a2 (a b) .

Aplicando el lema de Arden en (7) concluimos:


A0 = (a b) a2 (a b)

el siguiente AFN M :

Ejemplo

Encontrar una expresi


on regular para el lenguaje aceptado por

a
> q0

q1

b
q2

q3

q4
a

a
El sistema de ecuaciones asociado con el automata M es:

(1) A0 = aA1

(2) A1 = aA2
(3) A2 = bA2 bA3

(4) A3 = aA3 bA4

(5) A4 = aA2 aA3

Reemplazando (5) en (4):


(6)

A3 = aA3 baA2 baA3 b = (a ba)A3 baA2 b.

Aplicando el lema de Arden en (6):


(7)

A3 = (a ba) (baA2 b) = (a ba) baA2 (a ba) b.

Reemplazando (7) en (3):


(8)

A2 = bA2 b(a ba) baA2 b(a ba) b .

El sistema original de cinco ecuaciones y cinco incognitas se reduce al sistema de tres ecuaciones y tres incognitas formado por (1), (2) y (8).
La ecuaci
on (8) se puede escribir como

60
(9)

CAPITULO 2. AUTOMATAS
FINITOS

A2 = b b(a ba) ba A2 b(a ba) .

Aplicando el lema de Arden en (9):


(10)

A2 =

b b(a ba) ba

b(a ba) b .

Si se sustituye (10) en (2) y luego el valor de A1 obtenido se sustituye en


(1), se obtiene finalmente:
A0 = a2 b b(a ba) ba

b(a ba) b

las cadenas sobre = {a, b} que tienen un n


umero par de aes

Ejemplo

Encontrar una expresi


on regular para el lenguaje L de todas

y un n
umero par de bes. El siguiente automata acepta el lenguaje L:
a
> q0

q1
a

a
q2

q3
a

Este aut
omata da lugar al siguiente sistema de ecuaciones:

(1) A0 = aA1 bA2

(2) A = aA bA
1
0
3
(3) A2 = aA3 bA0

(4) A = aA bA
3
2
1

Reemplazando (4) en (3):


(5)

A2 = a2 A2 abA1 bA0 .

Reemplazando (4) en (2):


(6)

A1 = aA0 baA2 b2 A1 .

El sistema original de cuatro ecuaciones y cuatro incognitas se reduce a un


sistema de tres ecuaciones y tres incognitas, a saber:

(1) A0 = aA1 bA2


(6) A1 = aA0 baA2 b2 A1

(5) A2 = a2 A2 abA1 bA0

61

2.12. EJEMPLOS DE LA PARTE II DEL TEOREMA DE KLEENE

Aplicando el lema de Arden en (5):


(7)

A2 = (a2 ) (abA1 bA0 ) = (a2 ) abA1 (a2 ) bA0 .

Reemplazando (7) en (6):


(8)

A1 = aA0 ba(a2 ) abA1 ba(a2 ) bA0 b2 A1 .

Reemplazando (7) en (1):


(9)

A0 = aA1 b(a2 ) abA1 b(a2 ) bA0 .

El sistema se reduce ahora a dos ecuaciones:

(9) A0 = aA1 b(a2 ) abA1 b(a2 ) bA0


(8) A1 = aA0 ba(a2 ) abA1 ba(a2 ) bA0 b2 A1

= ba(a2 ) ab b2 A1 aA0 ba(a2 ) bA0 .

Aplicando el lema de Arden en (8):


(10)

A1 = ba(a2 ) ab b2

aA0 ba(a2 ) bA0

= ba(a2 ) ab b2 aA0 ba(a2 )ab b2 ba(a2 ) bA0 .

Haciendo R = ba(a2 ) ab b2 , (10) se puede escribir como


(11)

A1 = RaA0 Rba(a2 ) bA0 .

Aplicando el lema de Arden en (9):


(12)

A0 = b(a2 ) b

aA1 b(a2 ) abA1

= b(a2 ) b aA1 b(a2 ) b b(a2 ) abA1 b(a2 ) b .

Haciendo S = b(a2 ) b , (12) se puede escribir como:


(13)

A0 = SaA1 Sb(a2 ) abA1 S.

Al sustituir (11) en (13), el sistema original se reduce a una sola ecuaci


on:
(14) A0 = Sa RaA0 Rba(a2 ) bA0 Sb(a2 ) ab RaA0 Rba(a2 ) bA0 S.
Agrupando los terminos en los que aparece A0 y factorizando, se obtiene
(15) A0 = SaRaSaRba(a2 ) bSb(a2 )a bRaSb(a2 ) abRba(a2 ) b A0 S.
Aplicando lema de Arden en (15):

(16) A0 = SaRa SaRba(a2 ) b Sb(a2 ) abRa Sb(a2 ) abRba(a2 ) b S.


Si sustituimos R y S en (16) obtenemos una expresi
on regular para L.

62

CAPITULO 2. AUTOMATAS
FINITOS

Ejercicios de la secci
on 2.12

Utilizando el lema de Arden, encontrar expresiones regulares para los


siguientes lenguajes sobre = {a, b}:
(i) El lenguaje L de todas las cadenas que tienen un n
umero par
de aes y un n
umero impar de bes.
(ii) El lenguaje L de todas las cadenas que tienen un n
umero par
de aes o un n
umero impar de bes.
Utilizando el lema de Arden, encontrar expresiones regulares para los
lenguajes aceptados por los siguientes AFN:
(i)
b
b

a
> q0

q1

q2

q3

b
(ii)
b
> q0

b
q1

a
q2

a
q3

q4
b

Captulo

Otras propiedades de los lenguajes


regulares
En los dos captulos anteriores hemos presentado las propiedades basicas de
los lenguajes regulares pero no hemos visto como se puede demostrar que
un lenguaje no es regular. El llamado lema de bombeo, expuesto en este
captulo, sirve para tal prop
osito. Tambien veremos que la regularidad es
una propiedad que se preserva por las operaciones booleanas usuales, por
homomorfismos y por las imagenes inversas de homomorfismos. Finalmente, analizaremos ciertos problemas de decisi
on referentes a automatas y a
lenguajes regulares.

3.1.

Lema de bombeo

El llamado lema de bombeo (pumping lemma, en ingles) es una propiedad de los lenguajes regulares que es muy u
til para demostrar que ciertos
lenguajes no son regulares.
3.1.1. Lema de bombeo. Para todo lenguaje regular L (sobre un alfabeto
dado ) existe una constante n N, llamada constante de bombeo para L,
tal que toda cadena w L, con |w| n, satisface la siguiente propiedad:
(B)

w se puede descomponer como w = uvx, con |uv| n, v = ,


y para todo i 0 se tiene uv i x L.

Demostraci
on. Por el Teorema de Kleene y por los teoremas de equivalencia
de los modelos AFD, AFN y AFN-, existe un AFD M tal que L(M ) = L.
63

64

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Sea
n = # de estados de M.
Si w L y |w| n, entonces durante el procesamiento completo de w, hay
por lo menos un estado que se repite. Sea q el primer estado que se repite.
Tal como se muestra en la siguiente gr
afica, w se puede descomponer como
w = uvx, donde |uv| n, v = .
w

q0

N
otese que tanto u como x pueden ser la cadena vaca , pero v = .
Adem
as, la cadena v se puede bombear, en el sentido de que uv i x es
aceptada por M para todo i 0. En el diagrama de estados, se puede
visualizar esta propiedad de bombeo de v:
v
u

> q0

x
p

Uso del lema de bombeo. El lema de bombeo se puede usar para concluir
que un cierto lenguaje dado L no es regular, recurriendo a un razonamiento
por contradicci
on (o reducci
on al absurdo). El razonamiento utilizado tiene
la siguiente forma:
1. Si L fuera regular, existira una constante de bombeo n para L.
2. Se escoge una cadena adecuada w L y se aplica la propiedad (B)
del lema de bombeo, descomponiendo w como
w = uvx,

v = ,

|uv| n.

3. Se llega a la siguiente contradicci


on:
(I) Por el lema de bombeo, uv i x L, para todo i 0.

3.1. LEMA DE BOMBEO

65

(II) uv i x no puede estar en L, para alg


un i I. Por lo general, basta
escoger valores peque
nos de i como i = 0 o i = 2.

{ai bi : i 0} no es regular.

Ejemplo

Usar el lema de bombeo para demostrar que el lenguaje L =

Solucion. Si L fuera regular, existira una constante de bombeo n para L.


Sea w = an bn L. Entonces w se puede descomponer como w = uvx, con
|v| 1 y |uv| n. Por lo tanto, u y v constan u
nicamente de aes:
u = ar ,
v = as ,

para alg
un r 0,
para alg
un s 1.

Entonces,
x = an(r+s) bn = anrs bn .
Por el lema de bombeo, uv i x L para todo i 0. En particular, si i = 0,
ux L. Pero ux = ar anrs bn = ans bn . Como n s = n, la cadena
ux
/ L lo cual es una contradicci
on. Se concluye entonces que L no puede
ser regular.
Tomando i = 2 tambien se llega a una contradicci
on: por un lado, uv 2 x
L, pero
uv 2 x = ar as as anrs bn = ar+2s+nrs bn = an+s bn .
Como s 1, an+s bn no esta en L.
El argumento anterior tambien sirve para demostrar que el lenguaje
L = {ai bi : i 1} no es regular.

es un lenguaje regular. Recu


erdese que un palndromo es una

Ejemplo

Demostrar que el lenguaje de los palndromos sobre {a, b} no

cadena w tal que w = wR .


Solucion. Si L fuera regular, existira una constante de bombeo n para L.
Sea w = an ban L. Entonces w se puede descomponer como w = uvx, con
|v| 1, |uv| n, y para todo i 0, uv i x L. Por lo tanto, u y v constan
u
nicamente de aes:
u = ar ,
v = as ,

para alg
un r 0,
para alg
un s 1.

Entonces,
x = an(r+s) ban = anrs ban .

66

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Tomando i = 0, se concluye que ux L, pero


ux = ar anrs ban = ans ban .
Como s 1, ans ban no es un palndromo. Esta contradicci
on muestra que
L no puede ser regular.

Ejemplo

Demostrar que el lenguaje L = ai : i 0 no es regular. L


est
a formado por cadenas de aes cuya longitud es un cuadrado

perfecto.
Solucion. Si L fuera regular, existira una constante de bombeo n para L.
2
Sea w = an L. Entonces w se puede descomponer como w = uvx, con
|v| 1, |uv| n. Por el lema de bombeo, uv 2 x L, pero por otro lado,
n2 < n2 + |v| = |uvx| + |v| = |uv 2 x| n2 + |uv| n2 + n < (n + 1)2 .
Esto quiere decir que el n
umero de smbolos de la cadena uv 2 x no es un
cuadrado perfecto y, por consiguiente, uv 2 x L. En conclusi
on, L no es
regular.

Ejercicios de la secci
on 3.1

Usar el lema de bombeo para demostrar que los siguientes lenguajes


no son regulares:
(i) L = {w {a, b} : w tiene el mismo n
umero de aes que de bes}.
(ii) L = {ai bai : i 1}, sobre = {a, b}.
(iii) L = {ai bj ai : i, j 0}, sobre = {a, b}.
(iv) L = {0i 12i : i 0}, sobre = {0, 1}.
(v) L = {1i 01i 0 : i 1}, sobre = {0, 1}.
(vi) L = {ai bj ci+j : i, j 0}, sobre = {a, b, c}.
(vii) L = {ai bj : j > i 0}, sobre = {a, b}.
(viii) L = {ww : w }, siendo = {a, b}.
(ix) L = {wwR : w }, siendo = {a, b}.
(x) L = {ai : i es un n
umero primo}, sobre = {a}.
Es L = {(ab)i : i 0} un lenguaje regular?
Encontrar la falacia en el siguiente argumento: Seg
un la propiedad
(B) del enunciado del lema de bombeo, se tiene que uv i x L para todo i 0. Por consiguiente, L posee infinitas cadenas y, en conclusi
on,
todo lenguaje regular es infinito.

3.2. PROPIEDADES DE CLAUSURA

3.2.

67

Propiedades de clausura

Las propiedades de clausura afirman que a partir de lenguajes regulares se


pueden obtener otros lenguajes regulares por medio de ciertas operaciones
entre lenguajes. Es decir, la regularidad es preservada por ciertas operaciones entre lenguajes; en tales casos se dice que los lenguajes regulares son
cerrados bajo las operaciones.
El siguiente teorema establece que la colecci
on R ( ) de los lenguajes regulares sobre un alfabeto es cerrada bajo todas las operaciones
booleanas.
3.2.1 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto
, tambien lo son:
(1) L1 L2
(2) L1 L2
(3) L
(4) L+
(5) L = L
(6) L1 L2
(7) L1 L2
(8) L1 L2
Demostraci
on.

(uni
on)
(concatenacion)
(estrella de Kleene)
(clausura positiva)
(complemento)
(interseccion)
(diferencia)
(diferencia simetrica)

(1), (2) y (3) se siguen de la definicion de los lenguajes regulares.


(4) Por (2), (3) y L+ = L L.
(5) Por el Teorema de Kleene y por los teoremas de equivalencia de los
modelos AFD, AFN y AFN-, existe un AFD M = (, Q, q0 , F, ) tal
que L(M ) = L. Para construir un AFD que acepte el complemento
de L basta intercambiar los estados finales con los no finales. Si M
es el aut
omata (, Q, q0 , Q F, ), entonces L(M ) = L.
(6) Se sigue de (1) y (5) teniendo en cuenta que L1 L2 = L1 L2 .
(7) Se sigue de (5) y (6) teniendo en cuenta que L1 L2 = L1 L2 .
(8) Puesto que
L1 L2 = (L1 L2 ) (L1 L2 ) = (L1 L2 ) (L2 L1 )
el resultado se sigue de (1), (6), (7).

68

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Recuerdese que un
algebra booleana de conjuntos es una familia A

(X) cerrada bajo las operaciones de union, interseccion y complemento,


tal que A, X A.

3.2.2 Corolario. La colecci


on R ( ) de todos los lenguajes regulares
sobre un alfabeto es un
algebra booleana de conjuntos.
Demostraci
on. Se sigue del Teorema 3.2.1 y del hecho de que y son
lenguajes regulares sobre .

Hemos visto que un lenguaje finito es regular y que la uni


on finita de lenguajes regulares es regular. Pero una uni
on infinita de
lenguajes regulares no necesariamente es regular; considerese, por
ejemplo,
L = {an bn : n 1} =
{ai bi }.
i1

Cada conjunto {ai bi } es regular (porque posee s


olo una cadena)
pero L no lo es.

Un sublenguaje (subconjunto) de un lenguaje regular no es necesariamente regular, es decir, la familia de los lenguajes regulares
no es cerrada para subconjuntos. Dicho de otra forma, un lenguaje regular puede contener sublenguajes no-regulares. Por ejemplo,
L = {an bn : n 1} es un sublenguaje del lenguaje regular a b ,
pero L mismo no es regular.

Las propiedades de clausura permiten concluir, razonando por contradicci


on, que ciertos lenguajes no son regulares. Esto se ilustra en los siguientes
ejemplos en los que se usa el hecho de que los lenguajes L = {ai bi : i 0}
y L = {ai bi : i 1} no son regulares.

L = {ai bj : i, j 0, i = j} no es regular. Si lo fuera, a b L


tambi
en lo sera, pero a b L = {ai bi : i 0}.

= {a, b} no es regular. Si L fuera regular, tambi


en lo sera

Ejemplo
Ejemplo

El lenguaje L = {wbn : w , |w| = n, n 1} sobre

L a b pero L a b = {an bn : n 1}.

Ejercicios de la secci
on 3.2

Demostrar que a b es la uni


on de dos lenguajes disyuntos no-regulares.


3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS

69

Sea L un lenguaje no-regular y N un subconjunto finito de L. Demostrar que L N tampoco es regular.


Demostrar o refutar las siguientes afirmaciones:
(i) Un lenguaje no-regular debe ser infinito.
(ii) Si el lenguaje L1 L2 es regular, tambien lo son L1 y L2 .
(iii) Si los lenguajes L1 y L2 no son regulares, el lenguaje L1 L2
tampoco puede ser regular.
(iv) Si el lenguaje L es regular, tambien lo es L.
(v) Si L es regular y N es un subconjunto finito de L, entonces
L N es regular.
(vi) Un lenguaje regular L es infinito si y s
olo si en cualquier expresion regular de L aparece por lo menos una .
Utilizar las propiedades de clausura para concluir que los siguientes
lenguajes no son regulares:
(i) L = {1i 01j 0 : i, j 1, i = j}, sobre = {0, 1}. Ayuda: utilizar
el ejercicio 1(v) de la secci
on 3.1.
(ii) L = {uvuR : u, v {a, b}+ }, sobre = {a, b}. Ayuda: utilizar
el ejercicio 1(ii) de la secci
on 3.1.
(iii) L = {u : |u| es un cuadrado perfecto}, sobre = {a, b, c}. Ayuda: utilizar el u
ltimo ejemplo de la secci
on 3.1.

3.3.

Propiedades de clausura para aut


omatas

Las propiedades de clausura del Teorema 3.2.1 se pueden enunciar como


procedimientos algortmicos para la construcci
on de automatas finitos.
3.3.1 Teorema. Sean M , M1 y M2 aut
omatas finitos (ya sean AFD o AFN
o AFN-) y L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir
aut
omatas finitos que acepten los siguientes lenguajes:
(1)
(2)
(3)
(4)

L1 L2 .
L1 L2 .
L .
L+ .

(5)
(6)
(7)
(8)

L = L.
L1 L2 .
L1 L2 .
L1 L2 .

Demostraci
on. La construcci
on de automatas para L1 L2 , L1 L2 , L y L+
se presento en la demostraci
on de la parte I del Teorema de Kleene. En el

70

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

numeral (5) del Teorema 3.2.1 se vio como se puede construir un AFD M
que acepte L a partir de un AFD M que acepte L.
Los procedimientos de construcci
on de (1), (2), (3), (4) y (5) se pueden
combinar para obtener aut
omatas que acepten los lenguajes L1 L2 , L1 L2
y L1 L2 .
Para dise
nar un aut
omata que acepte L1 L2 , seg
un el argumento del
Teorema 3.3.1, hay que usar la igualdad L1 L2 = L1 L2 y los procedimientos para uni
on, complemento, eliminacion de transiciones y eliminaci
on del no-determinismo. El siguiente teorema muestra que existe una
construcci
on m
as sencilla para el caso L1 L2 .
3.3.2 Teorema. Sean M1 = (, Q1 , q1 , F1 , 1 ) y M2 = (, Q2 , q2 , F2 , 2 )
dos AFD. Entonces el AFD
M = (, Q1 Q2 , (q1 , q2 ), F1 F2 , )
donde

: (Q1 Q2 ) Q1 Q2
((qi , qj ), a) = (1 (qi , a), 2 (qj , a))

satisface L(M ) = L(M1 ) L(M2 ).


Demostraci
on. Sea w . La conclusi
on del teorema se sigue demostrando
primero por induccion sobre w que ((q1 , q2 ), w) = (1 (q1 , w), 2 (q2 , w)) para
toda cadena w (aqu se usan las funciones extendidas de , 1 y 2 ,
seg
un la definicion 2.5.2). Finalmente, se observa que:
w L(M )

((q1 , q2 ), w) F1 F2
(1 (q1 , w), 2 (q2 , w)) F1 F2
(q1 , w) F1 & (q2 , w) F2
w L(M1 ) & w L(M2 )
w L(M1 ) L(M2 ).

lenguaje L de todas las cadenas sobre = {a, b} que tienen

Ejemplo

Utilizar el Teorema 3.3.2 para construir un AFD que acepte el

un n
umero par de aes y un n
umero par de bes.
AFD M1 que acepta las cadenas con un n
umero par de aes:
b

> q1

b
q3


3.3. PROPIEDADES DE CLAUSURA PARA AUTOMATAS

71

AFD M2 que acepta las cadenas con un n


umero par de bes:
a

> q2

q4
b

Entonces L = L(M1 ) L(M2 ). El nuevo automata tiene 4 estados: (q1 , q2 ),


(q1 , q4 ), (q3 , q2 ) y (q3 , q4 ); el u
nico estado de aceptaci
on es (q1 , q2 ). Su funcion
de transicion es
((q1 , q2 ), a) = (1 (q1 , a), 2 (q2 , a)) = (q3 , q2 )
((q1 , q2 ), b) = (1 (q1 , b), 2 (q2 , b)) = (q1 , q4 )
((q1 , q4 ), a) = (1 (q1 , a), 2 (q4 , a)) = (q3 , q4 )
((q1 , q4 ), b) = (1 (q1 , b), 2 (q4 , b)) = (q1 , q2 )
((q3 , q2 ), a) = (1 (q3 , a), 2 (q2 , a)) = (q1 , q2 )
((q3 , q2 ), b) = (1 (q3 , b), 2 (q2 , b)) = (q3 , q4 )
((q3 , q4 ), a) = (1 (q3 , a), 2 (q4 , a)) = (q1 , q4 )
((q3 , q4 ), b) = (1 (q3 , b), 2 (q4 , b)) = (q3 , q2 )
El diagrama de estados del aut
omata as obtenido es:
b
> (q1 , q2 )

(q1 , q4 )
b

b
(q3 , q2 )

(q3 , q4 )
b

Ejercicios de la secci
on 3.3

Utilizar el Teorema 3.3.2 para construir AFD que acepten los siguientes los siguientes lenguajes sobre el alfabeto {a, b, c}:
(i) El lenguaje L de todas las cadenas que tienen longitud par y
terminan en a.

72

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

(ii) El lenguaje L de todas las cadenas de longitud par que tengan


un n
umero impar de bes.
(iii) El lenguaje L de todas las cadenas de longitud impar que tengan
un n
umero par de ces.
(iv) El lenguaje L de todas las cadenas de longitud impar que tengan
exactamente dos aes.
Utilizar el procedimiento del Teorema 3.3.1 para construir un automata que acepte el lenguaje L de todas las cadenas sobre = {a, b} que
tienen un n
umero par de aes y un n
umero par de bes. Comparese con
el AFD construido en el u
ltimo ejemplo de esta secci
on.

3.4.

Homomorfismos

Un homomorfismo es una sustituci


on h que reemplaza cada smbolo a de
un alfabeto de por una cadena h(a) , donde es otro alfabeto
(por supuesto, y pueden ser el mismo alfabeto). M
as precisamente, un
homomorfismo es una funcion h : tal que h() = y para toda
cadena u = a1 a2 an , con ai , se tiene
h(a1 a2 an ) = h(a1 )h(a2 ) h(an ).
Un homomorfismo h esta completamente determinado por sus imagenes en
los smbolos de , es decir, por los valores h(a), con a .

definido por h(a) = 0, h(b) = 1 y h(c) = 010. El homomorfismo

Ejemplo

Sean = {a, b, c}, = {0, 1} y h : el homomorfismo

h convierte cadenas de en cadenas de siguiendo las siguientes reglas:


cada a se reemplaza por 0, cada b por 1 y cada c se reemplaza por la cadena
010. As,
h(a2 b2 ) = h(aabb) = h(a)h(a)h(b)h(b) = 0011.
h(acb2 c) = h(a)h(c)h(b)2 h(b) = 001011010.
Tambien se deduce facilmente que h(a b c ) = 0 1 (010) .
El siguiente teorema afirma que los homomorfismos preservan lenguajes regulares; dicho de otra manera, la imagen homomorfa de un lenguaje
regular es un lenguaje regular.
3.4.1 Teorema. Sea h : un homomorfismo.

3.4. HOMOMORFISMOS

73

(1) Para cadenas u, v y lenguajes A, B se tiene


h(uv) = h(u)h(v),
h(A B) = h(A) h(B),
h(AB) = h(A)h(B),
h(A ) = [h(A)] .
(2) Si L es un lenguaje regular sobre , entonces h(L) es un lenguaje
regular sobre .
Demostraci
on.
(1) Se sigue directamente de la definicion de homomorfismo; los detalles se
dejan al estudiante.
(2) Por induccion sobre el n
umero de operandos (uniones, concatenaciones
y estrellas) en la expresi
on regular que representa a L. La base de la
induccion es inmediata ya que h() = , para cada a , h(a) es una
cadena determinada en y h() = .
La hip
otesis de induccion afirma que si L es regular tambien lo es
h(L). Para el paso inductivo se supone, en tres casos, que L = A B,
L = AB o L = A . Utilizando la hip
otesis de induccion y la parte (1)
del presente teorema se llega a la conclusi
on deseada.
La parte (2) del Teorema 3.4.1 es muy u
til para demostrar que ciertos
lenguajes no son regulares, razonando por contradicci
on. En los siguientes
ejemplos ilustramos la tecnica que se usa en estas situaciones.

mos concluir que L = {0i 1i : i 1} tampoco lo es. Razonamos

Ejemplo

Sabiendo que {ai bi : i 1} no es regular (secci


on 3.1), pode-

de la siguiente manera: si L fuera regular, lo sera tambien h(L) donde h


es el homomorfismo h(0) = a, h(1) = b. Pero h(L) = {h(0)i h(1)i : i 1} =
{ai bi : i 1}. Por consiguiente, L no es regular.

lo sera, donde h es el homomorfismo h(0) = 0, h(1) = 1,

Ejemplo

L = {0n 21n : n 1} no es regular; si lo fuera, h(L) tambien

h(2) = . Pero h(L) = {0n 1n : n 1} no es regular, como se dedujo en el


ejemplo anterior.

Ejercicios de la secci
on 3.4

Llenar los detalles de la demostraci


on de la parte (1) del Teorema 3.4.1.

74

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Utilizar homomorfismos y el hecho de que los lenguajes {ai bi : i 1}


y {0i 1i : i 1} no son regulares para concluir que los siguientes
lenguajes tampoco lo son:
(i) L = {ai baj : i, j 1, i = j}, sobre = {a, b}.
(ii) L = {ai bi ci : i 1}, sobre = {a, b, c}.
(iii) L = {ai bj ci : i, j 1}, sobre = {a, b, c}.
(iv) L = {0i 1j 2k : i, j, k 0, i + j = k}, sobre = {a, b, c}.

3.5.

Imagen inversa de un homomorfismo

Dado un homomorfismo h : y un lenguaje B , la imagen


inversa de A por h es
h1 (B) := {u : h(u) B}.
La regularidad es tambien preservada por imagenes inversas de homomorfismos, tal como lo afirma el siguiente teorema.
3.5.1 Teorema. Sea h : un homomorfismo y B un lenguaje
regular sobre . La imagen inversa h1 (B) es un lenguaje regular sobre .
Demostraci
on. Comenzando con un AFD M = (, Q, q0 , F, ) que acepte a
B podemos construir un AFD M = (, Q, q0 , F, ) que acepte h1 (B). La
funcion de transicion se define mediante (q, a) = (q, h(a)) (aqu se usa
la funcion extendida , seg
un la definicion 2.5.2). No es difcil demostrar por
induccion sobre w que (q0 , w) = (q0 , h(w)), para toda cadena w .
Como los estados de aceptaci
on de M y M coinciden, M acepta a w si y
s
olo si M acepta a h(w). Por lo tanto,
w L(M ) h(w) L(M ) = B w h1 (B)
Esto quiere decir que L(M ) = h1 (B).
Con la ayuda del Teorema 3.5.1 y de las demas propiedades de clausura
tambien podemos concluir que ciertos lenguajes no son regulares.

El lenguaje L = {0n 10n : n 1} no es regular ya que si lo

fuera, tambi
en lo sera h1 (L) donde h es el homomorfismo
h(0) = h(1) = 0, h(2) = 1. Pero
Ejemplo

h1 (L) = {0, 1}n 2{0, 1}n : n 1 .

75

3.6. ALGORITMOS DE DECISION

Entonces h1 (L) 0 21 sera regular; este u


ltimo lenguaje es igual a
{0n 21n : n 1}. Finalmente, por medio del homomorfismo g(0) = 0,
g(1) = 1, g(2) = se concluira que g {0n 21n : n 1} = {0n 1n : n 1}
es regular, lo cual sabemos que no es cierto.

Ejercicios de la secci
on 3.5

Por medio de un razonamiento similar al del ejemplo de esta secci


on, demostrar que los siguientes lenguajes sobre = {0, 1} no son regulares:
L = {ww : w }. Ayuda: intersectar primero L con 0 10 1.
L = {wwR : w }. Ayuda: intersectar primero L con 0 110 .

3.6.

Algoritmos de decisi
on

La noci
on de algoritmo que consideraremos en esta secci
on es la corriente:
Un algoritmo es un procedimiento sistematico, claro y preciso,
que termina en un n
umero finito de pasos para cualquier entrada
dada.
Dada una propiedad P, referente a automatas sobre un alfabeto , un
problema de decisi
on para P consiste en buscar un algoritmo, aplicable
a un aut
omata arbitrario M , que responda SI o NO a la pregunta: satisface
M la propiedad P? El siguiente diagrama ilustra la situacion.

SI M satisface P

Aut
omata M

Algoritmo
de decision

NO

M no satisface P

Si existe un algoritmo de decisi


on, se dice que el problema P es decidible o
resoluble; en caso contrario, el problema P es indecidible o irresoluble.

76

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Es importante tener presente que, para que un problema P sea decidible,


no basta responder SI o NO a la pregunta satisface M la propiedad P?
para uno o varios aut
omatas aislados M ; es necesario exhibir un algoritmo
aplicable a todos los aut
omatas. Es posible que en algunos casos concretos
se pueda decidir afirmativa o negativamente sobre la satisfabilidad de una
propiedad P y, sin embargo, el problema P sea indecidible.
El primer problema de decisi
on que consideraremos es el problema de
decidir si un aut
omata M acepta o no alguna cadena; es decir, decidir si
L(M ) =
o L(M ) = . Este problema, llamado problema de la vacuidad,
difiere del siguiente problema
P:

Dado un aut
omata (AFD o AFN o AFN-) M y
una cadena w , acepta M la cadena w?

En el problema P anterior las entradas son automatas M y cadenas w ;


para resolverlo es suficiente el siguiente algoritmo: convertir M en un AFD
M (utilizando los algoritmos ya conocidos para tal efecto) y luego procesar
w con M . Solo habr
a dos salidas: M acepta a w o M no acepta a w.
El problema de la vacuidad no se puede resolver usando esta misma idea
porque no podemos examinar todas las entradas w (hay infinitas
cadenas w). Se requiere entonces una idea diferente, como la presentada en
el siguiente teorema.
3.6.1 Teorema. Sea un alfabeto dado. Existe un algoritmo para el siguiente problema de decisi
on referente a aut
omatas sobre :
Dado un aut
omata (AFD o AFN o AFN-) M , Es L(M ) = ?
(es decir, acepta M alguna cadena?).
Demostraci
on. Podemos dise
nar un algoritmo sencillo para encontrar los
estados que son accesibles (o alcanzables) desde el estado inicial de M , es
decir, los estados para los cuales existen trayectorias desde el estado inicial.
Si alg
un estado de aceptaci
on es alcanzable, se tendr
a L(M ) = ; en caso
contrario L(M ) = . En el recuadro de la parte superior de la pagina
siguiente aparece el algoritmo para encontrar el conjunto ALC de estados
alcanzables.
Claramente, el aut
omata M acepta alguna cadena (o sea, L(M ) = ) si
y solo si ALC contiene alg
un estado de aceptaci
on.
3.6.2 Corolario. Sea un alfabeto dado. Existen algoritmos para los siguientes problemas de decisi
on referentes a aut
omatas sobre :


3.6. ALGORITMOS DE DECISION

77

INICIALIZAR:
ALC := {q0 }, donde q0 es el estado inicial de M .
REPETIR:
Para cada q ALC buscar los arcos que salen de q y
a
nadir a ALC los estados p para los cuales haya un
arco de q a p con cualquier etiqueta (puede ser ).
HASTA:
No se a
naden nuevos estados a ALC.

(1) Dados dos aut


omatas M1 y M2 (AFD o AFN o AFN-), L(M1 )
L(M2 )?
(2) Dados dos aut
omatas M1 y M2 (AFD o AFN o AFN-), L(M1 ) =
L(M2 )?
Demostraci
on.
(1) Sea L1 = L(M1 ) y L2 = L(M2 ). Se tiene
L1 L2 L1 L2 = .
Algoritmo: construir un AFD M que acepte el lenguaje L1 L2 (esto
se puede hacer en razon de la parte (7) del Teorema 3.3.1). Utilizar
luego el procedimiento del Teorema 3.6.1 para decidir si L1 L2 es o
no vaco.
(2) L(M1 ) = L(M2 ) L(M1 ) L(M2 ) y L(M2 ) L(M1 ). Por lo
tanto, basta aplicar dos veces el algoritmo de la parte (1). Tambien
se puede encontrar un algoritmo de decisi
on teniendo en cuenta que
L1 = L2 L1 L2 = junto con la parte (8) del Teorema 3.3.1.
El argumento utilizado en la demostraci
on del lema de bombeo sirve para
establecer un criterio que permite decidir si el lenguaje aceptado por un
automata es o no infinito. El criterio aparece en el siguiente teorema.
3.6.3 Teorema. Sea M un AFD con n estados y sea L = L(M ). L es
infinito si y solo si M acepta una cadena w tal que n |w| < 2n.
on del
Demostraci
on. Si w M y n |w| < 2n, entonces por la demostraci
lema de bombeo, w se puede descomponer como w = uvx, donde |uv| n,
v = . M acepta infinitas cadenas: uv i x para todo i 0.

78

CAPITULO 3. OTRAS PROPIEDADES DE LOS LENGUAJES REGULARES

Recprocamente, si L es infinito, existe w L con |w| n. Por la


demostraci
on del lema de bombeo, w = uvx donde |uv| n, v = . Si
|w| < 2n la demostraci
on termina. Si |w| 2n, puesto que |v| |uv| n,
se tendr
a |ux| n y ux L. De nuevo, si |ux| < 2n, la demostraci
on
termina; en caso contrario, se prosigue de esta forma hasta encontrar una
cadena en L cuya longitud satisfaga n < 2n.
3.6.4 Corolario. Sea un alfabeto dado. Existe un algoritmo para el
siguiente problema de decisi
on referente a aut
omatas sobre :
Dado un aut
omata M (AFD o AFN o AFN-), Es L(M ) infinito?
Demostraci
on. Algoritmo: construir un AFD M que acepte el lenguaje
L(M ) y chequear la aceptaci
on o rechazo de todas las cadenas w tales
que n |w| < 2n, donde n = # de estados de M .
Hemos trabajado con problemas de decisi
on referentes a automatas, pero
tambien podemos considerar problemas sobre lenguajes regulares. Dada
una propiedad P, referente a lenguajes regulares sobre un alfabeto , un
problema de decisi
on para P consiste en buscar un algoritmo, aplicable a
todo lenguaje regular L (es decir, a toda expresi
on regular R), que responda
SI o NO a la pregunta: satisface L la propiedad P? Puesto que conocemos
algoritmos de conversi
on entre la representaci
on por expresiones regulares y
la representaci
on por aut
omatas, los problemas decidibles sobre automatas
corresponden a problemas decidibles sobre lenguajes regulares y viceversa.
As por ejemplo, en razon del Corolario 3.6.4, el siguiente problema es
decidible: Dada una expresi
on regular R, es L(R) infinito?

Ejercicios de la secci
on 3.6

Sea un alfabeto dado. Encontrar algoritmos para los siguientes


problemas de decisi
on referentes a automatas sobre :
(i) Dado un aut
omata M (AFD o AFN o AFN-), es L(M ) = ?
(ii) Dado un aut
omata M (AFD o AFN o AFN-), acepta M todas
las cadenas de longitud impar?
(iii) Dado un aut
omata M (AFD o AFN o AFN-) y una cadena
w , acepta M la cadena wwR ?
(iv) Dados dos aut
omatas M1 y M2 (AFD o AFN o AFN-), existe
alguna cadena que no sea aceptada por ninguno de los automatas M1 y M2 ?


3.6. ALGORITMOS DE DECISION

79

(v) Dado un aut


omata M (AFD o AFN o AFN-), es L(M ) cofinito? (Un conjunto es cofinito si su complemento es finito).
(vi) Dado un aut
omata M (AFD o AFN o AFN-), acepta M alguna cadena de longitud 1250? Ayuda: hay un n
umero finito de
cadenas con longitud 1250.
(vii) Dado un aut
omata M (AFD o AFN o AFN-), acepta M alguna cadena de longitud mayor que 1250? Ayuda: habra un
n
umero infinito de cadenas por examinar; usar el Teorema 3.6.3.
(viii) Dado un aut
omata M (AFD o AFN o AFN-), acepta M por
lo menos 1250 cadenas? Ayuda: usar la misma idea del problema (vii).
! Encontrar algoritmos de decisi
on, que no utilicen automatas, para
resolver los siguientes problemas:
(i) Dada una expresi
on regular R, es L(R) = ? Ayuda: puesto
que las expresiones regulares se definen recursivamente, el algoritmo requiere descomponer la expresi
on R y utilizar criterios de
vacuidad para la estrella de Kleene, la uni
on y la concatenaci
on
de lenguajes.
(ii) Dada una expresi
on regular R, contiene L(R) por lo menos 150
cadenas?

Al considerar problemas de decisi


on lo importante es la existencia
o no de algoritmos de decisi
on, no tanto la eficiencia de los mismos.

En el Captulo 7 se mostrara que existen problemas indecidibles,


es decir, problemas para los cuales no hay algoritmos de decisi
on.

Captulo

Lenguajes y gramaticas
independientes del contexto
Como se ha visto, los aut
omatas son dispositivos que procesan cadenas
de entrada. En captulos posteriores consideraremos modelos de automatas
con mayor poder computacional que el de los modelos AFD, AFN y AFN-.
En el presente captulo estudiaremos una noci
on completamente diferente,
aunque relacionada, la de gramatica generativa, que es un mecanismo para
generar cadenas a partir de un smbolo inicial.
Los aut
omatas procesan cadenas
Las gramaticas generan cadenas

4.1.

Gram
aticas generativas

Las gramaticas generativas fueron introducidas por Noam Chomsky en 1956


como un modelo para la descripci
on de los lenguajes naturales (espa
nol,
ingles, etc). Chomsky clasific
o las gramaticas en cuatro tipos: 0, 1, 2 y 3.
Las gramaticas de tipo 2, tambien llamadas gramaticas independientes del
contexto, se comenzaron a usar en la decada de los sesenta para presentar
la sintaxis de lenguajes de programaci
on y para el dise
no de analizadores
sintacticos en compiladores. En este curso u
nicamente tendremos oportunidad de estudiar gramaticas de tipos 2 y 3. El estudiante puede pasar
directamente a la secci
on 4.2; el resto de la presente secci
on es material
(opcional) de referencia.
Una gram
atica generativa es una cu
adrupla, G = (V, , S, P ) formada
81

82

LENGUAJES LIC Y GRAMATICAS


GIC

por dos alfabetos disyuntos V (alfabeto de variables o no-terminales) y


(alfabeto de terminales), una variable especial S V (llamada smbolo
inicial ) y un conjunto finito P (V ) (V ) de producciones o
reglas de re-escritura. Una producci
on (v, w) P se denota por v w y se
lee v produce w; v se denomina la cabeza y w el cuerpo de la producci
on.
Se exige que la cabeza de la producci
on tenga por lo menos una variable.
El significado de la producci
on v w es: la cadena v se puede reemplazar (sobre-escribir) por la cadena w. Comenzando con el smbolo inicial
S y aplicando las producciones de la gramatica, en uno o m
as pasos, se
obtienen cadenas de terminales y/o no-terminales. Aquellas cadenas que
s
olo tengan terminales conforman lo que se denomina el lenguaje generado
por G.
Las gramaticas se clasifican de acuerdo con el tipo de sus producciones:
Gram
aticas de tipo 0. No tienen restricciones. Tambien se llaman gram
aticas no-restringidas o gram
aticas con estructura de frase en razon de
su origen ling
ustico.
Gram
aticas de tipo 1. Las producciones son de la forma u1 Au2 v1 wv2 ,
donde A es una variable y w = . Tambien se llaman gram
aticas
sensibles al contexto o gram
aticas contextuales.
Gram
aticas de tipo 2. Las producciones son de la forma A w donde
A es una variable. Tambien se llaman gram
aticas independientes del
contexto o gram
aticas no-contextuales.
Gram
aticas de tipo 3. Las producciones son de la forma A a o de la
forma A aB, donde A y B son variables y a es un smbolo terminal.
Tambien se llaman gram
aticas regulares.
Se dice que un lenguaje es de tipo i si es generado por una gramatica
de tipo i. Esta clasificacion de lenguajes se conoce como la jerarqua de
Chomsky.

4.2.

Gram
aticas independientes del contexto

Una gram
atica independiente del contexto (GIC), tambien llamada
gram
atica no-contextual o gram
atica de tipo 2, es una cu
adrupla,
G = (V, , S, P ) formada por:
1. Un alfabeto V cuyos elementos se llaman variables o smbolos noterminales.


4.2. GRAMATICAS
INDEPENDIENTES DEL CONTEXTO

83

2. Un alfabeto cuyos elementos se llaman smbolos terminales. Se


exige que los alfabetos y V sean disyuntos.
3. Una variable especial S V , llamada smbolo inicial de la gramatica.
4. Un conjunto finito P V (V ) de producciones o reglas
de re-escritura. Una producci
on (A, w) P de G se denota por
A w y se lee A produce w; su significado es: la variable A se
puede reemplazar (sobre-escribir) por la cadena w. En la producci
on
A w, A se denomina la cabeza y w el cuerpo de la producci
on.
Notaci
on y definiciones. Las variables se denotan con letras may
usculas
A, B, C, . . . Los elementos de o smbolos terminales se denotan con letras
min
usculas a, b, c, . . .. Si u, v (V ) y A w es una producci
on, se
dice que uwv se deriva directamente de uAv, lo cual se denota por
uAv = uwv.
Si se quiere hacer referencia a la gramatica G, se escribe
G

uAv = uwv

o uAv =G uwv.

Si u1 , u2 , . . . , un son cadenas en (V ) y hay una sucesion de derivaciones


directas
G
G
G
u1 = u2 , u2 = u3 , . . . , un1 = un

se dice que un se deriva de u1 y se escribe u1 = un . La anterior sucesion


de derivaciones directas se representa como
u1 = u2 = u3 = = un1 = un
y se dice que es una derivaci
on o una generaci
on de un a partir de

u1 . Para toda cadena w se asume que w = w; por lo tanto, u = v


significa que v se obtiene de u utilizando cero, una o m
as producciones
+
de la gramatica. An
alogamente, u = v significa que v se obtiene de u
utilizando una o m
as producciones.
El lenguaje generado por una gram
atica G se denota por L(G) y
se define como
+
L(G) := {w : S = w}.
Un lenguaje L sobre un alfabeto se dice que es un lenguaje independiente del contexto (LIC) si existe una GIC G tal que L(G) = L. Dos
GIC G1 y G2 son equivalentes si L(G1 ) = L(G2 ).

84

LENGUAJES LIC Y GRAMATICAS


GIC

La denominacion independiente del contexto proviene del hecho de


cada producci
on o regla de re-escritura A w se aplica a la variable A
independientemente de los caracteres que la rodean, es decir, independientemente del contexto en el que aparece A.

Ejemplo

Sea G una gramatica (V, , S, P ) dada por:


V = {S}
= {a}
P = {S aS, S }

Se tiene S = y

S = aS = a aS = a a.
Por consiguiente, L(G) = a .
De manera m
as simple, podemos presentar una gramatica GIC listando
sus producciones y separando con el smbolo | las producciones de una
misma variable. Se supone siempre que las letras may
usculas representan
variables y las letras min
usculas representan smbolos terminales. As la
gramatica del ejemplo anterior se presenta simplemente como:
S aS | .

Ejemplo

La gramatica G = (V, , S, P ) dada por:

V = {S, A}
= {a, b}
P = {S aS, S bA, S , A bA, A b, A }
se puede presentar como
S aS | bA |
A bA | b |
Se tiene S = . Todas las demas derivaciones en G comienzan ya sea con
la producci
on S aS o con S bA. Por lo tanto, tenemos

S = aS = a aS = a a.

S = bA = b bA = b b.

S = aS = a aS = a abA = a ab bA = a ab b.
Por consiguiente L(G) = a b .


4.2. GRAMATICAS
INDEPENDIENTES DEL CONTEXTO

85

Las siguientes gramaticas tambien generan el lenguaje a b y son, por


lo tanto, equivalentes a G:

AB

S AB |
S aS | A
A aA |
A aA | a |

A bA |

B bB |
B bB | b |

Ejemplo

La gramatica
S aS | aA
A bA | b

genera el lenguaje a+ b+ . Otra gramatica equivalente es:

S AB
A aA | a

B bB | b

Ejemplo

La gramatica

S 1A | 0
A 0A | 1A |
genera el lenguaje de los n
umeros naturales en numeraci
on binaria. N
otese
que la u
nica cadena que comienza con 0, generable con esta gramatica, es
la cadena 0.


Ejemplo Encontrar una GIC que genere el lenguaje 0 10 10 sobre

= {0, 1}, es decir, el lenguaje de todas las cadenas con exactamente dos unos.
Solucion.
G:

S A1A1A
A 0A |

Una gramatica equivalente es

S 0S | 1A
A 0A | 1B

B 0B |

86

LENGUAJES LIC Y GRAMATICAS


GIC

Ejemplo

Encontrar una GIC que genere el lenguaje L = {ai bi : i 0}


sobre = {a, b}, el cual no es un lenguaje regular.

Solucion.
S aSb | .

palndromos sobre = {a, b}, el cual no es lenguaje regular.

Ejemplo

Encontrar una GIC que genere el lenguaje de todos los

Solucion.
S aSa | bSb | a | b | .

sobre = {a, b} que tienen un n


umero par de smbolos.

Ejemplo

Encontrar una GIC que genere el lenguaje de todas las cadenas

Solucion.
S aSa | bSb | aSb | bSa |
Dos gramaticas equivalentes son:
S AAS |
Aa|b

S aaS | bbS | abS | baS |

= {a, b}.

Ejemplo

Encontrar una GIC que genere el lenguaje (ab ba) sobre

Solucion.
S abS | baS | .

Ejemplo

Demostrar que la gramatica G dada por:


S (S)S |

genera el lenguaje de todas las cadenas de parentesis anidados y equilibrados; es decir, cadenas como (()), ()()(), (())((())).
Solucion. Es facil ver que G genera cadenas de parentesis anidados y equilibrados ya que cada aplicacion de la producci
on S (S)S da lugar a un
par de parentesis equilibrados.
Para establecer la direccion recproca demostraremos por induccion sobre n la siguiente afirmacion: Toda cadena con 2n parentesis anidados y
equilibrados se puede generar en G.
2

n = 1:

() se genera con S = (S)S = ().

n = 2:

()() se genera con S = (S)S = (S)(S)S = ()().

(()) se genera con S = (S)S = ((S)S)S = (()).


4.2. GRAMATICAS
INDEPENDIENTES DEL CONTEXTO

87

Paso inductivo: una cadena con 2n parentesis anidados y equilibrados es


de la forma (u)
o (u)v donde u y v tienen estrictamente menos de 2n
+
parentesis anidados y equilibrados. Por hip
otesis de induccion S = u y
+
S = v. Por lo tanto,
+

S = (S)S = (u)S = (u).


+

S = (S)S = (u)S = (u)v.

Ejercicios de la secci
on 4.2

Encontrar GIC que generen los siguientes lenguajes sobre = {a, b}:
(i) El lenguaje de las cadenas que tienen un n
umero par de bes.
(ii) El lenguaje de las cadenas que comienzan con b y terminan con
ba.
(iii) a b a.
(iv) a b b a.
(v) (ab b a) .
(vi) {ai b2i : i 0}.
(vii) {abi abi : i 1}.
Encontrar GIC que generen los siguientes lenguajes sobre = {a, b, c, d}:
(i) {ai bj cj di : i, j 1}.
(ii) {ai bi cj dj : i, j 1}.
(iii) {ai bj cj di : i, j 1} {ai bi cj dj : i, j 1}.
(iv) {ai bj ci+j : i 0, j 1}.
Demostrar que la gramatica S SS | (S) | tambien genera el
lenguaje de todas las cadenas de parentesis anidados y equilibrados.
Encontrar una gramatica que genere el lenguaje de todas las cadenas
de parentesis circulares y/o angulares, anidados y equilibrados. Es decir cadenas como ([()]), ([])[()], [()([[()()]])], etc. Cadenas
como ([)]
o [([)]] tienen parentesis equilibrados pero no anidados
y, por lo tanto, no pertenecen a este lenguaje.
! Sea = {0, 1}. Encontrar una GIC que genere el lenguaje de las
cadenas que tienen igual n
umero de ceros que de unos.

88

4.3.

LENGUAJES LIC Y GRAMATICAS


GIC

Arbol
de una derivaci
on

Un
arbol con raz es un tipo muy particular de grafo no-dirigido; esta formado por un conjunto de vertices o nodos conectados entre s por arcos o
aristas, con la siguiente propiedad: existe un nodo especial, llamado la raz
del arbol, tal que hay una u
nica trayectoria entre cualquier nodo y la raz.
De esta manera, la raz se ramifica en nodos, llamados descendientes
inmediatos, cada uno de los cuales puede tener, a su vez, descendientes
inmediatos, y as sucesivamente.
La propiedad que caracteriza a un arbol garantiza que un nodo puede
tener 0, 1, o m
as descendientes inmediatos pero un u
nico antecesor inmediato. El u
nico nodo que no tiene antecesores es la raz. Los nodos que tienen
descendientes, excepto la raz, se denominan nodos interiores. Los nodos
que no tienen descendientes se llaman hojas del arbol. En la terminologa
usualmente utilizada, los descendientes de un nodo tambien se denominan
hijos y los antecesores padres o ancestros. El n
umero de vertices (y por
lo tanto, el n
umero de arcos) de un arbol puede ser infinito.

Ejemplo

Algunos
arboles con raz:

89

4.3. ARBOL
DE UNA DERIVACION

El
arbol de una derivaci
on S = w, w , en una GIC es un arbol
con raz que se forma de la siguiente manera:
1. La raz esta etiquetada con el smbolo inicial S.
2. Cada nodo interior esta etiquetado con un no terminal.
3. Cada hoja esta etiquetada con terminal o con .
4. Si en la derivaci
on se utiliza la producci
on A s1 s2 sk , donde

si (V ) , el nodo A tiene k descendientes inmediatos: s1 , s2 ,. . . ,


sk , escritos de izquierda a derecha.

De esta forma, las hojas del


arbol de derivaci
on de S = w son precisamente los smbolos de la cadena w, ledos de izquierda a derecha y, posiblemente,
algunos .
La b
usqueda de un
arbol de derivaci
on para una cadena w se
denomina an
alisis sint
actico de w. Los arboles de derivaci
on tambien se
suelen llamar
arboles sintacticos o arboles de an
alisis sintactico.

Ejemplo Sea G la gramatica:

El arbol de la derivaci
on

S AB | AaB
A aA | a

B bBa | b

S = AB = AbBa = abBa = abba


es
S

A
a

b
El anterior es tambien el
arbol de la derivaci
on
S = AB = aB = abBa = abba.

90

LENGUAJES LIC Y GRAMATICAS


GIC

Esto muestra que dos derivaciones diferentes pueden tener el mismo arbol
de derivaci
on ya que en el
arbol aparecen las producciones utilizadas pero
no el orden en que han sido aplicadas.

Ejemplo

Sea G la gramatica:

S BAa

A bBC | a
B bB | b |

C aB | aa

El arbol de la derivaci
on

S = BAa = bAa = bbBCa = bbbCa = bbbaBa = bbbaa


es
S

B
b

a
C

B
b

Ejercicios de la secci
on 4.3

Sea G siguiente gramatica:

G:

S aS | AaB
A aA | a

B bBbB | b

Encontrar una derivaci


on de la cadena aaaabbbb y hallar el arbol de
tal derivaci
on.


4.4. GRAMATICAS
AMBIGUAS

91

Sea G la siguiente gramatica:

S ABC | BaC | aB

A Aa | a
G:

B BAB | bab

C cC |

Encontrar derivaciones de las cadenas w1 = abab, w2 = babacc, w3 =


ababababc y hallar los
arboles de tales derivaciones.

4.4.

Gram
aticas ambiguas

La noci
on de ambig
uedad se puede presentar en terminos de arboles sintacticos o en terminos de ciertas derivaciones estandares: las llamadas derivaciones a izquierda.
4.4.1 Definici
on. Una derivaci
on se llama derivaci
on a izquierda (o
derivaci
on m
as a la izquierda) si en cada paso se aplica una producci
on a
la variable que esta m
as a la izquierda.
Una derivaci
on cualquiera se puede transformar siempre en una u
nica
derivaci
on a izquierda aplicando, en cada paso, producciones a la variable
que este m
as a la izquierda.
4.4.2 Definici
on. Una GIC G es ambigua si existe una cadena w
para la cual hay dos derivaciones a izquierda diferentes. Equivalentemente,
una GIC G es ambigua si existe una cadena w con dos arboles de
derivaci
on diferentes.

gram
atica Gsp para generar n
umeros naturales, sumas y pro-

Ejemplo

Considerese el alfabeto =

0, 1, +, , (, ) . La siguiente

ductos, en numeraci
on binaria, es ambigua:
S S + S | S S | (S) | 0S | 1S | 0 | 1
La cadena 1 + 1 0 tiene dos derivaciones a izquierda diferentes:
S = S + S = 1 + S = 1 + S S = 1 + 1 S = 1 + 1 0.
S = S S = S + S S = 1 + S S = 1 + 1 S = 1 + 1 0.
Los arboles de derivaci
on correspondientes a las anteriores derivaciones son:

92

LENGUAJES LIC Y GRAMATICAS


GIC

+
S

En la gramatica Gsp la ambig


uedad se puede eliminar introduciendo parentesis:
S (S + S) | (S S) | (S) | 0S | 1S | 0 | 1
Aunque la introducci
on de parentesis elimina la ambig
uedad, las expresiones generadas tienen un excesivo n
umero de parentesis lo que dificulta el
an
alisis sintactico (en un compilador, por ejemplo). Lo m
as corriente en
estos casos es utilizar gramaticas ambiguas como Gsp siempre y cuando se
establezca un orden de precedencia para los operadores. Lo usual es establecer que tenga una mayor orden de precedencia que +, es decir, por
convencion act
ua antes que +. Por ejemplo, la expresi
on 1 1 + 0 se interpreta como (1 1) + 0 y la expresi
on 10 + 11 110 + 1 se interpreta como
10 + (11 110) + 1.

Ejemplo

La siguiente gramatica es ambigua:

G:

S aSA |
A bA |

G es ambigua porque para la cadena aab hay dos derivaciones a izquierda


diferentes.
S = aSA = aaSAA = aaAA = aaA = aabA = aab.
S = aSA = aaSAA = aaAA = aabAA = aabA = aab.
Los arboles de derivaci
on para estas dos derivaciones son:

93

4.4. GRAMATICAS
AMBIGUAS

A
S

a
a

A
a

A
b

El lenguaje generado por esta gramatica es


. Se puede construir
una gramatica no-ambigua que genere el mismo lenguaje:

S AB |

G :
A aA | a

B bB |
a + b

Para ver que la gramatica G no es ambigua se puede razonar de la siguiente


manera: la cadena se puede generar de manera u
nica con la derivaci
on
S = . Una derivaci
on de una cadena no vaca debe comenzar aplicando la
producci
on S AB; la variable A genera cadenas de aes de manera u
nica
y B genera cadenas de bes tambien de manera u
nica. Por consiguiente, toda
cadena tiene una u
nica derivaci
on a izquierda.

Existen lenguajes independientes del contexto para los cuales toda


gramatica es ambigua. Tales lenguajes se llaman inherentemente
ambiguos. Un ejemplo es el lenguaje
L = {ai bi cj dj : i, j 1} {ai bj cj di : i, j 1}.
sobre el alfabeto {a, b, c, d}. En el Ejercicio (iii) de la secci
on 4.2
se pidio mostrar que L es un LIC. La demostraci
on de que L es inherentemente ambiguo es bastante intrincada y puede encontrarse
en la referencia [HU1].

No existe ning
un algoritmo que permita determinar si una GIC
dada es o no ambigua. Con la terminologa de la secci
on 3.6, esto
quiere decir que el problema de la ambig
uedad para GIC es in
decidible. Este
no es un resultado trivial; para su demostraci
on
remitimos al estudiante a la referencia [HMU].

94

LENGUAJES LIC Y GRAMATICAS


GIC

Ejercicios de la secci
on 4.4

Mostrar que las siguientes gramaticas son ambiguas:


(i) S aSbS | bSaS | .
(ii) S abS | abScS | .
Mostrar que las gramaticas G1 y G2 siguientes son ambiguas. En
cada caso, encontrar el lenguaje generado por la gramatica y construir
luego una gramatica no-ambigua que genere el mismo lenguaje.

S AaSbB |
G1 :
A aA | a

B bB |

S ASB | AB
G2 :
A aA | a

B bB |

Encontrar una GIC no-ambigua que genere el lenguaje a b(a b) .

4.5.

Gram
aticas para lenguajes de programaci
on

La sintaxis de los lenguajes de programaci


on, o al menos una gran porci
on
de esta, se presenta usualmente por medio de gramaticas GIC. En tales casos se dice que el lenguaje esta en la forma Backus-Naur o, simplemente,
en la forma BNF. Los lenguajes que estan en BNF ofrecen ventajas significativas para el dise
no de analizadores sintacticos en compiladores.

ros reales sin signo, similar a la utilizada en muchos lenguajes

Ejemplo

A continuaci
on se exhibe una gramatica para generar los n
ume-

de programaci
on. Las variables aparecen encerradas entre parentesis
y
real es la variable inicial de la gramatica. El alfabeto de terminales es
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ., +, -, E}. En el contexto de los lenguajes de programaci
on los terminales se denominan tambien componentes l
exicos,
lexemas o tokens.
real
dgitos
decimal
exp

dgitos decimal exp


dgitos dgitos | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
. dgitos |
E dgitos | E+ dgitos | E- dgitos |

4.5. GRAMATICAS
PARA LENGUAJES DE PROGRAMACION

95

Esta gramatica genera expresiones como 47.236, 321.25E+35, 0.8E9 y


0.8E+9. Las partes decimal y exponencial son opcionales debido a las
producciones decimal y exp , pero no se generan expresiones
como .325, E125, 42.5E ni 0.1E+.

programaci
on, es decir, cadenas cuyo primer smbolo es una le-

Ejemplo

Gramatica para generar los identificadores en lenguajes de

tra que va seguida de letras y/o dgitos. Las variables aparecen encerradas
entre parentesis
e identificador es la variable inicial de la gramatica. La variable lsds representa letras o dgitos. Los terminales en esta
gramatica son las letras, min
usculas o may
usculas, y los dgitos.
identificador
lsds
letra
dgito

letra lsds
letra lsds | dgito lsds |
a | b | c| | x | y | z | A | B | C | | Y | Z
0|1|2|3|4|5|6|7|8|9

Ejercicios de la secci
on 4.5

Con la gramatica del primer ejemplo de esta secci


on hacer derivaciones y
arboles de derivaci
on para las cadenas 235.101E+25 y 0.01E-12.
Encontrar una GIC, con una sola variable, para generar los identificadores, es decir, el lenguaje del segundo ejemplo de esta secci
on.
Una gramatica similar a la siguiente se usa en muchos lenguajes de
programaci
on para generar expresiones aritmeticas formadas por sumas y productos de n
umeros en binario:
expresi
on
termino
factor
n
umero

termino | expresi
on + termino
factor | termino * factor
n
umero | ( expresi
on )
1 n
umero | 0 n
umero | 0 | 1

El alfabeto de terminales de esta gramatica es {0, 1, +, *, (, )}.


(i) Hacer derivaciones y
arboles de derivaci
on para las siguientes
cadenas:
10+101*10
(101+10*10)
(10+111)*(100+10*101+1111)
(ii) Demostrar que esta gramatica no es ambigua.

96

4.6.

LENGUAJES LIC Y GRAMATICAS


GIC

Gram
aticas para lenguajes naturales

Para los lenguajes naturales, como el espa


nol, se pueden presentar GIC
que generen las frases u oraciones permitidas en la comunicaci
on hablada
o escrita. Una GIC para generar una porci
on de las oraciones del idioma
espa
nol se presenta a continuaci
on; las variables aparecen encerradas entre parentesis
y Oraci
on es la variable inicial de la gramatica. Los
terminales son las palabras propias del idioma.
Sujeto Verbo Compl. Directo |

Oraci
on

Sujeto Verbo Compl. Directo Compl. Circunst. |


Sujeto Verbo Compl. Indirecto Compl. Circunst.
Sujeto

Sustant. | Juan | Pedro | Mara |

Compl. Directo

Prepos. Artculo Sustant. |


Prepos. Artculo Sustant. Prepos. Artculo Sustant. |
Prepos. Artculo Sustant. Prepos. Sustant. Adjetivo

Compl. Indirecto Prepos. Artculo Sustant. |


Prepos. Artculo Sustant. Adjetivo |
Prepos. Sustant. Prepos. Sustant.
Compl. Circunst. Prepos. Artculo Sustant. |
Prepos. Artculo Sustant. Adjetivo | Adverbio |
Prepos. Artculo Sustant. Prepos. Artculo Sustant.
Sustant.

casa | perro | libro | lapiz | mesa | |

Adjetivo

rojo | azul | inteligente | malvado | u


til | |

Prepos.

a | ante | bajo | con | contra | de | desde | en | entre | hacia |


hasta | para | por | seg
un | sin | so | sobre | tras | |

Artculo

el | la | lo | las | los | un | uno | una | unas | unos |

Adverbio

muy | bastante | poco | demasiado | lento | lentamente |


rapido | rapidamente | |
escribir | escribo | escribe | escribes | escriben | escrib |

Verbo

escribiste | escribieron |

Los lenguajes naturales son casi siempre ambiguos porque existen muchas
reglas de producci
on, lo que da lugar a m
ultiples arboles de derivaci
on para
ciertas oraciones.

Ejemplo

La oracion
Juan mira a una persona con un telescopio

97

4.6. GRAMATICAS
PARA LENGUAJES NATURALES

es ambigua. La ambig
uedad surge porque las producciones permiten dos
arboles de derivaci
on:
Oraci
on

Sujeto

Juan

Verbo

Compl.Indirecto

Compl. Circunst.

mira Prepos. Art. Sustant.

una

Prepos. Art. Sustant.

persona

con

un telescopio

Oraci
on

Sujeto

Verbo

Juan

mira

Compl. Directo

Prepos.

Art.

Sustant.

Prepos.

Art.

Sustant.

una

persona

con

un

telescopio

Ejercicios de la secci
on 4.6

Usando la gramatica exhibida en la presente secci


on, mostrar que las siguientes oraciones del idioma espa
nol son ambiguas. En cada caso hacer los
arboles de derivaci
on.
Mara escucha la conversaci
on tras la puerta.
Pedro ve la televisi
on en la mesa.
Manuel observa a la chica con vestido rojo.
Ana so
no con un gato en pijama.

98

4.7.

LENGUAJES LIC Y GRAMATICAS


GIC

Gram
aticas regulares

4.7.1 Definici
on. Una GIC se llama regular si sus producciones son de
la forma
A aB, a , B V.
A .
Los siguientes teoremas establecen la conexi
on entre los lenguajes regulares
y las gramaticas regulares.
4.7.2 Teorema. Dado un AFD M = (Q, , q0 , F, ), existe una GIC regular G = (V, , S, P ) tal que L(M ) = L(G).
Demostraci
on. Sea V = Q y S = q0 . Las producciones de G estan dadas
por
q ap si y s
olo si (q, a) = p.
q si y s
olo si q F.
Demostraremos primero que para toda w , w = y para todo p, q Q
se tiene
(1)

Si (q, w) = p

entonces

q = wp.

La demostraci
on de (1) se hace por induccion sobre w. Si w = a y (q, a) =
p, entonces q ap es una producci
on de G y obviamente se concluye
q = ap. Para el paso inductivo, sea (q, wa) = p . Entonces
p = (q, wa) = ((q, w), a) = (p, a)

donde (q, w) = p. Por hip


otesis de induccion q = wp y como (p, a) = p ,
entonces p = ap . Por lo tanto,

q = wp = wap
que era lo que se quera demostrar.
A continuaci
on demostraremos el recproco de (1): para toda w ,
w = y para todo p, q Q se tiene
(2)

Si q = wp entonces

(q, w) = p.

La demostraci
on de (2) se hace por induccion sobre la longitud de la deri
vaci
on q = wp, es decir, por el n
umero de pasos o derivaciones directas

que hay en q = wp. Si la derivaci


on tiene longitud 1, necesariamente
q = ap lo cual significa que (q, a) = p. Para el paso inductivo, supongase

99

4.7. GRAMATICAS
REGULARES

que q = wp tiene longitud n + 1, w = w a y en el u


ltimo paso se aplica la
producci
on p ap. Entonces

q = w p = w ap = wp.
Por hip
otesis de induccion, (q, w ) = p y por consiguiente
(q, w) = (q, w a) = ((q, w ), a) = (p , a) = p,
que era lo que se quera demostrar.
Como consecuencia de (1) y (2) se puede ahora demostrar que
(3)

Para toda cadena w ,

(q0 , w) F

si y s
olo si

S =G w,

lo cual afirma que L(M ) = L(G). En efecto, si w = , (q0 , w) F si y s


olo
si q0 F . Por lo tanto, q0 es una producci
on de G. As que S = .

Recprocamente, si S = , necesariamente S = , q0 F y (q0 , ) F .

Sea ahora w = . Si (q0 , w) = p F , por (1) se tiene q0 = w, o sea,

S = w. Recprocamente, si S =G w, entonces q0 =G wp = w donde


p . Utilizando (2), se tiene (q0 , w) = p F .

secci
on 2.3, acepta las cadenas que terminan en b:

Ejemplo

El siguiente AFD M , presentado en el u


ltimo ejemplo de la
a

> q0

b
q1

a
M induce la gramatica regular
G:

q0 aq0 | bq1
q1 bq1 | aq0 |

que cumple L(M ) = L(G). Las variables de G son q0 y q1 , siendo q0 la


variable inicial.

Para el lenguaje regular 0 10 10 , sobre = {0, 1} (el lenguaje

de todas las cadenas con exactamente dos unos), vimos en la


secci
on 4.2 una gramatica que lo genera:
Ejemplo

S A1A1A
A 0A |
Esta gramatica no es regular, pero por medio del AFD

100

LENGUAJES LIC Y GRAMATICAS


GIC

>S

0
A

0
B

y el Teorema 4.7.2 se puede obtener una GIC regular que genere 0 10 10 :

S 0S | 1A
A 0A | 1B

B 0B |

4.7.3 Teorema. Dada una GIC regular G = (V, , S, P ), existe un AFN


M = (Q, , q0 , F, ) tal que L(M ) = L(G).

Demostraci
on. Se construye M = (Q, , q0 , F, ) haciendo Q = V , q0 = S
y
B (A, a) para cada producci
on A aB.
AF
si A .
Usando razonamientos similares a los del Teorema 4.7.2, se puede demostrar
que

A =G wB

si y s
olo si

B (A, w), para todo w , w = ,

de donde L(M ) = L(G). Los detalles se dejan como ejercicio.


4.7.4 Corolario.
1. Un lenguaje es regular si y solamente si es generado por una gram
atica regular.
2. Todo lenguaje regular es un LIC (pero no viceversa).
Demostraci
on.
1. Se sigue del Teorema 4.7.2, el Teorema 4.7.3 y del Teorema de Kleene.
2. Se sigue de la parte 1. Por otro lado, {ai bi : i 0} es LIC pero no es
regular.
4.7.5 Definici
on. Una GIC se llama regular por la derecha si sus
producciones son de la forma
A wB,
A

w , B V,


4.7. GRAMATICAS
REGULARES

101

4.7.6 Teorema. Las gram


aticas regulares y las gram
aticas regulares por
la derecha generan los mismos lenguajes, es decir, los lenguajes regulares.
Dicho de otra manera, la definici
on de gram
atica regular es equivalente a
la definici
on de gram
atica regular por la derecha.
Demostraci
on. Una gramatica regular es obviamente regular por la derecha.
Recprocamente, en una gramatica regular por la derecha G = (V, , S, P ),
una producci
on de la forma
A a1 a2 an B
donde los ai , n 2, B V , se puede simular con producciones de la
forma A aB y A . En efecto, se introducen n 1 variables nuevas
A1 , . . . , An1 cuyas u
nicas producciones son:
A
A1

a1 A1
a2 A2
..
.

An1 an B
De esta manera se puede construir una gramatica regular equivalente a
G.

Ejercicios de la secci
on 4.7

Encontrar GIC regulares que generen los siguientes lenguajes:


(i) ab a.
(ii) (ab ba) .
(iii) a+ b b+ a b.
(iv) 0 (10 01 ).
Una GIC se llama regular por la izquierda si sus producciones son
de la forma:
A Bw, w , B V
A
Demostrar que las gramaticas regulares y las gramaticas regulares por
la izquierda generan los mismos lenguajes.
! Completar los detalles de la demostraci
on del Teorema 4.7.3.

102

4.8.

LENGUAJES LIC Y GRAMATICAS


GIC

Eliminaci
on de las variables in
utiles

En una GIC puede haber dos tipos de variables in


utiles: aquellas que nunca
aparecen en el curso de una derivaci
on y aquellas que no se pueden convertir
en cadenas de terminales. A continuaci
on se precisan estos conceptos.
4.8.1. Definiciones.
(i) Una variable A es alcanzable o accesible si existen u, v (V )

tales que S = uAv. La variable inicial S es alcanzable por definicion.

(ii) Una variable A es terminable si existe w tal que A = w. En


particular, si A es una producci
on entonces A es terminable.
(iii) A es una variable in
util si no es alcanzable o no es terminable.
Existen algoritmos para detectar todas las variables in
utiles de una GIC

que permiten construir una gramatica G equivalente a una gramatica G


dada, de tal manera que G no tenga variables in
utiles.
4.8.2. Algoritmo para encontrar las variables terminables.
El siguiente algoritmo sirve para encontrar todas las variables terminables
de una GIC.
TERM1 := A V : Existe una produccion de la forma A w, w .
TERMi+1 := TERMi A V : produccion A w, w ( TERMi ) .

Obtenemos una sucesion creciente de conjuntos de variables:


TERM1 TERM2 TERM3
Como el conjunto de variables es finito, existe k tal que
TERMk = TERMk+1 = TERMk+2 =
El conjunto TERM de variables terminables es entonces
TERM :=

TERMi
i1

El anterior algoritmo se puede presentar de la siguiente forma:

DE LAS VARIABLES INUTILES

4.8. ELIMINACION

103

INICIALIZAR:
TERM := A V : produccion A w, w
REPETIR:
TERM := TERM A V : produccion A w, w ( TERM)
HASTA:
No se a
naden nuevas variables a TERM

Ejemplo

Solucion.

Encontrar las variables terminables de la siguiente gramatica.

S ACD | bBd | ab

A aB | aA | C

B aDS | aB
G:

C aCS | CB | CC

D bD | ba

E AB | aDb

TERM1 = {S, D}.


TERM2 = {S, D} {B, E} = {S, D, B, E}.
TERM3 = {S, D, B, E} {A} = {S, D, B, E, A}.
TERM4 = {S, D, B, E, A} { } = {S, D, B, E, A}.
TERM = {S, A, B, D, E}.
Conjunto de variables no terminables: {C}.
4.8.3. Algoritmo para encontrar las variables alcanzables.
El siguiente algoritmo sirve para encontrar todas las variables alcanzables
de una GIC.
ALC1 := {S}.
ALCi+1 := ALCi {A V : produc. B uAv, B ALCi u, v (V ) }.

Obtenemos una sucesion creciente de conjuntos de variables:


ALC1 ALC2 ALC3
Como el conjunto de variables es finito, existe k tal que
ALCk = ALCk+1 = ALCk+2 =

104

LENGUAJES LIC Y GRAMATICAS


GIC

El conjunto ALC de variables alcanzables es entonces


ALC =

ALCi
i1

El anterior algoritmo se puede presentar de la siguiente forma:


INICIALIZAR:
ALC := {S}
REPETIR:
ALC := ALC A V : produccion B uAv, B ALC y
u, v (V )
HASTA:
No se a
naden nuevas variables a ALC

Ejemplo

Encontrar las variables alcanzables de la siguiente gramatica.

G:

Solucion.

S aS | AaB | ACS

A aS | AaB | AC

B bB | DB | BB
C aDa | ABD | ab

D aD | DD | ab

E F F | aa

F aE | EF

ALC1 = {S}.
ALC2 = {S} {A, B, C} = {S, A, B, C}.
ALC3 = {S, A, B, C} {D} = {S, A, B, C, D}.
ALC4 = {S, A, B, C, D} { } = {S, A, B, C, D}
ALC = {S, A, B, C, D}.
Conjunto de variables no alcanzables: {E, F }.
Dada una GIC G, los dos algoritmos anteriores (algoritmo 4.8.2 y algoritmo 4.8.3) se pueden llevar a cabo en dos ordenes diferentes:
Algoritmo

(I) G

Eliminar variables
no-terminables

Algoritmo

G1

Eliminar variables
no-alcanzables

G2

DE LAS VARIABLES INUTILES

4.8. ELIMINACION

Algoritmo

(II) G

105

Algoritmo
Eliminar variables
Eliminar variables
G3
G4
no-alcanzables
no-terminables

Esto da lugar a las siguientes preguntas:


(1) Es G2 = G4 ?
(2) G2 tiene variables in
utiles?
(3) G4 tiene variables in
utiles?
El siguiente ejemplo muestra que la respuesta a la pregunta (1) es no y que
al realizar los algoritmos en el orden (II) pueden permanecer en G4 algunas
variables in
utiles.

Ejemplo

Considerese la siguiente gramatica G.


S a | AB
A aA |

G:

Aplicaci
on de los algoritmos en el orden (I):
Variables terminables de G: TERM= {S, A}.
Sa
A aA |

G1 :

Variables alcanzables de G1 : ALC= {S}.


G2 :

Sa

Se tiene que L(G2 ) = {a}.


Aplicaci
on de los algoritmos en el orden (II):
Variables alcanzables de G: ALC={S, A, B}.
G3 :

S a | AB
A aA |

Variables terminables de G3 : TERM={S, A}.


G4 :

Sa
A aA |

Se observa que en G4 , A no es alcanzable. Adem


as, G2 = G4 .

106

LENGUAJES LIC Y GRAMATICAS


GIC

No obstante, si los algoritmos se llevan a cabo en el orden (I) la gramatica


G2 ya no tiene variables in
utiles. Nos podemos convencer de eso observando
que las variables alcanzables obtenidas al finalizar el procedimiento siguen
siendo terminables. M
as precisamente, si una variable A permanece al finalizar el procedimiento completo, sera es alcanzable, y si la derivaci
on

A = w, con w , se poda hacer antes de eliminar las variables no


alcanzables, tambien se podra realizar en la gramatica final ya que todas
las variables que aparezcan en esa derivaci
on seran alcanzables.

Ejemplo

Eliminar las variables in


utiles de la siguiente gramatica G.

G:

S SBS | BC | Bb

A AA | aA

B aBCa | b
C aC | ACC | abb

D aAB | ab

E aS | bAA

F aDb | aF

Solucion. Ejecutamos los algoritmos en el orden (I):


TERM1
TERM2
TERM3
TERM4

= {B, C, D}.
= {B, C, D} {S, F }.
= {B, C, D, S, F } {E} = {B, C, D, S, F, E}.
= {B, C, D, S, F, E} { }.

La u
nica variable no-terminable de G es A. Por lo tanto, G es equivalente
a la siguiente gramatica G1 :

S SBS | BC | Bb

B aBCa | b

C aC | abb
G1 :

D ab

E aS

F aDb | aF

Variables alcanzables de G1 :

ALC1 = {S}.
ALC2 = {S} {B, C}.
ALC3 = {S, B, C} { }.

DE LAS PRODUCCIONES
4.9. ELIMINACION

107

Las variables D, E, F son no alcanzables. Por lo tanto, G es equivalente


a la siguiente gramatica G2 , que no tiene variables in
utiles.

S SBS | BC | Bb
G2 :
B aBCa | b

C aC | abb

Ejercicios de la secci
on 4.8

Eliminar las variables in


utiles de la siguiente gramatica:

S SS | SBB | CCE

A aE | bE

B bB | Db
G:

C aC | bB

D aDb | ab |

E aA | bB

Eliminar las variables in


utiles de la siguiente gramatica:

S EA | SaBb | aEb

A DaD | bD

B bB | Ab |
G:
C aC | bBC

D aEb | ab

E aA | bB |

F Fb | Fa | a

4.9.

Eliminaci
on de las producciones

4.9.1. Definiciones.
(i) Una producci
on de la forma A se llama producci
on .

(ii) Una variable A se llama anulable si A = .


4.9.2. Algoritmo para encontrar las variables anulables.

108

LENGUAJES LIC Y GRAMATICAS


GIC

ANUL1 := {A V : A es una producci


on}.
ANULi+1 := ANULi A V : producci
on A w, w (ANULi ) .
Obtenemos una sucesion creciente de conjuntos de variables:
ANUL1 ANUL2 ANUL3
Como el conjunto de variables es finito, existe k N tal que
ANULk = ANULk+1 = ANULk+2 =
El conjunto ANUL de variables anulables es entonces
ANULi

ANUL :=
i1

El anterior algoritmo se puede presentar de la siguiente forma:


INICIALIZAR:
ANUL := {A V : A es una producci
on}
REPETIR:
ANUL := ANUL A V : prod. A w, w (ANUL)
HASTA:
No se a
naden nuevas variables a ANUL
4.9.3 Teorema. Dada una GIC G, se puede construir una GIC G equivalente a G sin producciones , excepto (posiblemente) S .
Demostraci
on. Una vez que haya sido determinado el conjunto ANUL de
variables anulables, por medio del algoritmo 4.9.2, las producciones de
se pueden eliminar (excepto S ) a
nadiendo nuevas producciones que
simulen el efecto de las producciones eliminadas. M
as concretamente, por
cada producci
on A u de G se a
naden las producciones de la forma A v
obtenidas suprimiendo de la cadena u una, dos o m
as variables anulables
presentes, de todas las formas posibles. La gramatica G as obtenida es
equivalente a la gramatica original G.

Ejemplo

Eliminar las producciones de la siguiente gramatica G.

G:

S AB | ACA | ab

A aAa | B | CD
B bB | bA

C cC |

D aDc | CC | ABb

DE LAS PRODUCCIONES
4.9. ELIMINACION

109

Solucion. Primero encontramos las variables anulables de G por medio del


algoritmo 4.9.2:
ANUL1
ANUL2
ANUL3
ANUL4
ANUL5

= {C}.
= {C} {D} = {C, D}.
= {C, D} {A} = {C, D, A}.
= {C, D, A} {S} = {C, D, A, S}.
= {C, D, A, S} { } = {C, D, A, S}.

Al eliminar de G la producciones (la u


nica es C ) se obtiene la
siguiente gramatica equivalente a G:

G :

S AB | ACA | ab | B | CA | AA | AC | A | C |

A aAa | B | CD | aa | C | D
B bB | bA | b

C cC | c

D aDc | CC | ABb | ac | C | Bb

Ejercicios de la secci
on 4.9

Eliminar las producciones de la siguiente gramatica:

G:

S BCB

A aA | ab
B bBa | A | DC

C aCb | D | b

D aB |

Eliminar las producciones de la siguiente gramatica:

G:

S EA | SaBb | aEb

A DaD | bD | BEB
B bB | Ab |

D aEb | ab

E aA | bB |

110

LENGUAJES LIC Y GRAMATICAS


GIC

4.10.

Eliminaci
on de las producciones unitarias

4.10.1. Definiciones.
(i) Una producci
on de la forma A B donde A y B son variables, se
llama producci
on unitaria.
(ii) El conjunto unitario de una variable A (tambien llamado conjunto
cadena de A) se define de la siguiente manera:

UNIT(A) := {X V : una derivaci


on A = X
que usa u
nicamente producciones unitarias}.
Por definicion, A UNIT(A).
4.10.2. Algoritmo para encontrar las producciones unitarias.
El siguiente algoritmo sirve para encontrar el conjunto unitario UNIT(A)
de una variable A.
UNIT1 (A) := {A}.
UNITi+1 (A) := UNITi (A) {X V : produccion Y X, Y UNITi (A)}.

Para el conjunto de producciones unitarias se tiene que:


UNIT1 (A) UNIT2 (A) UNIT3 (A)
Puesto que el conjunto de variables es finito, la anterior es una sucesion
finita y se tiene
UNIT(A) =
UNITi (A)
i1

El anterior algoritmo se puede representar de la siguiente forma:


INICIALIZAR:
UNIT(A):={A}
REPETIR:
UNIT(A):= UNIT(A) X V : una producci
on Y X
con Y UNIT(A)
HASTA:
No se a
naden nuevas variables UNIT(A)

DE LAS PRODUCCIONES UNITARIAS


4.10. ELIMINACION

111

4.10.3 Teorema. Dada una GIC G, se puede construir una GIC G equivalente a G sin producciones unitarias.
nadienDemostraci
on. Las producciones unitarias de G se pueden eliminar a
do para cada variable A de G las producciones (no unitarias) de las variables
contenidas en el conjunto unitario UNIT(A). La gramatica G as obtenida
es equivalente a la gramatica original G.

Ejemplo

Eliminar las producciones unitarias de la siguiente gramatica.

S AS | AA | BA |

A aA | a
G:

B bB | bC | C

C aA | bA | B | ab

Solucion. Aplicando el algoritmo para cada una de las variables de G, se


tiene que:
UNIT1 (S) = {S}.
UNIT2 (S) = {S} { } = {S}.
UNIT1 (A) = {A}.
UNIT2 (A) = {A} { } = {A}.
UNIT1 (B) = {B}.
UNIT2 (B) = {B} {C} = {B, C}.
UNIT3 (B) = {B, C} {B} = {B, C}.
UNIT1 (C) = {C}.
UNIT2 (C) = {C} {B} = {C, B}.
UNIT3 (C) = {C, B} {C} = {C, B}.
Eliminando las producciones unitarias se obtiene una gram
atica G equivalente:

S AS | AA | BA |

A aA | a
G :

B bB | bC | aA | bA | ab

C aA | bA | ab | bB | bC

Ejemplo

Eliminar las producciones unitarias de la siguiente gramatica.

S ACA | CA | AA | A | C |

A aAa | aa | B | C
G:
B cC | D | C

C bC

D aA |

112

LENGUAJES LIC Y GRAMATICAS


GIC

Solucion. Realizando el algoritmo para cada una de las variables de G se


obtiene:
UNIT(S) = {S, A, C, B, D}.
UNIT(A) = {A, B, C, D}.
UNIT(B) = {B, C, D}.
UNIT(C) = {C}.
UNIT(D) = {D}.
Eliminando las producciones unitarias se obtiene una gram
atica G equivalente:

S ACA | CA | AA | | aAa | aa | bC | cC | aA

A aAa | aa | cC | bC | aA |

G
B cC | bC | aA |

C bC

D aA |

Ejercicios de la secci
on 4.10

Eliminar las producciones unitarias de la siguiente gramatica:

S Ba | A |
G:
A Aa | a

B bB | S

Eliminar las producciones unitarias de la siguiente gramatica:

S BBa | A | B | ab |

A Aa | B | D | aC
G:
B bB | aA | b

C ABb | A | aB

D cC | c

Eliminar las producciones unitarias de la siguiente gramatica:

S ACA | ab | B | CA | A | C |

A aAa | B | CD | aa | D
G:
B bB | bA | b

C cC | c

D ABb | ac | C | Bb

4.11. FORMA NORMAL DE CHOMSKY (FNC)

4.11.

113

Forma Normal de Chomsky (FNC)

Una GIC G esta en Forma Normal de Chomsky (FNC) si satisface:


1. G no tiene variables in
utiles.
2. G no tiene producciones (excepto posiblemente S ).
3. Todas las producciones son de la forma: A a (producciones simples)
o A BC (producciones binarias).
En particular, una gramatica en FNC no tiene producciones unitarias.
4.11.1 Teorema (Procedimiento de conversi
on a FNC). Toda GIC G es
equivalente a una gram
atica en Forma Normal de Chomsky.
Demostraci
on. Podemos transformar G en una gramatica en FNC, equivalente a G, ejecutando los algoritmos de las secciones anteriores en el
siguiente orden:
1. Eliminar las variables no terminales.
2. Eliminar las variables no alcanzables.
3. Eliminar las producciones (excepto, posiblemente, S ).
4. Eliminar las producciones unitarias.
5. Las producciones resultantes (diferentes de S ) son de la forma:
A a
o A w, donde |w| 2. Estas u
ltimas se pueden simular con producciones de la forma A BC o A a. Se introduce
primero, para cada a , una variable nueva Ta cuya u
nica producci
on es Ta a. A continuaci
on, se introducen nuevas variables, con
producciones binarias, para simular las producciones deseadas.
La parte 5 del procedimiento anterior se ilustra en los dos siguientes ejemplos.

y binarias.

Ejemplo

Simular la producci
on A abBaC con producciones simples

Solucion. Introducimos las variables Ta y Tb , y las producciones Ta a y


Tb b. Entonces A abBaC se simula con:

A Ta Tb BTa C
Ta a

Tb b

114

LENGUAJES LIC Y GRAMATICAS


GIC

Ahora introducimos nuevas variables T1 , T2 , T3 y las producciones binarias necesarias. Las u


nicas producciones de estas nuevas variables son las
mostradas:

A T a T1

T 1 T b T2

T BT
2
3

T
C
3
a

a
a

T b
b

y binarias.

Ejemplo

Simular la producci
on A BAaCbb con producciones simples

Solucion. Introducimos las variables Ta y Tb , y las producciones Ta a y


Ta b. Entonces A BAaCbb se simula con:

A BATa CTb Tb
Ta a

Tb b

Ahora introducimos nuevas variables T1 , T2 , T3 , T4 y las producciones binarias necesarias. Las u


nicas producciones de estas nuevas variables son las
mostradas:

A BT1

T1 AT2

T 2 T a T3

T3 CT4

T 4 T b Tb

Ta a

Tb b

En los siguientes ejemplos se ilustra el procedimiento completo para convertir una gramatica dada a la Forma Normal de Chomsky (FNC).

gram
atica:

Ejemplo

Encontrar una GIC en FNC equivalente a la siguiente a la

G:

S AB | aBC | SBS

A aA | C

B bbB | b

C cC |

4.11. FORMA NORMAL DE CHOMSKY (FNC)

115

Solucion. El conjunto de variables terminables es


TERM = {B, C, S, A},
y el conjunto de variables alcanzables es
ALC = {S, A, B, C}.
Es decir, la gramatica no tiene variables in
utiles. El conjunto de variables
anulables es
ANUL = {C, A}.
Al eliminar las producciones de G (la u
nica es C ) se obtiene la
gramatica equivalente G1 :

S AB | aBC | SBS | B | aB

A aA | C | a
G1 :

B bbB | b

C cC | c

A continuaci
on encontramos los conjuntos unitarios de todas las variables:
UNIT(S) = {S, B}.
UNIT(A) = {A, C}.
UNIT(B) = {B}.
UNIT(C) = {C}.

Al eliminar las producciones unitarias obtenemos la gramatica equivalente


G2 :

S AB | aBC | SBS | aB | bbB | b

A aA | a | cC | c
G2 :
B bbB | b

C cC | c
Luego introducimos las variables nuevas Ta , Tb y Tc , y las producciones
Ta a, Tb b y Tc c con el prop
osito de que todas las producciones
sean unitarias o de la forma A w, donde |w| 2.

S AB | Ta BC | SBS | Ta B | Tb Tb B | b

A T a A | a | Tc C | c

B Tb Tb B | b
G3 :
C Tc C | c

Ta a

Tb b

Tc c

116

LENGUAJES LIC Y GRAMATICAS


GIC

Finalmente, se introducen nuevas variables, con producciones binarias,


para simular las producciones de la forma A w, donde |w| 2:

G4 :

S AB | Ta T1 | ST2 | Ta B | Tb T3 | b

A Ta A | TC C | a | c

B Tb T 3 | b

C Tc C | c

T BC
1

T2 BS

T3 Tb B

Ta a

Tb b

T c
c

gram
atica:

Ejemplo

Encontrar una GIC en FNC equivalente a la siguiente a la

G:

S aS | aA | D

A aAa | aAD |
B aB | BC

C aBb | CC |

D aB | bA | aa | A

Solucion. TERM = {A, C, D, S}. Eliminando la variable no-terminable B


obtenemos:

S aS | aA | D

A aAa | aAD |
G1 :

C CC |

D bA | aa | A

El conjunto de las variables alcanzables de G1 es ALC = {S, A, D}. Eliminando la variable no-alcanzable C obtenemos:

G2 :

S aS | aA | D
A aAa | aAD |

D bA | aa | A

4.11. FORMA NORMAL DE CHOMSKY (FNC)

117

El conjunto de variables anulables de G2 es ANUL = {A, D, S}. Eliminando las producciones obtenemos:

S aS | aA | D | a |
G3 :
A aAa | aAD | aa | aA | aD | a

D bA | aa | A | b
A continuaci
on encontramos los conjuntos unitarios de todas las variables:
UNIT(S) = {S, D, A}.
UNIT(A) = {A}.
UNIT(D) = {D, A}.
Al eliminar las producciones unitarias obtenemos la gramatica equivalente
G4 :

S aS | aA | a | | aAa | aAD | aa | aD | bA | b
G4 :
A aAa | aAD | aa | aA | aD | a

D bA | aa | b | aAa | aAD | aa | aA | aD | a
Finalmente, simulamos las producciones de G4 con producciones unitarias
y binarias:

S Ta S | Ta A | Ta T1 | Ta T 2 | Ta Ta | Ta D | Tb A | a | b |

A Ta T1 | Ta T 2 | Ta Ta | Ta A | Ta D | a

D Tb A | Ta Ta | b | Ta T 1 | Ta T2 | T a Ta | Ta A | T a D | a
G5 :
T1 ATa

T2 AD

Ta a

Tb b

En algunas aplicaciones de la FNC es necesario exigir que la variable inicial


S no aparezca en el cuerpo de ninguna producci
on. Si S aparece en el
lado derecho de alguna producci
on se dice que S es recursiva ya que esto
+
da lugar a derivaciones de la forma S = uSv, con u, v (V ) . El
siguiente teorema es un resultado muy sencillo; establece que cualquier
GIC se puede transformar en una GIC equivalente en la cual la variable
inicial no es recursiva.
4.11.2 Teorema. Dada una GIC G = (V, , S, P ) se puede construir una
GIC G = (V , , S , P ) equivalente a G de tal manera que el smbolo inicial
S de G no aparezca en lado derecho de las producciones de G .

118

LENGUAJES LIC Y GRAMATICAS


GIC

Demostraci
on. La nueva gramatica G tiene una variable m
as que G, la

variable S , que act


ua como la nueva variable inicial. Es decir, V = V {S }.
El conjunto de producciones P esta dado por P = P {S S}. Es claro
que L(G) = L(G ) y el smbolo inicial S no aparece en el cuerpo de las
producciones.
Seg
un este resultado, el papel de la variable inicial de la nueva gramatica
G es u
nicamente iniciar las derivaciones.

Ejemplo

Encontrar una GIC G equivalente a la siguiente gramatica G


de tal manera que la variable inicial de G no sea recursiva.

G:

S ASB | BB
A aA | a

B bBS |

un se indic
o en la demostraci
on del Teorema 4.11.2, la gramatiSolucion. Seg

ca pedida G es

S S

S ASB | BB

G :

A aA | a

B bBS |

N
otese que S sigue siendo recursiva pero ya no es la variable inicial de la
gramatica.

ejemplo anterior, de tal manera que su variable inicial no sea

Ejemplo

Encontrar una GIC en FNC equivalente a la gramatica G del

recursiva.
Solucion. Comenzamos transformando G en G , como se hizo en el ejemplo anterior. En G todas las variable son u
tiles y ANUL = {B, S, S }.
Eliminando las producciones obtenemos:

S S |

S ASB | BB | AB | AS | A
G1 :
A aA | a

B bBS | bS | bB | b
Los conjuntos unitarios son: UNIT(S ) = {S , S}, UNIT(S) = {S, A},
UNIT(A) = {A}, UNIT(B) = {B}. Eliminando las producciones unita-

4.11. FORMA NORMAL DE CHOMSKY (FNC)

119

rias se obtiene la gramatica:

S ASB | BB | AB | AS | aA | a |

S ASB | BB | AB | AS | aA | a
G2 :

A aA | a

B bBS | bS | bB | b

Simulando las producciones de G2 con producciones unitarias y binarias se


obtiene:

S AT1 | BB | AB | AS | Ta A | a |

S AT1 | BB | AB | AS | Ta A | a

A Ta A | a

B T T | T S | T B | b
b 2
b
b
G3 :

Ta a

Tb b

T1 SB

T BS
2

Ejercicios de la secci
on 4.11

Encontrar una gramatica en FNC equivalente a la siguiente GIC:

S ABC | BaC | aB

A Aa | a
G:

B BAB | bab

C cC | c

Encontrar una gramatica en FNC equivalente a la siguiente GIC:

S aASb | BAb

A Aa | a |
G:

B BAB | bAb

C cCS |

Para la gramatica del ejercicio encontrar una GIC equivalente en


FNC, de tal manera que su variable inicial no sea recursiva.

120

LENGUAJES LIC Y GRAMATICAS


GIC

4.12.

Forma Normal de Greibach (FNG)

Una GIC esta en Forma Normal de Greibach (FNG) si


1. La variable inicial no es recursiva.
2. G no tiene variables in
utiles.
3. G no tiene producciones (excepto posiblemente S ).
4. Todas las producciones son de la forma: A a (producciones simples)
o A aB1 B2 . . . Bk , donde las Bi son variables.
Las derivaciones en una gramatica que este en FNG tienen dos caractersticas notables: en cada paso aparece un u
nico terminal y, en segundo lugar,
la derivaci
on de una cadena de longitud n (n 1) tiene exactamente n
pasos.
Existe un procedimiento algortmico para transformar una GIC dada
en una gramatica equivalente en FNG. Para presentar el procedimiento
necesitamos algunos resultados preliminares.
4.12.1 Definici
on. Una variable se llama recursiva a la izquierda si
tiene una producci
on de la forma:
A Aw,

w (V ) .

La recursividad a izquierda se puede eliminar, como se muestra en el siguiente teorema.


4.12.2 Teorema (Eliminacion de la recursividad a la izquierda). Las producciones de una variable A cualquiera se pueden dividir en dos clases:
A A1 | A2 | | An
A 1 | 2 | | m
donde i , i (V ) y el primer smbolo de i es diferente de A. Sin
alterar el lenguaje generado, las anteriores producciones se pueden simular,
reemplaz
andolas por las siguientes:
A 1 | 2 | | m | 1 Z | 2 Z | | m Z
Z 1 | 2 | | n | 1 Z | 2 Z | | n Z
donde Z es una variable completamente nueva.

4.12. FORMA NORMAL DE GREIBACH (FNG)

121

Demostraci
on. Se puede observar que, tanto con las producciones originales como las nuevas, A genera el lenguaje
{1 , 2 , . . . , m } {1 , 2 , . . . , n }
4.12.3 Lema. En una GIC cualquiera, una producci
on A uBv se puede
reemplazar (simular) por
A uw1 v | uw2 v | | uwn v
siendo B w1 | w2 | | wn todas las producciones de B.
Demostraci
on.

Inmediato.

4.12.4 Teorema (Procedimiento de conversi


on a FNG). Toda GIC G es
equivalente a una gram
atica en Forma Normal de Greibach.
Demostraci
on. Suponemos que la gramatica dada esta en FNC. Esto simplifica el procedimiento, aunque este es valido (con modificaciones menores)
para una gramatica arbitraria si se eliminan primero las variables in
utiles,
las producciones y las producciones unitarias. La conversi
on a FNG se
realiza ejecutando los siguientes pasos:
1. Enumerar las variables en un orden arbitrario pero fijo durante el
procedimiento. S debe ser la variable con orden 1.
2. Para cada variable A de la gramatica original, siguiendo el orden elegido, modificar sus producciones de tal manera que el primer smbolo
del cuerpo de cada producci
on (primer smbolo a la derecha de la
flecha) sea un terminal o una variable con orden mayor que el de A.
Para lograrlo se usa el teorema de eliminacion de la recursividad a la
izquierda, Teorema 4.12.2, y el Lema 4.12.3, todas las veces que sea
necesario.
3. Utilizar el Lema 4.12.3 para modificar las producciones de las variables originales de tal manera que el primer smbolo del cuerpo de cada
producci
on sea un terminal. Esto se hace siguiendo el orden inverso
de enumeraci
on de las variables: u
ltima, pen
ultima, etc.
4. Utilizar de nuevo el Lema 4.12.3, para modificar las producciones de
las variables nuevas de tal manera que el primer smbolo del cuerpo
de cada producci
on sea un terminal.

122

LENGUAJES LIC Y GRAMATICAS


GIC

gram
atica (que esta en FNC):

Ejemplo

Encontrar una gramatica en FNG equivalente a la siguiente

G:

S AA | a
A AA | b

Paso 1: Aqu solamente hay un orden posible para variables: S, A.


Paso 2: En este paso s
olo hay que eliminar la recursividad a izquierda de
la variable A. Al hacerlo se obtiene la gramatica:

S AA | a
A b | bZ

Z A | AZ

Paso 3:

S bA | bZA | a
A b | bZ

Z A | AZ

Paso 4:

S bA | bZA | a
A b | bZ

Z b | bZ | BZZ

gram
atica (que
esta en FNC):

Ejemplo

Encontrar una gramatica en FNG equivalente a la siguiente

S AB | BC

A AB | a

B AA | CB | a

C a | b

Paso 1: Orden de las variables: S, B, A, C. Este orden es muy adecuado


porque el cuerpo de las producciones de B comienza con A o C, que
son variables de orden mayor.

S AB | BC

B AA | CB | a
A AB | a

C a | b

4.12. FORMA NORMAL DE GREIBACH (FNG)

Paso 2:

123

S AB | BC

B AA | CB | a
A a | aZ

Ca|b

Z B | BZ

Paso 3:

S aB | aZB | aAC | aZAC | aBC | bBC | aC

B aA | aZA | aB | bB | a
A a | aZ

Ca|b

Z B | BZ
Paso 4:

S aB | aZB | aAC | aZAC | aBC | bBC | aC

B aA | aZA | aB | bB | a
A a | aZ

Ca|b

Z aA | aZA | aB | bB | a | aAZ | aZAZ | aBZ | bBZ | aZ


El siguiente ejemplo ilustra que el procedimiento de conversi
on a la forma
FNG puede dar lugar a docenas de producciones, incluso a partir de una
gramatica relativamente sencilla.

gram
atica:

Ejemplo

Encontrar una gramatica en FNG equivalente a la siguiente

S AB

A AB | CB | a

B AB | b

C AC | c

Paso 1: Orden de las variables: S, A, B, C.

124

LENGUAJES LIC Y GRAMATICAS


GIC

Paso 2:

S AB

A CB | a | CBZ1 | aZ1
B CBB | aB | CBZ1 B | aZ1 B | b

C CBC | aC | CBZ1 C | aZ1 C | c

Z1 B | BZ1

Prosiguiendo con el paso 2, se elimina la recursividad a izquierda de


la variable C:

S AB

A CB | a | CBZ1 | aZ1

B CBB | aB | CBZ B | aZ B | b
1
1

C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2

Z1 B | BZ1

Z BC | BZ C | BCZ | BZ CZ
2
1
2
1
2

Paso 3:

S 14 producciones

A a | aZ1 | 6 producciones | 6 producciones

B aB | aZ B | b | 6 producciones | 6 producciones
1
C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2

Z1 B | BZ1

Z BC | BZ C | BCZ | BZ CZ
2
1
2
1
2

Paso 4: El n
umero de producciones de la nueva gramatica se incrementa
drasticamente:

S 14 producciones

A a | aZ1 | 6 producciones | 6 producciones

B aB | aZ1 B | b | 6 producciones | 6 producciones


C aC | aZ1 C | c | aCZ2 | aZ1 CZ2 | cZ2

Z1 15 producciones | 15 producciones

Z2 15 producciones | 15 producciones | 15 producciones |

15 producciones

La gramatica original tena 8 producciones; la nueva gramatica en


FNG tiene un total de 139 producciones.

4.13. LEMA DE BOMBEO PARA LIC

Ejercicios de la secci
on 4.12

125

Encontrar una gramatica en FNG equivalente a la siguiente GIC:

S CA | AC | a

A BA | AB | b

B AA | a | b

C AC | CC | a

Encontrar una gramatica en FNG equivalente a la siguiente GIC:

S BB | BC | b

A AC | CA | a

B BB | a

C BC | CA | a

Encontrar una gramatica en FNG equivalente a la siguiente GIC:

S SC | AA | a

A CA | AB | a

B AC | b

C CA | AS | b
Nota: hay que eliminar primero la recursividad de la variable S.

4.13.

Lema de bombeo para LIC

Una de las consecuencias m


as importantes de la Forma Normal de Chomsky
es el lema de bombeo para lenguajes independientes del contexto, el cual
es u
til, entre muchas aplicaciones, para demostrar que ciertos lenguajes no
son LIC.
Nos referiremos a gramaticas en FNC con variable inicial no recursiva.
Puesto que las producciones son unitarias (A a) o binarias (A BC),
en cada nodo el
arbol de una derivaci
on se ramifica en dos nodos, a lo sumo.
Tales arboles se denominan binarios. Si la producci
on S esta presente,
su u
nico prop
osito es generar la cadena .
4.13.1 Teorema. Sea G = (V, , S, P ) una gram
atica en FNC y w .
Si la longitud de la trayectoria m
as larga en un
arbol de derivaci
on de

S = w tiene k (o menos) nodos, entonces |w| 2k2 . Aqu k 2.

126

LENGUAJES LIC Y GRAMATICAS


GIC

Demostraci
on. La siguiente tabla muestra las relaciones obtenidas entre

k = n
umero de nodos de la trayectoria m
as larga de S = w y la longitud
de w, en los casos k = 2, k = 3, k = 4 y k = 5. En la tabla se muestran los
casos extremos, es decir, los
arboles con el mayor n
umero posible de nodos.
k2
Se observa que |w| 2 . Una demostraci
on rigurosa del caso general se
hace por induccion sobre k.
k = n
umero de nodos de

Arbol
de derivaci
on

Longitud de w

la trayectoria mas larga


S
|w| = 1 = 20 = 2k2

k=2

S
|w| 2 = 21 = 2k2

k=3

S
|w| 4 = 22 = 2k2

k=4

k=5

|w| 8 = 23 = 2k2

4.13.2 Corolario. Sea G = (V, , S, P ) una gram


atica en FNC y w .
(1) Si la longitud de la trayectoria m
as larga en un
arbol de derivaci
on de

S = w tiene k + 2 (o menos) nodos, entonces |w| 2k . Aqu k 0.

4.13. LEMA DE BOMBEO PARA LIC

127

(2) Si |w| > 2k (con k 0) entonces la longitud de la trayectoria m


as larga

en un
arbol de derivaci
on de S = w tiene m
as de k + 2 nodos.
Demostraci
on.
(1) Se sigue inmediatamente del Teorema 4.13.1.
(2) Es la afirmacion contra-recproca de la parte (1).
4.13.3. Lema de bombeo para LIC. Dado un LIC L, existe una constante n (llamada constante de bombeo de L) tal que toda z L con |z| > n
se puede descomponer en la forma z = uvwxy donde:
(1) |vwx| n.
(2) uv i wxi y L para todo i 0.
(3) v =
o x = .
Demostraci
on. Sea G = (V, , S, P ) una gramatica en FNC, con variable
inicial no recursiva, tal que L(G) = L. Tal gramatica existe por los Teoremas 4.11.1 y 4.11.2. Sea k = |V | = n
umero de variables de G y n = 2k . Sea
k
z L con |z| > n = 2 . Por la parte (2) del Corolario 4.13.2, la trayectoria

m
as larga en el
arbol de una derivaci
on S = z tiene m
as de k + 2 nodos.
Consideremos los u
ltimos k + 2 nodos de tal trayectoria (siguiendo el orden
que va desde la raz S hasta las hojas del arbol). El u
ltimo nodo de esa
trayectoria es un terminal a y los restantes k + 1 nodos son variables.
Como hay s
olo k variables en la gramatica, entonces hay por lo menos una
variable A = S repetida en la trayectoria. Por lo tanto, existen cadenas
u, v, w, x, y tales que

S = uAy,

A = vAx,

A = w.

As que

S = uAy = uvAxy = uvwxy = z.


La siguiente gr
afica ilustra la situacion:

128

LENGUAJES LIC Y GRAMATICAS


GIC

Puesto que la trayectoria m


as larga en el arbol de derivaci
on de A =

vAx = vwx tiene k+2 nodos o menos, por la parte (1) del Corolario 4.13.2,
podemos concluir que |vwx| 2k = n. Adem
as:

S = uAy = uvAxy = uv i Axi y = uv i wxi y,

para todo i 0.

Observese que el caso i = 0 corresponde a la derivaci


on S = uAy =
uwy.

Finalmente, la derivaci
on A = vAx se puede escribir como

A = BC = vAx
utilizando una producci
on de la forma A BC como primer paso. Se

deduce que u y x no pueden ser ambas porque se tendra BC = A,


lo cual es imposible en una gramatica en FNC (recuerdese que la u
nica
producci
on en la gramatica es, posiblemente, S ; pero S no aparece
en el cuerpo de ninguna producci
on de G ya que S no es recursiva). Se
deduce entonces que v =
o x = . Esto demuestra las propiedades (1),
(2) y (3) del lema de bombeo.

4.13. LEMA DE BOMBEO PARA LIC

129

Demostrar que el lenguaje L = {ai bi ci : i 0} sobre =

{a, b, c} no es un LIC.
Solucion. Argumento por contradicci
on. Si L fuera LIC, por el lema de
bombeo, existira una constante de bombeo n. Sea z = an bn cn ; se tiene que
z L y |z| > n. Por lo tanto, z se puede descomponer como z = an bn cn =
uvwxy con las propiedades (1), (2) y (3) del lema de bombeo. Puesto que
|vwx| n, en la cadena vwx no pueden aparecer los tres terminales a, b y c
simult
aneamente (para que aparezcan los tres terminales simult
aneamente,
una subcadena de an bn cn debe tener longitud n+2). Como v = o x = ,
se distinguen dos casos:
Ejemplo

Caso 1. Alguna de las cadenas v o x contiene dos tipos de terminales.


Entonces en uv 2 wx2 y aparecen algunas bes seguidas de aes o algunas
ces seguidas de bes. En cualquier caso, uv 2 wx2 y
/ L.
Caso 2. Las cadenas v y x contienen un s
olo tipo de terminal cada una
(o s
olo aes o s
olo bes o s
olo ces). Como en vwx no aparecen los tres
terminales a, b y c simult
aneamente, en la cadena bombeada uv 2 wx2 y
se altera el n
umero de dos de los terminales a, b, c, a lo sumo, pero no
de los tres. Por lo tanto, uv 2 wx2 y
/ L.
Pero el lema de bombeo afirma que uv 2 wx2 y L. Esta contradiccion muestra que L no es un LIC.

no es un LIC.

Ejemplo

Demostrar que el lenguaje L = {ai : i es primo} sobre = {a}

Solucion. Argumento por contradicci


on. Si L fuera LIC, por el lema de
bombeo, existira una constante de bombeo n. Sea z = am con m primo
m > n y m > 2 (m existe porque el conjunto de los n
umeros primos es
infinito). Entonces z L y |z| > n. Por lo tanto, z se puede descomponer
como z = am = uvwxy con las propiedades (1), (2) y (3) del lema de
bombeo.
Sea |u| + |w| + |y| = k; entonces |v| + |x| = m k 1. Por el lema de
bombeo, uv i wxi y L para todo i 0; es decir, |uv i wxi y| es primo para
todo i 0. Pero
|uv i wxi y| = k + |v i | + |xi | = k + i|v| + i|x| = k + i(|v| + |x|) = k + i(m k).
(i) Si k = 0, tomando i = m se obtiene que k + i(m k) = 0 + i(m 0) =
im = mm que no es primo, pues m > 2.
(ii) Si k = 1, tomando i = 0 se obtiene que k + i(m k) = 1 + i(m 1) =
1 + 0(m 1) = 1 que no es un n
umero primo.

130

LENGUAJES LIC Y GRAMATICAS


GIC

(iii) Si k > 1, tomando i = k se obtiene que


|uv k wxk y| = k + k(m k) = k(1 + m k),
el cual no es un n
umero primo pues k > 1 y como m k 1, entonces
1 + m k 2.
Por (i), (ii) y (iii) se puede escoger i de tal manera que |uv i wxi y| no sea un
n
umero primo, lo cual contradice que uv i wxi y L para todo i 0. Esta
contradicci
on muestra que L no es un LIC.

Ejercicios de la secci
on 4.13

Utilizar el lema de bombeo para demostrar que los siguientes lenguajes no


son LIC:
L = {ai bi cj : j i}, sobre = {a, b, c}.
L = {ai bj ck : 1 i j k}, sobre = {a, b, c}.
L = {0i 12i 0i : i 1}, sobre = {0, 1}.
L = {ai bi ci di : i 0}, sobre = {a, b, c, d}.
L = {ai bj ci dj : i, j 0}, sobre = {a, b, c, d}.
L = ww : w {0, 1} .
! L = {ai : i es un cuadrado perfecto}.

4.14.

Propiedades de clausura de los LIC

En la secci
on 3.2 se vio que los lenguajes regulares son cerrados bajo la
uni
on, la concatenaci
on, la estrella de Kleene y todas las operaciones booleanas. Los LIC poseen propiedades de clausura mucho m
as restringidas:
son cerrados para las operaciones regulares (Teorema 4.14.1) pero, en general, no son cerrados para interseccion, complementos ni diferencias (Teorema 4.14.2).
4.14.1 Teorema. La colecci
on de los lenguajes independientes del contexto
es cerrada para las operaciones regulares (uni
on, concatenaci
on y estrella
de Kleene). Es decir, dadas GIC G1 = (V1 , , S1 , P1 ) y G2 = (V2 , , S2 , P2 )
tales que L(G1 ) = L1 y L(G2 ) = L2 , se pueden construir GIC que generen
los lenguajes L1 L2 , L1 L2 y L1 , respectivamente.

4.14. PROPIEDADES DE CLAUSURA DE LOS LIC

131

Demostraci
on. Si perdida de generalidad, podemos suponer que G1 y G2
no tienen variables en com
un (en caso contrario, simplemente cambiamos
los nombres de las variables). Para construir una GIC G que genere L1 L2
introducimos una variable nueva S, la variable inicial de G, junto con las
producciones S S1 y S S2 . Las producciones de G1 y G2 se mantienen.
Concretamente,
G = V1 V2 {S}, , S, P1 P2 {S S1 , S S2 } .
Esquematicamente, G tiene el siguiente aspecto:
S S1 | S2
S1
..
..
.
.

producciones de G1

S2
..
..
.
.

producciones de G2

Claramente, L(G) = L1 L2 .
Una GIC G que genere L1 L2 se construye similarmente, a
nadiendo la
producci
on S S1 S2 . Es decir,
G = V1 V2 {S}, , S, P1 P2 {S S1 S2 } .
Esquematicamente, G es la gramatica:
S S1 S2
S1
..
..
.
.

producciones de G1

S2
..
..
.
.

producciones de G2

Claramente, L(G) = L1 L2 .
Para generar L1 se define G como
G = V1 {S}, , S, P1 {S S1 S, S } .
Esquematicamente, G es la gramatica:
S S1 S |
S1
..
..
.
.

producciones de G1

132

LENGUAJES LIC Y GRAMATICAS


GIC

una GIC que genere el lenguaje L L donde L = ba+ y L =


1 2
1
2

Ejemplo

Utilizar las construcciones del Teorema 4.14.1 para encontrar

{ai bj ai : i 0, j 1}.
Solucion. El lenguaje L1 se puede generar con la gramatica
S1 bA
A aA | a
y L2 con
S2 aS2 a | bB
B bB |
La siguiente gramatica genera L2 :

S3 S2 S3 |
S2 aS2 a | bB

B bB |

Finalmente, el lenguaje L1 L2 se puede generar con

S S1 S3

S1 bA

A aA | a

S3 S2 S3 |

S2 aS2 a | bB

B bB | .

4.14.2 Teorema. La colecci


on de los lenguajes independientes del contexto
no es cerrada (en general) para las siguientes operaciones:
(1) Intersecci
on.
(2) Complemento.
(3) Diferencia.
Demostraci
on.

(1) La interseccion de dos LIC puede ser un lenguaje que no es LIC. Considerense, como ejemplo, los lenguajes
L1 = {ai bi cj : i, j 0},
L2 = {ai bj cj : i, j 0}.

4.14. PROPIEDADES DE CLAUSURA DE LOS LIC

133

Tanto L1 como L2 son LIC porque son generados por las gramaticas
G1 y G2 , respectivamente:

S AB
S AB
G1 :
G2 :
A aAb |
A aA |

B cB |
B bBc |

Pero L1 L2 = {ai bi ci : i 0} no es un LIC, seg


un se mostro, usando
el lema de bombeo, en la secci
on 4.13.

(2) Razonamos por contradicci


on: si el complemento de todo LIC fuera un
LIC se podra concluir que la interseccion de dos LIC L1 y L2 sera un
LIC ya que L1 L2 = L1 L2 . Esto estara en contradicci
on con la
parte (1) del presente teorema.
(3) Razonamos por contradicci
on: si la diferencia de dos LIC cualesquiera
fuera un LIC se podra concluir que el complemento de un LIC L sera
on con
tambien un LIC ya que L = L. Esto estara en contradicci
la parte (2) del presente teorema.
El siguiente teorema afirma que los LIC tambien son cerrados bajo homomorfismos.
4.14.3 Teorema. Sea h : un homomorfismo. Si L es un LIC
sobre , entonces h(L) es un LIC sobre .
on consiste en transformar una gramatica
Demostraci
on. La demostraci
G que genere el lenguaje L en una gramatica G que genere h(L). Para ello
basta mantener las mismas variables de G y definir las producciones de G ,
a partir de las de G, cambiando cada terminal a por h(a). Es facil ver que
+
una derivaci
on S = w en G, con w , se puede transformar en una
+
derivaci
on S = h(w) en G ; esto muestra h(L) L(G ).
Para establecer la otra contenencia, es decir, L(G ) h(L), hay que
+
demostrar que si S =G z, con z , entonces z es de la forma z =
h(w) para alg
un w L. Esto puede hacerse considerando el arbol de la
+
derivaci
on S =G z. Dicho
arbol se puede transformar en un arbol de una
derivaci
on en G, modificando adecuadamente las hojas: las hojas del nuevo
arbol forman una cadena w y las hojas del arbol inicial forman la
cadena h(w).

{0i 1i 2i 3i : i 0}, sobre el alfabeto {0, 1, 2, 3} no es LIC.

Ejemplo

Utilizar homomorfismos para concluir que el lenguaje L =

134

LENGUAJES LIC Y GRAMATICAS


GIC

Solucion. La idea es convertir L en el lenguaje {ai bi ci : i 0}, que no es


LIC, seg
un se mostro en la secci
on 4.13. Razonamos de la siguiente manera:
si L fuera un LIC, lo sera tambien h(L), donde h es el homomorfismo
h : {0, 1, 2, 3} {a, b, c} definido por h(0) = a, h(1) = b, h(2) = c y
h(3) = . Pero
h(L) = {h(0)i h(1)i h(2)i h(3)i : i 0} = {ai bi ci : i 0}.
Por consiguiente, L no es un LIC.

Ejercicios de la secci
on 4.14

Utilizar las construcciones del Teorema 4.14.1 para encontrar GIC


que generen los siguientes lenguajes:
(i) a+ (a bab) (b a b).
(ii) (L1 L2 )L3 , donde L1 = ab a, L2 = ab+ y L3 = {ai bai : i 0}.
(iii) L1 L2 L3 , donde L1 = ab a, L2 = {ai bj cj di : i, j 1} y
L 3 = b+ .
Sea G = (V, , S, P ) una gramatica que genera al lenguaje L. La
gramatica G = V, , S, P {S SS, S } genera a L ?

(i) Mostrar que los dos lenguajes siguientes, sobre = {a, b, c, d},
son LIC:
L1 = {ai bi cj dj : i, j 1},
L2 = {ai bj cj dk : i, j, k 1}.
(ii) Demostrar que L1 L2 no es un LIC.

Utilizar homomorfismos para concluir que los siguientes lenguajes sobre el alfabeto {0, 1} no son LIC:
(i) L = {u : |u| es un n
umero primo}.
(ii) L = {u : |u| es un cuadrado perfecto}.
Demostrar que los LIC son cerrados para la operacion de reflexi
on.
Concretamente, demostrar que si L es un LIC, tambien lo es el lenguaje LR = {wR : w L}.

PARA GIC
4.15. ALGORITMOS DE DECISION

4.15.

135

Algoritmos de decisi
on para GIC

En esta secci
on consideraremos problemas de decisi
on para GIC, similares
a los problemas para aut
omatas presentados en la secci
on 3.6. Dada una
propiedad P, referente a gramaticas independientes del contexto, un problema de decisi
on para P consiste en buscar un algoritmo, aplicable a una
GIC arbitraria G, que responda SI o NO a la pregunta: satisface G la
propiedad P? Los algoritmos vistos en el presente captulo (para encontrar
las variables terminables, las alcanzables, las anulables, etc) son frecuentemente u
tiles en el dise
no de algoritmos de decisi
on m
as complejos.
Problema 1 (Problema de la vacuidad). Dada una gram
atica G =
(V, , S, P ), es L(G) = ?
Algoritmo de decisi
on: ejecutar el algoritmo para determinar el conjunto
TERM de variables terminables. L(G) = si y s
olo si S TERM.
Problema 2 (Problema de la pertenencia). Dada una GIC G =
(V, , S, P ) y una cadena w , se tiene w L(G)?
Para resolver este problema primero convertimos G a la forma FNC, con
variable inicial no recursiva, siguiendo el procedimiento de la secci
on 4.11.
A partir de una GIC G en FNC podemos dise
nar un algoritmo bastante
ineficiente para decidir si w L(G): se encuentran todas las posibles derivaciones a izquierda (o los
arboles de derivaci
on) que generen cadenas de
longitud n = |w|. M
as especficamente, las cadenas de longitud 1 se pueden
derivar u
nicamente con producciones de la forma S a. Las cadenas de
longitud 2 s
olo tienen
arboles de derivaci
on de la forma:
S
A1

A2
a1

a2

en los que aparecen exactamente 3 variables. Para derivar cadenas de longitud 3 s


olo se puede proceder de dos formas:
3

S = A1 A2 = B1 B1 A2 = a1 a2 a3 ,
o

S = A1 A2 = a1 A2 = a1 B1 B2 = a1 a2 a3 .
Los arboles de estas derivaciones son:

136

LENGUAJES LIC Y GRAMATICAS


GIC

S
A2

A1
B1

B2
a1

a3

A2

A1
a1

a2

B1

B2
a2

a3

Cada uno de estos


arboles tiene exactamente 5 nodos etiquetados con variables. La situacion general es la siguiente: un arbol de derivaci
on de una
cadena de longitud n tiene exactamente 2n 1 nodos etiquetados con variables. Puesto que la raz del
arbol es S y S no es recursiva, en un arbol
de derivaci
on de una cadena de longitud n hay exactamente 2n 2 nodos
interiores etiquetados con variables. La demostraci
on general puede hacerse
por induccion sobre n y la dejamos como ejercicio para el estudiante.
Por consiguiente, para determinar si una cadena dada de longitud n es
o no generada por G, consideramos todos los posibles arboles de derivaci
on
con 2n 2 variables interiores. Este algoritmo es ineficiente porque si G
tiene k variables, hay que chequear no menos de k 2n2 arboles (esto sin
contar las posibilidades para las hojas). Por consiguiente, el procedimiento
tiene complejidad exponencial con respecto al tama
no de la entrada.
Para resolver el problema de la pertenencia hay un algoritmo muy eficiente (su complejidad es polinomial) en el que se usa la llamada programaci
on din
amica o tabulaci
on din
amica, tecnica para llenar tablas progresivamente, re-utilizando informaci
on previamente obtenida. El algoritmo
que presentaremos se denomina algoritmo CYK (nombre que corresponde
a las iniciales de los investigadores Cocke, Younger y Kasami). El algoritmo
(exhibido en la pagina siguiente) tiene como entrada una GIC G en FNC
y una cadena de n terminales w = a1 a2 an ; se aplica llenando una tabla
de n filas (una por cada terminal de la entrada w) y n columnas. Xij es el
conjunto de variables de las que se puede derivar la subcadena de w cuyo
primer smbolo esta en la posicion i y cuya longitud es j. O sea,
+

Xij = conjunto de variables A tales que A = ai ai+1 ai+j1 .


Al determinar los conjuntos Xij se obtienen las posibles maneras de derivar
subcadenas de w que permitan construir una derivaci
on de la cadena completa w. La tabla se llena por columnas, de arriba hacia abajo; la primera
columna (j = 1) corresponde a las subcadenas de longitud 1, la segunda
columna (j = 2) corresponde a las subcadenas de longitud 2, y as sucesivamente. La u
ltima columna (j = n) corresponde a la u
nica subcadena de

PARA GIC
4.15. ALGORITMOS DE DECISION

137

longitud n que tiene w, que es la propia cadena w. Se tendr


a que w L(G)
si y s
olo si S X1n .
Algoritmo CYK

Entrada:
Gramatica G en FNC y cadena de n terminales w = a1 a2 an .
Inicializar:
j = 1. Para cada i, 1 i n,
Xij = Xi1 := conjunto de variables A tales que A ai
es una producci
on de G.

Repetir:
j := j + 1. Para cada i, 1 i n j + 1,
Xij := conjunto de variables A tales que A BC es
una producci
on de G, con B Xik y C Xi+k,jk ,
considerando todos los k tales que 1 k < j 1.

Hasta: j = n.
Salida: w L(G) si y solo si S X1n .

Ejemplo

Vamos a aplicar el algoritmo CYK a la gramatica:

G:

S BA | AC

A CC | b

B AB | a

C BA | a

y a la cadena w = bbab. Se trata de determinar si w L(G) o no. La tabla


obtenida al hallar los Xij , 1 i 4, es la siguiente:
j=1

j=2

j=3

j=4
{S, C}

i=1

{A}

{B}

i=2

{A}

{B, S}

{S, C}

i=3

{B, C}

{S, C}

i=1

{A}

138

LENGUAJES LIC Y GRAMATICAS


GIC

A continuaci
on se indica de manera detallada como se obtuvo la tabla
anterior, columna por columna:

j = 1.
j = 2.

j = 3.

j = 4.

Se obtiene directamente de las producciones de G.


Para X12 se buscan cuerpos de producciones en X11 X21 =
{A}{A} = {A}. As que X12 = { }.
Para X22 se buscan cuerpos de producciones en X21 X31 =
{A}{B, C} = {AB, AC}. As que X22 = {B, S}.
Para X23 se buscan cuerpos de producciones en X31 X41 =
{B, C}{A} = {BA, CA}. As que X23 = {S, C}.
Para X13 se buscan cuerpos de producciones en X11 X22
X12 X31 = {A}{B, S} { } = {AB, AS}. As que X13 = {B}.
Para X23 se buscan cuerpos de producciones en X21 X32
X22 X41 = {A}{S, C} {B, S}{A} = {AS, AC} {BA, SA}.
As que X23 = {S, C}.
Para X14 se buscan cuerpos de producciones en X11 X23
X12 X32 X13 X41 = {A}{S, C} { } {B}{A} = {AS, AC}
{BA}. As que X14 = {S, C}.

Puesto que la variable S pertenece al conjunto X14 , se concluye que la


cadena w = bbab es generada por G.
Consideremos ahora la entrada w = baaba, de longitud 5. Al hallar los
Xij , 1 i 5, se obtiene la tabla siguiente. Como S X15 , se concluye
que w L(G).

j=1

j=2

j=3

j=4

j=5
{S, B, C}

i=1

{A}

{B, S}

i=2

{B, C}

{A}

{A}

{S, B, C}

i=3

{B, C}

{S, C}

{A}

i=4

{A}

{B, S}

i=5

{B, C}

Al procesar la entrada w = aaba se obtiene la tabla siguiente. Como S no


pertenece al conjunto X14 , se deduce que w no es generada por G.

139

PARA GIC
4.15. ALGORITMOS DE DECISION

j=1

j=2

j=3

j=4

i=1

{B, C}

{A}

{B}

i=2

{B, C}

i=3

{B}

i=4

{B, C}

Problema 3 (Problema de la infinitud). Dada una gram


atica G =
(V, , S, P ), es L(G) infinito?
El lema de bombeo sirve para establecer un criterio que permite resolver
este problema (de manera an
aloga a lo que sucede en el caso de los lenguajes
regulares). El criterio aparece en el siguiente teorema.
4.15.1 Teorema. Sea G = (V, , S, P ) una gram
atica en FNC, con variable inicial no recursiva, tal que L(G) = L, y sea k = |V | = n
umero de
variables de G. El lenguaje L es infinito si y solo si contiene una cadena z
tal que 2k < |z| 2k+1 .
Demostraci
on. Si z L y 2k < |z| 2k+1 , entonces por la demostraci
on
del lema de bombeo, z se puede descomponer como z = uvwxy, donde
|vwx| 2k , v = . L posee infinitas cadenas: uv i wxi y para todo i 0.
Recprocamente, si L es infinito, existe z L con |z| 2k . Por la
demostraci
on del lema de bombeo, w = uvwxy donde |vwx| 2k ; adem
as,
k+1
k+1
v =
o x = . Si |z| 2 , la demostraci
on termina. Si |z| > 2
=
2k + 2k , puesto que |z| = |uy| + |vwx|, se tendr
a
|uwy| |uy| = |z| |vwx| |z| 2k > 2k .
De nuevo, si |uwy| < 2k+1 , la demostraci
on termina; en caso contrario, se
prosigue de esta forma hasta encontrar una cadena en L cuya longitud
satisfaga 2k < 2k+1 .
Utilizando el Teorema 4.15.1 podemos ahora presentar un algoritmo de
decisi
on para el problema de la infinitud:
1. Convertir la gramatica G dada a una gramatica equivalente G en
Forma Normal de Chomsky.
2. Aplicar el algoritmo CYK a G , con cada una de las cadenas |z| cuya
longitud satisfaga 2k < 2k+1 , siendo k el n
umero de variables de
G . L es infinito si y s
olo si alguna de las cadenas examinadas esta en
L(G ).

140

LENGUAJES LIC Y GRAMATICAS


GIC

Observese que este algoritmo tiene de complejidad exponencial ya que


k
el n
umero de cadenas z tales que 2k < |z| 2k+1 es m2 , donde m es el
n
umero de terminales en la gramatica dada.

Hay muchos problemas referentes a gramaticas que son indecidibles, es decir, problemas para los cuales no existen algoritmos de
decisi
on. Aunque no tenemos las herramientas para demostrarlo,
los siguientes problemas son indecidibles:
1. Dada una gramatica G, es G ambigua?
2. Dada una gramatica G, genera G todas las cadenas de terminales?, es decir, L(G) = ?
3. Dadas dos gramaticas G1 y G2 , generan G1 y G2 el mismo
lenguaje?, es decir, L(G1 ) = L(G2 )?

Ejercicios de la secci
on 4.15

Sea G = (V, , S, P ) una gramatica dada. Encontrar algoritmos para


los siguientes problemas de decisi
on:
(i) Genera G la cadena vaca ?

(ii) Hay dos variables diferentes A y B tales que A = B?


(iii) Hay en L(G) alguna cadena de longitud 1250? Ayuda: hay un
n
umero finito de cadenas con longitud 1250.
(iv) Hay en L(G) alguna cadena de longitud mayor que 1250? Ayuda: habra un n
umero infinito de cadenas por examinar; usar el
Teorema 4.15.1.
(v) Hay en L(G) por lo menos 1250 cadenas? Ayuda: usar la misma
idea del problema (iv).
Encontrar un algoritmo para el siguiente problema de decisi
on: dada
una gramatica G = (V, , S, P ) y una variable A V , es A recur+
siva?, es decir, existe una derivaci
on de la forma A = uAv, con
u, v (V ) ?
Encontrar un algoritmo para el siguiente problema de decisi
on: dado
un lenguaje finito L y una GIC G, se tiene L L(G)?

PARA GIC
4.15. ALGORITMOS DE DECISION

141

Sea G la gramatica

G:

S BA | AB

A CA | a

B BB | b

C BA | c

Ejecutar el algoritmo CYK para determinar si las siguientes cadenas


w son o no generadas por G:
(i)
(ii)

w = bca.
w = acbc.

(iii)
(iv)

w = cabb.
w = bbbaa.

Captulo

Automatas con pila


En el presente captulo presentamos el modelo de automata requerido para
aceptar los lenguajes independientes del contexto: el aut
omata con pila nodeterminista. Existe tambien la versi
on determinista pero, a diferencia de
lo que sucede con los modelos AFD y AFN, los automatas con pila deterministas y no-deterministas no resultan ser computacionalmente equivalentes.

5.1.

Aut
omatas con Pila Deterministas (AFPD)

Un Aut
omata Finito con Pila Determinista (AFPD) es una 7-upla,
M = (Q, q0 , F, , , z0 , ), con los siguientes componentes:
1. Q es el conjunto (finito) de estados internos de la unidad de control.
2. q0 Q es el estado inicial.
3. F es el conjunto de estados finales o de aceptaci
on, = F Q.
4. es el alfabeto de entrada, tambien llamado alfabeto de cinta.
5. es el alfabeto de pila.
6. z0 es el marcador de fondo, tambien llamado smbolo inicial de
pila (z0 no pertenece al alfabeto de entrada ).
7. es la funcion de transicion del automata:
: Q ( ) (Q ).
143

144

CAPITULO 5. AUTOMATAS
CON PILA

Como en los modelos ya considerados (AFD, AFN y AFN-), un AFPD


procesa cadenas sobre una cinta de entrada semi-infinita, pero hay una
cinta adicional, llamada pila, que es utilizada por el automata como lugar
de almacenamiento. En un momento determinado, la unidad de control del
automata escanea un smbolo a sobre la cinta de entrada y el smbolo s en
el tope o cima de la pila, como lo muestra la siguiente gr
afica:
..
.

s
..
.

q
La transicion
(q, a, s) = (q , )
representa un paso computacional: la unidad de control pasa al estado q
y se mueve a la derecha; adem
as, borra el smbolo s que esta en el tope de
la pila, escribe la cadena (cadena que pertenece a ) y pasa a escanear
el nuevo tope de la pila. La gr
afica que aparece en la parte superior de la
pagina siguiente ilustra un paso computacional. Recalcamos que en cada
momento, el aut
omata s
olo tiene acceso al smbolo que esta en el tope de
la pila; adem
as, el contenido de la pila siempre se lee desde arriba (el tope)
hacia abajo. Por estas dos razones la pila se dibuja verticalmente.
Casos especiales de transiciones:
1. (q, a, s) = (q , s). En este caso, el contenido de la pila no se altera.
2. (q, a, s) = (q , ). El smbolo s en el tope de la pila se borra y la
unidad de control pasa a escanear el nuevo tope de la pila, que es el
smbolo colocado inmediatamente debajo de s.

145

5.1. AUTOMATAS
CON PILA DETERMINISTAS (AFPD)

..
.
Un paso
computacional

..
.

..
.

..
.

..
.

q
(q, a, s) = (q , )

a
q

3. (q, , s) = (q , ). Esta
es una transicion o transicion espontanea:
el smbolo sobre la cinta de entrada no se procesa y la unidad de
control no se mueve a la derecha, pero el tope s de la pila es reemplazado por la cadena . Para garantizar el determinismo, (q, a, s)
y (q, , s), con a , no pueden estar simult
aneamente definidos
(de lo contrario el aut
omata tendra una opci
on no-determinista). Las
transiciones espontaneas en un AFPD permiten que el automata cambie el contenido de la pila sin procesar (o consumir) smbolos sobre
la cinta de entrada.
Configuraci
on o descripci
on instant
anea. Es una tripla (q, au, s) que
representa lo siguiente: el aut
omata esta en el estado q, au es la parte no
procesada de la cadena de entrada y la unidad de control esta escaneando el
smbolo a. La cadena s es el contenido total de la pila; siendo s el smbolo
colocado en el tope.
La notaci
on (q, au, s) para configuraciones instantaneas es muy comoda: para representar el paso computacional de la figura que aparece arriba
escribimos simplemente
(q, au, s) (q , u, ).
Aqu el aut
omata utilizo la transicion (q, a, s) = (q , ).
La notaci
on

(q, u, ) (p, v, )

146

CAPITULO 5. AUTOMATAS
CON PILA

significa que el aut


omata pasa de la configuraci
on instant
anea (q, u, ) a la
configuraci
on instantanea (p, v, ) en cero, uno o m
as pasos computacionales.
Configuraci
on inicial. Para una cadena de entrada w , la configuraci
on inicial es (q0 , w, z0 ). Al comenzar el procesamiento de toda cadena de
entrada, el contenido de la pila es z0 , que sirve como marcador de fondo.
Configuraci
on de aceptaci
on. La configuraci
on (p, , ), siendo p un
estado final o de aceptaci
on, se llama configuraci
on de aceptaci
on. Esto
significa que, para ser aceptada, una cadena de entrada debe ser procesada completamente y la unidad de control debe terminar en un estado de
aceptaci
on. La cadena que queda en la pila puede ser cualquier cadena
perteneciente a .
Lenguaje aceptado por un AFPD. El lenguaje aceptado por un AFPD
M se define como

L(M ) := {w : (q0 , w, z0 ) (p, , ), p F }.


O sea, una cadena es aceptada si se puede ir desde la configuracion inicial
hasta una configuraci
on de aceptaci
on, en cero, uno o m
as pasos.

En el modelo AFPD se permite que la transicion (q, a, s) no


este definida, para algunos valores q Q, a , s . Esto implica que el computo de algunas cadenas de entrada puede
abortarse sin que se procesen completamente.

No se debe confundir la tripla que aparece en la funcion de transicion (q, a, s) con la tripla (q, u, ) que representa una configuraci
on instantanea.

La definicion de la funcion de transicion requiere que haya por


lo menos un smbolo en la pila. No hay computos con pila vaca.

Para los aut


omatas con pila se pueden hacer diagramas de transiciones, similares a los ya conocidos, pero resultan de poca utilidad
practica ya que el procesamiento completo de una cadena de entrada depende del contenido de la pila, el cual puede cambiar en
cada paso computacional.

Los analizadores sintacticos en compiladores se comportan generalmente como aut


omatas con pila deterministas.


5.1. AUTOMATAS
CON PILA DETERMINISTAS (AFPD)

147

Un AFPD puede simular un AFD simplemente ignorando la pila; de esto


se deduce que los lenguajes regulares son aceptados por aut
omatas AFPD.
El siguiente teorema establece formalmente este resultado.
5.1.1 Teorema. Todo lenguaje regular L es aceptado por alg
un AFPD.
Demostraci
on. Sea M = (Q, q0 , F, , ) un AFD que acepta a L. El AFPD
M = (Q, q0 , F, , , z0 , ) definido haciendo = {z0 } y
(q, a, z0 ) = ((q, a), z0 ), para todo a , q Q,
satisface claramente L(M ) = L(M ) = L.
Sin usar la pila un AFPD no puede hacer nada m
as que un AFD, pero
utilizando la pila como lugar de almacenamiento, un AFPD puede aceptar
lenguajes no regulares, como se muestra en el siguiente ejemplo.

Dise
nar un AFPD que acepte el lenguaje L = {ai bi : i 1},

sobre el alfabeto = {a, b}. Recordemos que L no es regular


y no puede ser aceptado por ning
un automata normal (sin pila).
Ejemplo

Solucion. La idea es copiar las aes en la pila y borrar luego una a por cada b
que sea leda sobre la cinta. Una cadena sera aceptada si es procesada completamente y en la pila s
olo queda el marcador de fondo z0 . Concretamente,
M = (Q, q0 , F, , , z0 , ), donde
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
y la funcion de transicion esta dada por:
(q0 , a, z0 ) = (q0 , Az0 ),
(q0 , a, A) = (q0 , AA),
(q0 , b, A) = (q1 , ),
(q1 , b, A) = (q1 , ),
(q1 , , z0 ) = (q2 , z0 ).
Podemos ilustrar el procesamiento de varias cadenas de entrada. Sea, inicialmente, u = aaabbb.
(q0 , aaabbb, z0 ) (q0 , aabbb, Az0 ) (q0 , abbb, AAz0 ) (q0 , bbb, AAAz0 )
(q1 , bb, AAz0 ) (q1 , b, Az0 ) (q1 , , z0 ) (q2 , , z0 ).

148

CAPITULO 5. AUTOMATAS
CON PILA

La u
ltima es una configuraci
on de aceptaci
on; por lo tanto la cadena
u = aaabbb es aceptada.
Para la cadena de entrada v = aabbb, se obtiene el siguiente procesamiento:
(q0 , aabbb, z0 ) (q0 , abbb, Az0 ) (q0 , bbb, AAz0 ) (q1 , bb, Az0 )
(q1 , b, z0 ) (q2 , b, z0 ).

[c
omputo abortado]

Observese que el aut


omata ha ingresado al estado de aceptaci
on q2 pero
la cadena de entrada no es aceptada debido a que no se ha procesado
completamente; (q2 , b, z0 ) no es una configuraci
on de aceptaci
on.
Para la cadena de entrada w = aaabb, se tiene:
(q0 , aaabb, z0 ) (q0 , aabb, Az0 ) (q0 , abb, AAz0 ) (q0 , bb, AAAz0 )
(q1 , b, AAz0 ) (q1 , , Az0 ).
A pesar de que se ha procesado completamente la cadena de entrada w, la
configuraci
on (q0 , , Az0 ) no es de aceptaci
on. Por lo tanto, w = aaabb no
es aceptada.

Ejemplo

Dise
nar un AFPD que acepte el lenguaje
L = wcwR : w {a, b} .

sobre el alfabeto = {a, b, c}. N


otese que las cadenas w y wR s
olo poseen
aes y/o bes.
Solucion. La idea es acumular los smbolos en la pila hasta que aparezca
la c. Luego se comparan los smbolos ledos con los almacenados en la pila,
borrando en cada paso el tope de la pila. La cadena de entrada sera aceptada
si es procesada completamente y en la pila s
olo queda el marcador de fondo
z0 . En detalle, M = (Q, q0 , F, , , z0 , ), donde
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },


5.2. AUTOMATAS
CON PILA NO-DETERMINISTAS (AFPN)

149

y la funcion de transicion esta dada por:


(q0 , a, z0 ) = (q0 , Az0 ),
(q0 , b, z0 ) = (q0 , Bz0 ),
(q0 , c, z0 ) = (q2 , z0 )

(para aceptar la cadena c),

(q0 , a, A) = (q0 , AA),


(q0 , a, B) = (q0 , AB),
(q0 , b, A) = (q0 , BA),
(q0 , b, B) = (q0 , BB),
(q0 , c, A) = (q1 , A),
(q0 , c, B) = (q1 , B),
(q1 , a, A) = (q1 , ),
(q1 , b, B) = (q1 , ),
(q1 , , z0 ) = (q2 , z0 ).

Ejercicios de la secci
on 5.1

Dise
nar AFPD que acepten los siguientes lenguajes sobre = {a, b}:
(i) L = {ai b2i : i 1}.
(ii) L = {a2i bi : i 1}.
Dise
nar AFPD que acepten los siguientes lenguajes sobre = {0, 1}:
(i) L = {0i 1j 0i : i, j 1}.
(ii) L = {1i 0j 1i+j : i, j 1}.

5.2.

Aut
omatas con pila no-deterministas (AFPN)

Un Aut
omata Finito con Pila No-Determinista (AFPN) consta de
los mismos siete par
ametros de un AFPD, M = (Q, q0 , F, , , z0 , ), pero
la funcion de transicion esta definida como:
: Q ( ) f (Q ),
donde f (Q ) es el conjunto de subconjuntos finitos de Q . Para
q Q, a {} y s , (q, a, s) es de la forma
(q, a, s) = {(p1 , 1 ), (p2 , 2 ), . . . , (pk , k )}.

150

CAPITULO 5. AUTOMATAS
CON PILA

El significado de esta transicion es: al leer el smbolo a sobre la cinta


de entrada, la unidad de control puede pasar (aleatoriamente) a uno de
los estados pi (1 i k) y se mueve a la derecha. Sobre la pila hace
lo siguiente: borra el smbolo s que esta en el tope y escribe la cadena i
(cadena que pertenece a ).
A diferencia de lo que sucede con los AFPD, en el modelo AFPN las
transiciones , (q, , s), no tienen restriccion alguna.
El lenguaje aceptado por un AFPN M se define como:

L(M ) := {w : existe un computo (q0 , w, z0 ) (p, , ), p F }.


O sea, una cadena w es aceptada si existe por lo menos un procesamiento
de w desde la configuraci
on inicial hasta una configuraci
on de aceptaci
on.
La cadena que queda en la pila puede ser cualquier cadena de .

Ejemplo

Dise
nar un AFPN que acepte el lenguaje {ai bi : i 0}, sobre
el alfabeto = {a, b}.

Solucion. Para aceptar la cadena vaca se necesita una transicion desde


el estado inicial. El aut
omata presentado a continuaci
on coincide con el
automata del primer ejemplo de la secci
on 5.1, excepto por dicha transicion
espontanea. M = (Q, q0 , F, , , z0 , ) donde
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
y la funcion de transicion es:
(q0 , , z0 ) = {(q2 , z0 )}

(para aceptar ),

(q0 , a, z0 ) = {(q0 , Az0 )},


(q0 , a, A) = {(q0 , AA)},
(q0 , b, A) = {(q1 , )},
(q1 , b, A) = {(q1 , )},
(q1 , , z0 ) = {(q2 , z0 )}.
En este aut
omata el no-determinismo surge u
nicamente por la presencia
simult
anea de (q0 , , z0 ) y (q0 , a, z0 ).


5.2. AUTOMATAS
CON PILA NO-DETERMINISTAS (AFPN)

el alfabeto = {a, b} con igual n


umero de aes que de bes.

Ejemplo

151

Dise
nar un AFPN que acepte el lenguaje de las cadenas sobre

Solucion. La idea es acumular las aes o bes consecutivas en la pila. Si en el


tope de la pila hay una A y el automata lee una b, se borra la A; similarmente, si en el tope de la pila hay una B y el automata lee una a, se borra
la B. La cadena de entrada sera aceptada si es procesada completamente y
en la pila s
olo queda el marcador de fondo z0 . Solo se requieren dos estados.
Concretamente, M = (Q, q0 , F, , , z0 , ), donde
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 },
F = {q1 },
y la funcion de transicion esta dada por:
(q0 , a, z0 ) = {(q0 , Az0 )},
(q0 , b, z0 ) = {(q0 , Bz0 )},
(q0 , a, A) = {(q0 , AA)},
(q0 , b, B) = {(q0 , BB)},
(q0 , a, B) = {(q0 , )},
(q0 , b, A) = {(q0 , )},
(q0 , , z0 ) = {(q1 , z0 )}.
El no-determinismo se presenta u
nicamente por la presencia simult
anea de
(q0 , a, z0 ), (q0 , b, z0 ) y (q0 , , z0 ).
En contraste con lo que sucede con los modelos AFD y AFN, los modelos
de automata con pila determinista (AFPD) y no-determinista (AFPN) no
resultan ser computacionalmente equivalentes: existen lenguajes aceptados
por aut
omatas AFPN que no pueden ser aceptados por ning
un AFPD. Un
ejemplo concreto es el lenguaje L = {wwR : w }. Como se mostrara a
continuaci
on, se puede construir un automata con pila no-determinista para
aceptar a L, pero no es posible dise
nar ning
un AFPD que lo haga. La
demostraci
on de esta imposibilidad es bastante complicada y no la podemos
presentar en el presente curso.

donde = {a, b}. No es difcil ver que L es el lenguaje de los

Ejemplo

Dise
nar un AFPN que acepte el lenguaje L = {wwR : w },

palndromos de longitud par.

152

CAPITULO 5. AUTOMATAS
CON PILA

Solucion. En el u
ltimo ejemplo de la secci
on 5.1 se construy
o un AFPD
que acepta el lenguaje {wcwR : w {a, b} }. El lenguaje L del presente
ejemplo es similar, excepto que ya no aparece el separador c entre w y wR .
El no-determinismo se puede usar para permitirle al automata la opcion de
adivinar cu
al es la mitad de la cadena de entrada. Si acierta, procedera a
comparar el resto de la cadena de entrada con los smbolos acumulados en
la pila. Si no acierta, el aut
omata continuar
a acumulando smbolos en la
pila y no llegar
a a un estado de aceptaci
on. Si la cadena de entrada tiene la
forma deseada, entre todos los computos posibles estara aquel en el que el
automata adivina correctamente cu
ando ha llegado a la mitad de la cadena.
M se define como M = (Q, q0 , F, , , z0 , ) donde
= {a, b},
= {z0 , A, B},
Q = {q0 , q1 , q2 },
F = {q2 },
y la funcion de transicion esta dada por:
(q0 , a, z0 ) = {(q0 , Az0 )},
(q0 , b, z0 ) = {(q0 , Bz0 )},
(q0 , , z0 ) = {(q2 , z0 )}

(para aceptar ),

(q0 , a, A) = {(q0 , AA), (q1 , )},


(q0 , a, B) = {(q0 , AB)},
(q0 , b, A) = {(q0 , BA)},
(q0 , b, B) = {(q0 , BB), (q1 , )},
(q1 , a, A) = {(q1 , )},
(q1 , b, B) = {(q1 , )},
(q1 , , z0 ) = {(q2 , z0 )}.
Entre estas transiciones se destacan
(q0 , a, A) = {(q0 , AA), (q1 , )},
(q0 , b, B) = {(q0 , BB), (q1 , )}
las cuales le permiten al aut
omata una opci
on no-determinista: o seguir
acumulando smbolos en la pila, en el estado q0 , o suponer que se ha llegado
a la mitad de la cadena de entrada. En este u
ltimo caso, la unidad de control


5.2. AUTOMATAS
CON PILA NO-DETERMINISTAS (AFPN)

153

pasa al estado q1 y comienza a borrar los smbolos ya almacenados en la


pila.

Ejercicios de la secci
on 5.2

Dise
nar APFN que acepten los siguientes lenguajes:
(i) L = {0i 1j : i, j 0, i = j}, sobre = {0, 1}.
(ii) L = {ai bj : i j 0}.
!(iii) L = {a2i b3i : i 0}, sobre = {a, b}.
!(iv) L = {0i 1j : 0 i j 2i}, sobre = {0, 1}.
Como se demostr
o en la secci
on 4.13, el lenguaje L = {ai bi ci : i 0}
no es LIC y, por consiguiente, no puede ser aceptado por ning
un
aut
omata con pila. No obstante, podramos concebir el siguiente plan
para aceptar a L: acumular en la pila dos Aes por cada a leda en
la cinta, borrar luego una A por cada b leda y, finalmente, borrar
una A por cada c. Si la cadena de entrada es de la forma ai bi ci , se
llegar
a al marcador de fondo z0 en el preciso momento en el que se
consume completamente la entrada. Concretamente, M esta definido
como M = (Q, q0 , F, , , z0 , ) donde
= {a, b, c},
= {z0 , A},
Q = {q0 , q1 , q2 , q3 , q4 },
F = {q4 },
y la funcion de transicion esta dada por:
(q0 , , z0 ) = {(q4 , z0 )}

(para aceptar ),

(q0 , a, z0 ) = {(q1 , AAz0 )},


(q1 , a, A) = {(q1 , AAA)},
(q1 , b, A) = {(q2 , )},
(q2 , b, A) = {(q2 , )},
(q2 , c, A) = {(q3 , )},
(q3 , c, A) = {(q3 , )},
(q3 , , z0 ) = {(q4 , z0 )}.
Acepta este aut
omata el lenguaje {ai bi ci : i 0}? En caso contrario,
que lenguaje acepta?

154

CAPITULO 5. AUTOMATAS
CON PILA

5.3.

Aceptaci
on por pila vaca

En todos los modelos de aut


omatas que hemos considerado en este curso, la aceptaci
on de cadenas esta determinada por los estados finales o de
aceptaci
on. Para los aut
omatas con pila existe otra noci
on de aceptaci
on:
la aceptaci
on por pila vaca, definida a continuaci
on. Cuando se usa esta noci
on, los aut
omatas no requieren un conjunto F de estados finales,
solamente los seis restantes componentes: Q, q0 , , , z0 y .
5.3.1 Definici
on. Dado un aut
omata con pila M = (Q, q0 , , , z0 , ), ya
sea AFPD o AFPN, el lenguaje aceptado por M por pila vaca se
define como

N (M ) := {w : (q0 , w, z0 ) (p, , )}.


O sea, una cadena es aceptada por pila vaca si se puede ir, en cero, uno o
m
as pasos, desde la configuraci
on inicial hasta una configuraci
on en la que
la pila este completamente desocupada1 . N
otese que, para ser aceptada, la
cadena de entrada w debe ser procesada completamente.
Para aut
omatas AFPN las nociones de aceptaci
on por pila vaca y por
estados finales resultan ser equivalentes, como se establece en los dos siguientes teoremas. Es importante anotar que para automatas deterministas
AFPD los dos tipos de aceptaci
on no resultan ser equivalentes.
5.3.2 Teorema. Si L = L(M ) para alg
un aut
omata con pila AFPN M ,

entonces L = N (M ) para alg


un AFPN M . Es decir, M acepta por pila
vaca lo que M acepta por estado final.
Demostraci
on. Sea M = (Q, q0 , F, , , z0 , ). M se dise
na modificando
M de tal manera que vace su pila cuando M haya aceptado una cadena
de entrada. Concretamente, se define M como
M = (Q {p0 , p}, p0 , , {r0 }, r0 , )
donde p0 (estado inicial) y p son estados nuevos, y r0 es el nuevo marcador
de fondo. La funcion de transicion se define as:
1. (p0 , , r0 ) = {(q0 , z0 r0 )}. Transicion mediante la cual el nuevo
smbolo inicial de pila se coloca en el fondo. Esto impedir
a que una
cadena sea accidentalmente aceptada si el automata original M vaca
la pila.
1
La N en la notaci
on N (M ) proviene de la expresi
on pila nula, sin
onimo de pila
vaca.

155

POR PILA VACIA


5.3. ACEPTACION

2. (q, a, s) (q, a, s) para todo q Q, a o a = y s . Esto


quiere decir que M simula a M : todas las transiciones del automata
original tambien se pueden realizar en el nuevo automata.
3. (p, s) (q, , s) para todo q F , s {r0 }. Mediante esta
transicion , M pasa al nuevo estado p siempre que q sea un estado
de aceptaci
on de M .
4. (p, , s) = {(p, )}. Mediante esta transicion , M borra todo el
contenido de la pila.
Observese que las transiciones de los numerales 3 y 4 no consumen ning
un
smbolo en la cadena de entrada. Adem
as, la u
nica manera de que M
vace completamente la pila es ingresando al estado p, lo cual puede hacer
u
nicamente desde un estado de aceptaci
on de M .
Si w es aceptada por M , o sea si w L(M ), M realiza un computo de
la forma

(q0 , w, z0 ) (q, , )
donde q F y . Entonces en M se puede efectuar el siguiente
computo:

(p0 , w, r0 ) (q0 , w, z0 r0 ) (q, , r0 ) (p, , r0 ) (p, , ).


Por lo tanto, w N (M ).
Un razonamiento similar muestra que w N (M ) implica w L(M )
(ejercicio para el estudiante). En conclusi
on, L(M ) = N (M ).
5.3.3 Teorema. Si L = N (M ) para alg
un aut
omata con pila AFPN M ,

entonces L = L(M ) para alg


un AFPN M . Es decir, M acepta por estado
final lo que M acepta por pila vaca.
Demostraci
on. Sea M = (Q, q0 , , , z0 , ) un AFPN que acepta por pila
vaca. M se dise
na a
nadiendo un nuevo estado qf a M de tal manera que M
ingrese a tal estado (sera el u
nico estado de aceptaci
on) solamente cuando
M haya vaciado su pila. Concretamente, se define M como
M = (Q {p0 , pf }, p0 , {pf }, , {r0 }, r0 , )
donde p0 (estado inicial) y pf (
unico estado de aceptaci
on) son estados
nuevos, y r0 es el nuevo smbolo inicial de pila. La funcion de transicion
se define as:

156

CAPITULO 5. AUTOMATAS
CON PILA

1. (p0 , , r0 ) = {(q0 , z0 r0 )}. Transicion mediante la cual el nuevo


smbolo inicial de pila se coloca en el fondo. Cuando M encuentre el
marcador de fondo r0 , sabr
a que M ha vaciado su pila.
2. (q, a, s) (q, a, s) para todo q Q, a o a = y s . Esto
quiere decir que M simula a M : todas las transiciones del automata
original tambien se pueden realizar en el nuevo automata.
3. (pf , s) (q, , r0 ) para todo q Q. Mediante esta transicion , M
pasa al estado de aceptaci
on pf cuando detecte el marcador de fondo

r0 . O sea, M acepta cuando M vace su pila.


Si w es aceptada por M , o sea si w N (M ), M realiza un computo de la
forma

(q0 , w, z0 ) (q, , )
donde q Q. Entonces en M se puede efectuar el siguiente computo:

(p0 , w, r0 ) (q0 , w, z0 r0 ) (q, , r0 ) (pf , , r0 ).


Por lo tanto, w L(M ).
Un razonamiento similar muestra que w L(M ) implica w N (M )
(ejercicio para el estudiante). En conclusi
on, N (M ) = L(M ).

Ejercicios de la secci
on 5.3

Modificar los aut


omatas de los tres ejemplos de la secci
on 5.2 para
que acepten por pila vaca y no por estado final.
Dise
nar AFPN que acepten por pila vaca los siguientes lenguajes:
(i) L = {ai b2i : i 1}, sobre = {a, b}.
(ii) L = {a2i bi : i 1}, sobre = {a, b}.
(iii) L = {0i 1j : i, j 0, i = j}, sobre = {0, 1}.
!(iv) L = {0i 1j : 0 i j 2i}, sobre = {0, 1}.
! Completar los detalles faltantes en las demostraciones de los Teoremas 5.3.2 y 5.3.3. Por que estas demostraciones no son validas para
aut
omatas deterministas?


5.4. AUTOMATAS
CON PILA Y LIC. PARTE I.

5.4.

157

Aut
omatas con pila y LIC. Parte I.

Los lenguajes aceptados por los AFPN son exactamente los lenguajes inde
pendientes del contexto. Este
es un resultado an
alogo al Teorema de Kleene
para lenguajes regulares, aunque en el caso de los automatas con pila, los
modelos deterministas no son computacionalmente equivalentes a los nodeterministas. En la presente secci
on consideraremos la primera parte de
la correspondencia entre AFPN y LIC.
5.4.1 Teorema. Dada una GIC G, existe un AFPN M tal que L(G) =
L(M ).
Bosquejo de la demostraci
on. Para una gramatica G = (, V, S, P ) dada, se
construye un AFPN que utiliza la pila para simular la derivaci
on de cadenas
realizada por G. M requiere solamente tres estados, independientemente del
n
umero de variables y producciones de G. Especficamente, el automata M
se define como M = (Q, q0 , F, , , z0 , ), donde Q = {q0 , q1 , q2 }, F = {q2 }
y = V {z0 }. La funcion de transicion se define de la siguiente
manera:
1. (q0 , , z0 ) = {(q1 , Sz0 )}. Transicion mediante la cual M coloca el
smbolo inicial de la gramatica, S, en el tope de la pila al iniciar el
procesamiento de una cadena de entrada.
2. Para cada variable A V ,
(q1 , , A) = {(q1 , u) : A u es una producci
on de la gramatica G}.
Mediante estas transiciones, M utiliza la pila para simular las derivaciones: si el tope de la pila es A y en la derivaci
on se usa la producci
on
A u, el tope de la pila A es substituido por u.
3. Para cada smbolo terminal a , (q1 , a, a) = {(q1 , )}. Mediante estas transiciones, M borra los terminales del tope de la pila al
consumirlos sobre la cinta de entrada.
4. (q1 , , z0 ) = {(q2 , z0 )}. M ingresa al estado de aceptaci
on q2 cuando
detecta el marcador de fondo z0 .

El automata M esta dise


nado de tal forma que si S = w es una derivaci
on
a izquierda en la gramatica G, entonces existe un procesamiento

(q0 , w, s0 ) (q0 , w, Ss0 ) (q2 , , z0 )

158

CAPITULO 5. AUTOMATAS
CON PILA

que simula la derivaci


on.

Recprocamente, puede demostrarse que si (q0 , w, z0 ) (q2 , , z0 ) enton


ces S = w en la gramatica G.

Ejemplo

Sea G la gramatica:

S aAbS | bBa |
G : A aA | a

B bB | b

Seg
un la construcci
on del Teorema 5.4.1, el automata M esta dado por
M = (Q, q0 , F, , , z0 , ) donde
Q = {q0 , q1 , q2 },
F = {q2 },
= {a, b, S, A, B, z0 },
y la funcion de transicion es:
(q0 , , z0 ) = {(q1 , Sz0 )},
(q1 , , S) = {(q1 , aAbS), (q1 , bBa), (q1 , )},
(q1 , , A) = {(q1 , aA), (q1 , a)},
(q1 , , B) = {(q1 , bB), (q1 , b)},
(q1 , a, a) = {(q1 , )},
(q1 , b, b) = {(q1 , )},
(q1 , , z0 ) = {(q2 , z0 )}.
Podemos ilustrar la correspondencia entre derivaciones en G y procesamientos en M con la cadena aabbba, la cual tiene la siguiente derivaci
on a
izquierda:
S = aAbS = aabS = aabbBa = aabbba.
El automata M simula esta derivaci
on de la cadena aabbba as:
(q0 , aabbba, z0 ) (q1 , aabbba, Sz0 ) (q1 , aabbba, aAbSz0 )
(q1 , abbba, AbSz0 ) (q1 , abbba, abSz0 )
(q1 , bbba, bSz0 ) (q1 , bba, Sz0 ) (q1 , bba, bBaz0 )
(q1 , ba, Baz0 ) (q1 , ba, baz0 ) (q1 , a, az0 )
(q1 , , z0 ) (q2 , , z0 ).


5.4. AUTOMATAS
CON PILA Y LIC. PARTE I.

159

sobre = {a, b}, es decir, el lenguaje L = {ww R : w }:

Ejemplo

La siguiente gramatica genera los palndromos de longitud par,


S aSa | bSb | .

Siguiendo el procedimiento del Teorema 5.4.1 podemos construir un AFPN


que acepta a L. M = (Q, q0 , F, , , z0 , ) donde
Q = {q0 , q1 , q2 },
F = {q2 },
= {a, b, S, z0 }.
La funcion de transicion esta dada por:
(q0 , , z0 ) = {(q1 , Sz0 )},
(q1 , , S) = {(q1 , aSa), (q1 , bSb), (q1 , )},
(q1 , a, a) = {(q1 , )},
(q1 , b, b) = {(q1 , )},
(q1 , , z0 ) = {(q2 , z0 )}.
Puede observarse que este aut
omata es diferente del exhibido en el tercer
ejemplo de la secci
on 5.2.

Ejercicios de la secci
on 5.4

Construir un AFPN M que acepte el lenguaje generado por la siguiente gramatica:

G:

S Aba | AB |
A aAS | a

B bBA | .

Encontrar una derivaci


on a izquierda en G de la cadena w = aaababa
y procesar luego la cadena w con el automata M , simulando la derivaci
on.
Dise
nar una gramatica, con una sola variable, que genere el lenguaje
L = {a2i b3i : i 0} y utilizar luego el procedimiento del Teorema 5.4.1 para construir un AFPN que acepte a L. Comparar este
aut
omata con el construido en el ejercicio de la secci
on 5.2.

160

CAPITULO 5. AUTOMATAS
CON PILA

5.5.

Aut
omatas con pila y LIC. Parte II.

En la presente secci
on consideraremos la segunda parte de la correspondencia entre AFPN y LIC. Demostraremos que para todo AFPN que acepta por
pila vaca existe una GIC que genera el lenguaje aceptado por el automata.
Las gramaticas obtenidas son, en general, bastante complejas, con un gran
n
umero de variables y de producciones. Hay que advertir tambien que el
procedimiento puede dar lugar a muchas variables in
utiles (no-terminables
o no alcanzables).
5.5.1 Teorema. Dado un AFPN M = (Q, q0 , , , z0 , ) que acepta por
pila vaca, existe una GIC G = (, V, S, P ) tal que L(G) = N (M ).
Demostraci
on. En la gramatica G las variables (aparte de la variable inicial S) seran tripletas de la forma [qXp] donde q, p Q y X . Las
producciones de G se definen de la siguiente manera:
1. Si (p, ) (q, a, X), se a
nade la producci
on [qXp] a.
2. Si (p, ) (q, , X), se a
nade la producci
on [qXp] .
3. Si (r, Y1 Y2 Yk ) (q, a, X), donde a puede ser un smbolo del
alfabeto
o a = y k 1, se a
naden todas las producciones de la
forma
[qXrk ] a[rY1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ]
para todas las secuencias posibles r1 , r2 , . . . , rk1 de estados de Q.
4. Para todo p Q se a
nade la producci
on S [q0 z0 p].
La gramatica G as definida pretende simular con derivaciones a izquierda
los computos de M ; el significado intuitivo de la variable [qXp] es: al extraer X del tope de la pila, se pasa del estado q al estado p. La producci
on
[qXrk ] a[rY1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ]
del numeral 3 indica las posibles maneras en las que M puede extraer la
cadena Y1 Y2 Yk de la pila, una vez se haya sustituido el tope de la pila
X por dicha cadena, pasando del estado q al estado r y consumiendo el
smbolo a.
Demostraremos primero la inclusion N (M ) L(G). Para todo q, p Q,
X y w , se demostrar
a la implicacion
(5.1)

si (q, w, X) (p, , ) entonces [qXp] = w,

161

5.5. AUTOMATAS
CON PILA Y LIC. PARTE II.

por induccion sobre el n


umero de pasos del computo (q, w, X) (p, , ).
Cuando hay un s
olo paso, el computo es de la forma (q, a, X) (p, , )
o de la forma (q, , X) (p, , ). Si (q, a, X) (p, , ), entonces (p, )
(q, a, X); as que [qXp] a es una producci
on de G, y se obtendr
a la
derivaci
on [qXp] = a. Si (q, , X) (p, , ), entonces (p, ) (q, , X);
as que [qXp] es una producci
on de G y se obtendr
a [qXp] = .
n

Para el razonamiento inductivo, supongase que (q, w, X) (p, , ) donde n > 1. Considerando el primer paso de este computo de n pasos, podemos
escribir:

(5.2)

(q, ax, X) (r0 , x, Y1 Y2 Yk ) (p, , ),

donde a
o a = . Cuando a , w = ax para alguna cadena x ;
cuando a = , x = w. En el primer paso de 5.2 se ha aplicado la transicion
(r0 , Y1 Y2 Yk ) (q, a, X) de M . Por la definicion de la gramatica G,
[qXrk ] a[r0 Y1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ]
es una producci
on, para todas las secuencias posibles r1 , r2 , . . . , rk1 de
estados de Q.
Seg
un 5.2, desde la configuraci
on instantanea (r0 , x, Y1 Y2 Yk ) el automata llega hasta la configuraci
on (p, , ), consumiendo completamente
la cadena x y vaciando la pila. La cadena x se puede escribir entonces
como x = w1 w2 wk , siendo wi la cadena consumida por el automata
para extraer el smbolo Yi del tope de la pila. En consecuencia, existe una
secuencia de estados r1 , r2 ,. . . , rk1 , rk = p tales que
+

(r0 , x, Y1 Y2 Yk ) = (r0 , w1 w2 wk , Y1 Y2 Yk ) (r1 , w2 wk , Y2 Yk )


+

(r2 , w3 wk , Y3 Yk ) (rk1 , wk , Yk ) (rk , , ).


Para i = 1, 2, . . . , k se tiene as una secuencia de computos parciales
+

(ri1 , wi , Yi ) (ri , , ),
+

donde rk = p. Por la hip


otesis de induccion, [ri1 Yi ri ] = wi para i =
1, 2, . . . , k. Por consiguiente,
+

[qXp] = [qXrk ] = a[r0 Y1 r1 ][r1 Y2 r2 ] [rk1 Yk rk ] = aw1 w2 wk = w.

162

CAPITULO 5. AUTOMATAS
CON PILA

Esto demuestra la implicacion 5.1. Por lo tanto, si w es aceptada por


+

M , siendo w = , se tendr
a (q0 , w, z0 ) (p, , ), y usando 5.1 se con+
cluir
a que S = [q0 z0 p] = w. Si w = es aceptada por M , necesariamente (q0 , , z0 ) (p, , ) para alg
un estado p. Esto significa que
(q0 , , z0 ) (p, , ), y se tendr
a S = [q0 z0 p] = . Esto demuestra que
N (M ) L(G).
Para establecer L(G) N (M ) se demuestra la implicacion
+

si [qXp] = w, entonces (q, w, X) (p, , ),

(5.3)

por induccion sobre el n


umero de pasos en la derivaci
on [qXp] = w.
Este razonamiento inductivo es similar al usado para probar la implicacion
recproca 5.1, y se deja como ejercicio para el estudiante interesado. Si en

G se puede derivar la cadena w, es decir, si S = w, la primera producci


on
+
aplicada sera de la forma S [q0 z0 p]. De donde, S = [q0 z0 p] = w.
+

Usando 5.3 se concluye (q0 , w, z0 ) (p, , ), o sea w N (M ).

trar una gram


atica G que genere el lenguaje de las cadenas

Ejemplo

Vamos a aplicar la construcci


on del Teorema 5.5.1 para encon-

sobre el alfabeto = {a, b} que tienen igual n


umero de aes que de bes, a
partir del AFPN M = (Q, q0 , F, , , z0 , ) con los siguientes componentes.
= {a, b}, = {z0 , A, B}, Q = {q0 , q1 }, F = {q1 } y la funcion de transicion
esta dada por:
(q0 , a, z0 ) = {(q0 , Az0 )},
(q0 , b, z0 ) = {(q0 , Bz0 )},
(q0 , a, A) = {(q0 , AA)},
(q0 , b, B) = {(q0 , BB)},
(q0 , a, B) = {(q0 , )},
(q0 , b, A) = {(q0 , )},
(q0 , , z0 ) = {(q1 , )}.
M es una modificaci
on del aut
omata presentado en el segundo ejemplo de
la secci
on 5.2 (en ese ejemplo M aceptaba por estado final; aqu M acepta
por pila vaca).
Las variables de G son S y todas las tripletas de la forma [qXp] donde
q, p Q y X . Hay, por lo tanto, 13 variables, a saber:
S, [q0 z0 q0 ], [q0 Aq0 ], [q0 Bq0 ], [q0 z0 q1 ], [q0 Aq1 ], [q0 Bq1 ],
[q1 z0 q0 ], [q1 Aq0 ], [q1 Bq0 ], [q1 z0 q1 ], [q1 Aq1 ], [q1 Bq1 ].


5.5. AUTOMATAS
CON PILA Y LIC. PARTE II.

163

A continuaci
on se presentan las producciones de G.
Producci
on obtenida de (q0 , , z0 ) = {(q1 , )}:
[q0 z0 q1 ] .
Producci
on obtenida de (q0 , a, B) = {(q0 , )}:
[q0 Bq0 ] a.
Producci
on obtenida de (q0 , b, A) = {(q0 , )}:
[q0 Aq0 ] b.
Producciones obtenidas de (q0 , a, z0 ) = {(q0 , Az0 )}:
[q0 z0 q0 ] a[q0 Aq0 ][q0 z0 q0 ] | a[q0 Aq1 ][q1 z0 q0 ]
[q0 z0 q1 ] a[q0 Aq0 ][q0 z0 q1 ] | a[q0 Aq1 ][q1 z0 q1 ].
Producciones obtenidas de (q0 , b, z0 ) = {(q0 , Bz0 )}:
[q0 z0 q0 ] b[q0 Bq0 ][q0 z0 q0 ] | b[q0 Bq1 ][q1 z0 q0 ]
[q0 z0 q1 ] b[q0 Bq0 ][q0 z0 q1 ] | b[q0 Bq1 ][q1 z0 q1 ].
Producciones obtenidas de (q0 , a, A) = {(q0 , AA)}:
[q0 Aq0 ] a[q0 Aq0 ][q0 Aq0 ] | a[q0 Aq1 ][q1 Aq0 ]
[q0 Aq1 ] a[q0 Aq0 ][q0 Aq1 ] | a[q0 Aq1 ][q1 Aq1 ].
Producciones obtenidas de (q0 , b, B) = {(q0 , BB)}:
[q0 Bq0 ] b[q0 Bq0 ][q0 Bq0 ] | b[q0 Bq1 ][q1 Bq0 ]
[q0 Bq1 ] b[q0 Bq0 ][q0 Bq1 ] | b[q0 Bq1 ][q1 Bq1 ].
Finalmente, las producciones de la variable inicial S son:
S [q0 z0 q0 ] | [q0 z0 q1 ].
Al examinar las producciones se puede observar que todas las variables de la
forma [q1 Xq], con X y q Q, son in
utiles ya que no tienen producciones. Con la terminologa ya conocida, dichas variables son no-terminables
y, por consiguiente, las producciones en las que aparecen se pueden eliminar. Otra variable no terminable es [q0 z0 q0 ]. Adem
as, las variables [q0 Aq1 ]
y [q0 Bq1 ] son inalcanzables, as que se pueden eliminar, junto con todas

164

CAPITULO 5. AUTOMATAS
CON PILA

sus producciones. Realizando estas simplificaciones se obtiene la siguiente


gramatica:
S [q0 z0 q1 ]
[q0 z0 q1 ] a[q0 Aq0 ][q0 z0 q1 ] | b[q0 Bq0 ][q0 z0 q1 ] |
[q0 Aq0 ] a[q0 Aq0 ][q0 Aq0 ] | b
[q0 Bq0 ] b[q0 Bq0 ][q0 Bq0 ] | a.
Como se indic
o en la demostraci
on, en las gramaticas construidas seg
un el
metodo del Teorema 5.5.1, las derivaciones a izquierda corresponden a los
computos en el aut
omata dado. Podemos ilustrar este punto, en el presente
ejemplo, con la cadena de entrada w = bbabaa. El siguiente es un computo
de aceptaci
on de w en M :
(q0 , bbabaa, z0 ) (q0 , babaa, Bz0 ) (q0 , abaa, BBz0 ) (q0 , baa, Bz0 )
(q0 , aa, BBz0 ) (q0 , a, Bz0 ) (q0 , , z0 ) (q1 , , ).
La derivaci
on a izquierda en G que corresponde a este computo es:
S = [q0 z0 q1 ] = b[q0 Bq0 ][q0 z0 q1 ] = bb[q0 Bq0 ][q0 Bq0 ][q0 z0 q1 ]
= bba[q0 Bq0 ][q0 z0 q1 ] = bbab[q0 Bq0 ][q0 Bq0 ][q0 z0 q1 ]
= bbaba[q0 Bq0 ][q0 z0 q1 ] = bbabaa[q0 z0 q1 ] = bbabaa.
Observese que, en cada paso de la derivaci
on, el contenido actual de la pila
se puede leer examinando las segundas componentes de las tripletas.
Para hacer m
as legibles las producciones de la gramatica G obtenida
en este ejemplo, cambiamos los nombres de las variables as: C = [q0 z0 q1 ],
D = [q0 Aq0 ] y E = [q0 Bq0 ]. Con esta nomenclatura, la gramatica se puede
escribir como:

SC

C aDC | bEC |
G:
D aDD | b

E bEE | a

Puesto que la u
nica producci
on de S es S C, las variables S y C se pueden
identificar, dando lugar a la siguiente gramatica simplificada equivalente:

S aDS | bES |
D aDD | b

E bEE | a


5.5. AUTOMATAS
CON PILA Y LIC. PARTE II.

Ejercicios de la secci
on 5.5

165

Con respecto al ejemplo de esta secci


on, procesar con M la cadena de
entrada w = baabbbaa y luego derivar w en la gramatica G, simulando
dicho procesamiento.
! Dise
nar un AFPN que acepte el lenguaje L de las cadenas sobre el
alfabeto = {a, b} que tienen el doble n
umero de aes que de bes.
Aplicar luego la construcci
on del Teorema 5.5.1 para encontrar una
gramatica que genere a L.

Captulo

Maquinas de Turing
En este captulo se presenta la M
aquina de Turing (MT) que es el modelo
de automata con m
axima capacidad computacional: la unidad de control
puede desplazarse a izquierda o a derecha y sobre-escribir smbolos en la
cinta de entrada. Argumentaremos que la m
aquina de Turing tiene la misma
potencia o capacidad de los computadores reales.

6.1.

M
aquinas de Turing como aceptadoras de
lenguajes

Una m
aquina de Turing (MT), M = (Q, q0 , F, , , b, ), consta de siete
componentes:
1. Q es el conjunto (finito) de estados internos de la unidad de control.
2. q0 Q es el estado inicial.
3. F es el conjunto de estados finales o de aceptaci
on, = F Q.
4. es el alfabeto de entrada.
5. es el alfabeto de cinta, que incluye a , es decir, .
6. b es el smbolo blanco (el smbolo b no puede hacer parte del
alfabeto de entrada ).
7. es la funcion de transicion de la m
aquina:
: Q Q {, }
167

168

CAPITULO 6. MAQUINAS
DE TURING

es una funci
on parcial, es decir, puede no estar definida en algunos
elementos del dominio. La flecha denota desplazamiento a izquierda
mientras que denota desplazamiento a la derecha. La transicion
(q, a) = (p, b, D)
significa: estando en el estado q, escaneando el smbolo a, la unidad
de control borra a, escribe b y se mueve en el estado p, ya sea a la
izquierda (si el desplazamiento D es ) o a la derecha (si D es ).
Una m
aquina de Turing M procesa cadenas de entrada w colocadas
sobre una cinta infinita en ambas direcciones. Para procesar una cadena de
entrada w, la unidad de control de M esta en el estado inicial q0 escaneando
el primer smbolo de w. Las demas celdas o casillas de la cinta contienen el
smbolo blanco b.
Descripci
on o configuraci
on instant
anea. Es una expresi
on de la forma
a1 a2 ai1 qai an
donde los smbolos a1 , . . . , an pertenecen al alfabeto de cinta y q Q.
Esta expresi
on representa el estatus actual del computo:

a1

a2

ai1

ai

an

Es decir, la descripci
on instantanea a1 a2 ai1 qai an indica que la unidad de control de M esta en el estado q escaneando el smbolo ai . Se supone
que todas las casillas, a la izquierda a1 y a la derecha de an , contienen el
smbolo blanco, b.
Ejemplos concretos de descripciones instantaneas son:
aabq2 baaa
q5 ababba
abbbaabq0 bba


6.1. MAQUINAS
DE TURING COMO ACEPTADORAS DE LENGUAJES

169

La configuraci
on o descripci
on instantanea inicial, o simplemente confi
guraci
on inicial, es q0 w, donde w es la cadena de entrada. Esta
se coloca
en cualquier parte de la cinta de entrada.
Paso computacional. El paso de una descripci
on instantanea a otra, por
medio de una transicion definida por , se denomina un paso computacional
y se denota por
u1 qu2 v1 pv2 .
Aqu u1 , u2 , v1 , v2 y p, q Q. Un ejemplo concreto es
abbaq2 ba abbq1 aca
en la cual la m
aquina utilizo la transicion (q2 , b) = (q1 , c, ).
La notaci
on

u1 qu2 v1 pv2
significa que M puede pasar de la descripci
on instantanea u1 qu2 a la descripci
on instantanea v1 pv2 en cero, uno o m
as pasos computacionales.
C
omputos especiales. Durante el computo o procesamiento de una cadena de entrada hay dos situaciones especiales que se pueden presentar:
1. El computo termina porque en determinado momento no hay transici
on definida.
2. El computo no termina; esto es lo que se denomina un bucle infinito
o un ciclo infinito. Esta situacion se representa con la notaci
on

u1 qu2
la cual indica que el computo que se inicia en la descripcion instantanea u1 qu2 no se detiene nunca.
Un detalle para tener en cuenta es que las transiciones con smbolo b,
(q, b) = (p, s, D), no son las mismas transiciones usadas para automatas en captulos anteriores. Una transicion en un automata tiene lugar
independientemente del smbolo ledo y la unidad de control permanece
estacionaria, mientras que una transicion (q, b) = (p, s, D) en una MT requiere que el smbolo blanco b este escrito en la casilla escaneada; adem
as,
la unidad de control sobre-escribe el blanco y realiza un desplazamiento D.
Lenguaje aceptado por una MT. Una cadena de entrada w es aceptada
por una MT M si el computo que se inicia en la configuraci
on inicial q0 w

170

CAPITULO 6. MAQUINAS
DE TURING

termina en una configuraci


on instantanea w1 pw2 , p estado de aceptaci
on,
en la cual M se detiene completamente. El lenguaje L(M ) aceptado por
una MT M se define entonces como

L(M ) := {w : q0 w w1 pw2 , p F, w1 , w2 , M se detiene


en la configiguracion w1 pw2 }.
La noci
on de aceptaci
on para m
aquinas de Turing es m
as flexible que para
automatas: una cadena de entrada no tiene que ser leda en su totalidad
para que sea aceptada; s
olo se requiere que la m
aquina se detenga completamente, en un momento determinado, en un estado de aceptaci
on.
Para simplificar los argumentos sobre m
aquinas de Turing, en el modelo
est
andar se supone que la unidad de control siempre se detiene al ingresar
a en un estado de aceptaci
on. Es decir, no se permiten transiciones (q, a)
cuando q F .
Las m
aquinas de Turing originan las siguientes clases de lenguajes:
1. L es un lenguaje recursivamente enumerable (RE) si existe una MT
M tal que L(M ) = L.
2. L es un lenguaje recursivo si existe una MT M tal que L(M ) = L y
M se detiene con todas las cadenas de entrada.
Las denominaciones lenguaje recursivamente enumerable y lenguaje recursivo pueden parecer un tanto extra
nas; esta terminologa es anterior a
la aparicion del modelo de m
aquina de Turing y se ha mantenido vigente
hasta el presente. En el Teorema 6.8.3 se justificara la denominacion recursivamente enumerable (RE) al establecerse que para todo lenguaje RE
se puede construir una MT que enumere secuencialmente sus cadenas.
Obviamente, todo lenguaje recursivo es recursivamente enumerable, pero
la afirmacion recproca no es (en general) valida, como se demostrar
a en
la secci
on 7.5. Esto permitira concluir que el fen
omeno de m
aquinas que
nunca se detienen no se puede eliminar de la teora de la computaci
on.
Diagrama de transiciones o diagrama de flujo de una MT. La
funcion de transicion de una MT se puede presentar como un digrafo
etiquetado. As, la transicion (q, a) = (p, b, ) se representa por

a|b
q


6.1. MAQUINAS
DE TURING COMO ACEPTADORAS DE LENGUAJES

171

Unidad de control estacionaria. Para simplificar la descripci


on del modelo estandar, se ha exigido que la unidad de control se desplace hacia
la izquierda o hacia la derecha en cada transicion. No obstante, se puede
permitir que la unidad de control no se mueva en un determinado paso
computacional, es decir, que no realice ning
un desplazamiento. Este tipo
de transicion lo escribimos en la forma:
(q, a) = (p, b, )
donde a, b ; p, q Q y significa que la unidad de control no se
mueve. Tal transicion se puede simular por medio de un movimiento a la
derecha seguido de un retorno a la izquierda. As, para simular la transicion
(q, a) = (p, b, ) utilizamos un estado auxiliar nuevo q y las transiciones:
(q, a) = (q , b, ),
(q , s) = (p, s, ),

para todo smbolo s .

La directriz de no-desplazamiento tambien se puede simular con un movimiento a la izquierda seguido de un retorno a la derecha. En cualquier
caso, concluimos que las MT en las que hay transiciones estacionarias,
(q, a) = (p, b, ), aparte de las transiciones normales, aceptan los mismos
lenguajes que las MT estandares. N
otese que las transiciones estacionarias
se asemejan a las transiciones en automatas, excepto por el hecho de que
las m
aquinas de Turing tienen la capacidad de sobre-escribir los smbolos
escaneados.

n
umero par de ceros, sobre el alfabeto {0, 1}.

Ejemplo

La siguiente MT acepta el lenguaje de las cadenas con un

1|1

0|0

> q0

1|1
q1

0|0

b|b
q2

L = {ai bi ci : i 0} y que se detiene al procesar todas las

Ejemplo

En este ejemplo se construye una MT M que acepta el lenguaje

entradas. Por consiguiente, L es un lenguaje recursivo aunque no es LIC,

172

CAPITULO 6. MAQUINAS
DE TURING

como se demostr
o en la secci
on 4.13; es decir, L no puede ser aceptado por
ning
un aut
omata con pila.
Sea M la MT con par
ametros
= {a, b, c},
= {a, b, c, X, Y, Z, b},
Q = {q0 , q1 , q2 , q3 , q4 , q5 },
F = {q5 },
y cuya funcion de transicion esta representada por el siguiente diagrama:
Y |Y
Z|Z

q4

b|b

q5

b|

Y |Y

a|a
b|b
a|a

b|b

Y |Y

Z|Z

b|Y

> q0

a|X

q1

Y |Y
Z|Z
c|Z

q2

q3

X|X

La idea utilizada para el dise


no de esta MT se puede describir as: la unidad de control cambia la primera a por X y se mueve a la derecha hasta
encontrar la primera b, la cual se sobre-escribe por una Y . Luego se mueve
hacia la derecha hasta encontrar la primera c, la cual se cambia por Z. El
control retrocede entonces hacia la izquierda en busca de la primera X que
encuentre en su camino; este retorno se hace en el estado q3 . La m
aquina
avanza luego hacia la derecha, hasta la primera a que quede en la cinta, y
todo el proceso anterior se repite. Si la cadena de entrada tiene la forma
requerida, todas las aes seran reemplazadas por Xs, las bes por Y s y las
ces por Zs. Una vez terminada la transformacion, el control se mueve hacia
la derecha, en el estado q4 , hasta encontrar la primera celda marcada con
el smbolo blanco b. La MT esta dise
nada de tal forma que si la cadena


6.1. MAQUINAS
DE TURING COMO ACEPTADORAS DE LENGUAJES

173

de entrada no tiene la forma requerida, el procesamiento terminar


a en un
estado diferente del estado de aceptaci
on q5 .
A continuaci
on procesamos la cadena de entrada w = aabbcc L.
q0 aabbcc Xq1 abbcc Xaq1 bbcc XaY q2 bcc XaY bq2 cc XaY bq3 bZc

q3 XaY bZc Xq0 aY bZc XXq1 Y bZc XXY q1 bZc

XXY Y q2 Zc XXY Zq2 c XXY q3 ZZ Xq3 XY ZZ

XXq0 Y Y ZZ XXY q4 Y ZZ XXY Y ZZq4 b


XXY Y ZZbq5 b.
La cadena de entrada w = aaabbcc, que no esta en L, se procesa as:
q0 aaabbcc Xq1 aabbcc Xaaq1 bbcc XaaY q2 bcc XaaY bq2 cc

XaaY bq3 bZc q3 XaaY bZc Xq0 aaY bZc XXaq1 Y bZc
XXaY q1 bZc XXaY Y q2 Zc XXaY Zq2 c XXaY q3 ZZ

Xq3 XaY ZZ XXq0 aY Y ZZ XXXq1 Y Y ZZ

XXXY Y q1 ZZ (c
omputo abortado).
Por otro lado, la cadena abbbcc, que tampoco esta en L, se procesara as:

q0 abbcc Xq1 bbcc XY q2 bcc XY bq2 cc XY q3 bZc q3 XY bZc


Xq0 Y bZc XY q4 bZc (c
omputo abortado).

Ejercicios de la secci
on 6.1

Seg
un los ejercicios de la secci
on 4.13, los siguientes lenguajes no son LIC.
Dise
nar MT que los acepten, escribiendo explcitamente la idea utilizada en
el dise
no. Presentar cada MT por medio de un diagrama de transiciones.
L = {ai bi cj : j i}.
L = {0i 12i 0i : i 0}.
L = {ai bj ck : 1 i j k}.
L = {ai bj ci dj : i, j 0}.
L = {ai bi ci di : i 0}.

174

6.2.

CAPITULO 6. MAQUINAS
DE TURING

Subrutinas o macros

Hay procedimientos intermedios, como copiar o trasladar cadenas, que se


repiten frecuentemente en el dise
no de m
aquinas de Turing. Es u
til identificar algunos de estos procedimientos, similares a las subrutinas o macros de
los programas computacionales, para simplificar el dise
no de m
aquinas m
as
complejas. Las subrutinas se pueden considerar como m
aquinas de Turing
con estado inicial pero sin estados de aceptaci
on.

cadena de entrada y la traslada una casilla hacia la izquierda.

Ejemplo

Subrutina TI, traslaci


on a la izquierda. Esta subrutina toma una

Si la entrada es la cadena a1 a2 ak , la accion de TI se puede representar


en la forma
Entrada:

b a1 ak1 ak b

Salida:

a1 a2 ak b b

La flecha indica que las casillas se


naladas sobre la cinta coinciden. Los
smbolos subrayados en las dos cintas representan los smbolos ledos por
la unidad de control al iniciar y al terminar la subrutina, respectivamente.
La MT que aparece a continuaci
on sirve para implementar la subrutina
TI cuando el alfabeto de entrada es {a, b, c}:
b|b

a|b

> q0

b|b

c|b

qa

qb

qc

b|a

b|b

q1

b|c

A continuaci
on definimos algunos otras subrutinas u
tiles; se solicita al estudiante dise
nar MT que los implementen.

6.2. SUBRUTINAS O MACROS

175

Subrutina TD, traslaci


on a la derecha. Traslada la cadena de entrada una
casilla a la derecha:
Entrada:

ba1 a2 ak b

Salida:

b b a1 ak1 ak

Subrutina BI, primer blanco a la izquierda. Busca el primer smbolo b a la


izquierda de una cadena w que no posee blancos:
Entrada:

bwb

Salida:

bwb

Subrutina BD, primer blanco a la derecha. Busca el primer smbolo b a la


derecha de una cadena w que no posee blancos:
Entrada:

bwb

Salida:

bwb

Subrutina NBI, primer smbolo no-blanco a la izquierda. Busca el primer


smbolo diferente de b a la izquierda de una cadena de blancos:
Entrada:

abb bb

Salida:

abb bb

Subrutina NBD, primer smbolo no-blanco a la derecha. Busca el primer


smbolo diferente de b a la derecha de una cadena de blancos:
Entrada:

bb bba

Salida:

bb bba

Subrutina COPD, copia a la derecha. Copia la cadena w a la derecha de si


misma, separando las dos w por un blanco b. La cadena w no posee blancos:
Entrada:

bwb b

Salida:

bwb w b

Subrutina COPI, copia a la izquierda. Copia la cadena w a la izquierda de si


misma, separando las dos w por un blanco b. La cadena w que no posee

176

CAPITULO 6. MAQUINAS
DE TURING

blancos:
Entrada:

b bwb

Salida:

b w bwb

Subrutina INT, intercambio. Intercambia las cadenas u y v (estas cadenas


no poseen blancos y no necesariamente son de la misma longitud):
Entrada:

bubvb
bvbub

Salida:

Ejercicios de la secci
on 6.2

Dise
nar MT que implementen las subrutinas TD, BI, BD, NBI, NBD,
COPD, COPI e INT cuando el alfabeto de entrada es {a, b}.
Dise
nar MT que implementen las subrutinas TD, BI, BD, NBI, NBD,
COPD, COPI e INT cuando el alfabeto de entrada es {0, 1, 2}.
Sea = {a, b}. Dise
nar MT para las siguientes subrutinas:
(i) TI2 . Traslada la cadena de entrada 2 casillas a la izquierda.
(ii) TD2 . Traslada la cadena de entrada 2 casillas a la derecha.
(iii) TIk . Traslada la cadena de entrada k casillas a la izquierda (k
es un entero fijo 1).
(iv) TDk . Traslada la cadena de entrada k casillas a la derecha (k es
un entero fijo 1).

6.3.

M
aquinas de Turing como calculadoras de
funciones

Como las m
aquinas de Turing tienen la capacidad de transformar las cadenas de entrada, borrando o sobre-escribiendo smbolos, se pueden utilizar como mecanismos para calcular funciones. Formalmente, una MT
M = (Q, q0 , qf , , , b, ) calcula o computa una funci
on h :

si para toda entrada w se tiene

q0 w qf v,

siempre que v = h(w).

Si existe una MT que calcule la funcion h, se dice que h es Turingcalculable o Turing-computable. El modelo de MT aqu utilizado coincide con el estandar, pero no hay estados de aceptaci
on. El estado qf , llamado


6.3. MAQUINAS
DE TURING COMO CALCULADORAS DE FUNCIONES

177

estado final, se usa para terminar el procesamiento de la entrada y producir


la salida. No se permiten transiciones desde el estado final qf . N
otese que
M debe terminar el procesamiento en la configuraci
on qf v, o sea, la unidad
de control debe estar escaneando el primer smbolo de la salida v.
Si M no se detiene con una entrada particular w, la funcion h no esta definida en w. Es decir, el dominio de h esta formado u
nicamente por aquellas
cadenas para las cuales M se detiene. Es corriente escribir h(w) para indicar que h esta definida en w (h converge en w) y h(w) para indicar que
h no esta definida en w (h diverge en w). Si la funcion h esta definida para
toda entrada w (es decir, si M se detiene para toda w) se dice que h es una
funci
on total. Una funcion indefinida para algunas entradas se dice que
es una funci
on parcial.

3, para cualquier n
umero natural n 1 escrito en el sistema

Ejemplo

Dise
nar una MT M que calcule el residuo de divisi
on de n por

de numeraci
on unitario (n se escribe como una secuencia de n unos).
on por 3 son 0, 1 y 2, por lo cual
Solucion. Los posibles residuos de divisi
bastan 3 estados, aparte de qf , para calcular esta funcion. M recorre de
izquierda a derecha la secuencia de entrada borrando los unos y pasando
alternadamente por los estados q0 (que representa el residuo 0), q1 (residuo
1) y q2 (residuo 2). El siguiente es el diagrama de transiciones de M :
1 | b

1 | b
> q0

1 | b
q1

q2

b | 1
b | 0

qf

b | 2

La noci
on de funcion Turing-computable se puede extender facilmente a
funciones de varios argumentos. Concretamente, una funcion h de k argumentos es Turing-computable si para toda k-upla (w1 , w2 , . . . , wk ) se tiene

q0 w1 bw2 b bwk b qf v,

siempre que v = h(w1 , w2 , . . . , wk ).

178

CAPITULO 6. MAQUINAS
DE TURING

N
otese que para escribir la entrada en la cinta, los k argumentos w1 ,
w2 ,. . . , wk se separan entre s con el smbolo blanco b. Igual que antes,
no se permiten transiciones desde el estado final qf . Esta definicion abarca
tanto los casos de las funciones totales (definidas para toda entrada) como
los de las funciones parciales (indefinidas para algunas entradas).

de numeraci

on unitario. Esta
es una funcion de dos argumen-

Ejemplo

Dise
nar una MT M que calcule la funcion suma, en el sistema

tos, h(n, m) = n + m, donde n, m 1. Con entrada 1n b1m , M debe producir como salida 1n+m . Las secuencias de unos, 1n y 1m , representan los
n
umeros naturales n y m, respectivamente.
Solucion. M va a transformar 1n b1m en 1n+m trasladando la cadena 1m una
casilla hacia la izquierda. El separador b se sobre-escribe por 1 y el u
ltimo
1 de 1m se sobre-escribe por el smbolo b. El diagrama de transiciones de
la MT que implementa esta idea es:
b | 1

> q0
1 | 1

b | b

q1

q2

q3

1 | 1

qf

1 | 1

Ejercicios de la secci
on 6.3

b | b

1 | b

Dise
nar MT que calculen las siguientes funciones; hacer diagramas de transiciones para las m
aquinas obtenidas. Las entradas numericas se dan en el
sistema de numeraci
on unitario, como en los ejemplos de esta secci
on.
La funcion de paridad de los n
umeros naturales (n 1):
h(n) =

1,
0,

si n es par,
si n es impar.

h(n) = 2n, para todo n


umero natural n 1.
Para n, m 1,
f (n, m) =

1,
0,

si n m,
si n < m.

Para n, m 1, h(n, m) = m
ax(n, m).
Para i, j, k 1, h(i, j, k) = j. Esta funcion se llama segunda proyecci
on. Observaci
on: en general, la i-esima proyecci
on sobre k variables,
h(n1 , . . . , ni , . . . , nk ) = ni , es Turing-computable.


6.4. MAQUINAS
DE TURING COMO GENERADORAS DE LENGUAJES

6.4.

179

M
aquinas de Turing como generadoras de
lenguajes

Otra faceta importante de las MT es su capacidad para generar lenguajes,


tarea para la cual no son necesarios los estados de aceptaci
on. Concretamente, una MT M = (Q, q0 , , , b, ) genera el lenguaje L si
1. M comienza a operar con la cinta en blanco en el estado inicial q0 .
2. Cada vez que M retorna al estado inicial q0 , hay una cadena u perteneciente al lenguaje L escrita sobre la cinta.
3. Todas las cadenas de L son, eventualmente, generadas por M .

sobre el alfabeto = {a}, o sea, el lenguaje L = {a2i : i 1}.

Ejemplo

La siguiente MT genera cadenas con un n


umero par de aes

b|a
> q0

q1
b|a

orden lexicogr
afico (las cadenas se ordenan por longitud y las

Ejemplo

La siguiente MT genera todas cadenas de ceros y unos en el

cadenas de la misma longitud se ordenan ortograficamente de izquierda a


derecha, considerando 0 < 1): 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100,
101, 110, 111, 0000, 0001, . . . .
0|0

q3

b|b

b|0
0|0
0|1

> q0

q2

1|1
b|b

q1
0|0
1|1

b|b

1|0

180

CAPITULO 6. MAQUINAS
DE TURING

Ejercicios de la secci
on 6.4

Dise
nar MT que generen los siguientes lenguajes:
(i) L = {ai bi : i 1}.
(ii) L = {ai cbi : i 1}.
(iii) L = {ai : i es divisible por 3, i 1}.
Modificar la MT del u
ltimo ejemplo de esta secci
on para dise
nar una
MT que genere todas las cadenas de {a, b, c} en orden lexicogr
afico.
Ayuda: no se necesitan m
as estados.
Sea un alfabeto de n smbolos, = {a1 , a2 , . . . , an }. Modificar
la MT del u
ltimo ejemplo de esta secci
on para dise
nar una MT que

genere en orden lexicogr


afico. Ayuda: no se necesitan m
as estados.

6.5.

Variaciones del modelo est


andar de MT

Hemos visto como las m


aquinas de Turing se pueden utilizar para aceptar
lenguajes (en lo cual se asemejan a los automatas de captulos anteriores),
para generar lenguajes y para calcular funciones de uno o de varios argumentos. En esta secci
on veremos que, a pesar de su simplicidad, el modelo
estandar de m
aquina de Turing es suficientemente flexible como para simular acciones computacionales m
as complejas, entre las que se encuentran el
uso de m
ultiples cintas y el no-determinismo.

6.5.1.

Estado de aceptaci
on u
nico

Las m
aquinas de Turing dise
nadas como aceptadoras de lenguajes se pueden convertir, sin alterar el lenguaje aceptado, en m
aquinas con un u
nico
estado de aceptaci
on. Esto se puede hacer porque en la definicion del modelo estandar se ha exigido que una MT siempre se detenga cuando la unidad
de control ingresa en un estado de aceptaci
on. Por consiguiente, al dise
nar
una MT s
olo es necesario un estado de aceptaci
on. De manera concreta, si
una MT tiene varios estados de aceptaci
on, podemos modificarla cambiando cada transicion de la forma (q, a) = (p, b, D), donde a, b y p es un
estado de aceptaci
on original, por la transicion (q, a) = (qf , b, D), en la
que qf es el u
nico estado de aceptaci
on de la nueva m
aquina.
De esta manera, se puede considerar que toda MT tiene un u
nico estado
inicial y un u
nico estado de aceptaci
on. Este es un hecho importante para
la codificaci
on binaria de m
aquinas de Turing (secci
on 7.1).

181

6.5. VARIACIONES DEL MODELO ESTANDAR


DE MT

6.5.2.

M
aquina de Turing con cinta dividida en pistas

En el modelo multi-pista, la cinta esta dividida en un n


umero finito k de
pistas, como se muestra en la siguiente figura:

..
.

a1
a2
..
.

Pista 1
Pista 2

..
.

ak

..
.
Pista k

q
La funcion de transicion adquiere la siguiente forma:
(q, (a1 , a2 , a3 , . . . , ak )) = (p, (b1 , b2 , b3 , . . . , bk ), D)
donde los ai y los bi son smbolos del alfabeto de cinta y D es , o .
En un paso computacional, la unidad de control cambia simult
aneamente
el contenido de las k pistas de la celda escaneada y realiza luego uno de los
desplazamientos ,
o .
Simulaci
on. Las m
aquinas de Turing que act
uan sobre una cinta dividida
en k pistas aceptan los mismos lenguajes que las MT estandares. Para
concluir tal afirmacion, basta considerar el modelo multi-pistas como una
MT normal en la que el alfabeto de cinta esta formado por el conjunto de
k-uplas (s1 , s2 , . . . , sk ), donde los si . Es decir, el nuevo alfabeto de cinta
es el producto cartesiano k = (k veces).

marcadores ciertas posiciones en la cinta. La MT dise


nada

Ejemplo

Las pistas se usan por lo general para se


nalar con marcas o

en el ejemplo de la secci
on 6.1 para aceptar el lenguaje L = {ai bi ci : i 1}
utiliza implcitamente la idea de marcadores: reemplazar las as por Xs,
las bes por Y s y las ces por Zs no es otra cosa que colocar las marcas X,
Y y Z en las posiciones deseadas. Estas marcas se pueden colocar en una
pista diferente, sin necesidad de sobre-escribir los smbolos de la cadena de
entrada.

6.5.3.

M
aquina de Turing con m
ultiples cintas

En el modelo multi-cintas hay k cintas diferentes, cada una dividida en


celdas o casillas, como se muestra en la figura que aparece en la parte
superior de la pagina siguiente.

182

CAPITULO 6. MAQUINAS
DE TURING

a1

a2

Cinta 1

Cinta 2

..
.

..
.

ak

Cinta k

Inicialmente, la cadena de entrada se coloca en la primera cinta y las demas


cintas estan llenas de blancos. En un paso computacional, la unidad de control cambia el contenido de la casilla escaneada en cada cinta y realiza luego
uno de los desplazamientos , o . Esto se hace de manera independiente en cada cinta; la unidad de control tiene entonces k visores que
act
uan independientemente en cada cinta. La funcion de transicion tiene la
siguiente forma:
(q, (a1 , a2 , a3 , . . . , ak )) = p, (b1 , D1 ), (b2 , D2 ), (b3 , D3 ), . . . , (bk , Dk ) ,
donde los ai y los bi son smbolos del alfabeto de cinta , y cada Di es un
desplazamiento ,
o .
Simulaci
on. A pesar de que el modelo multi-cinta parece, a primera vista,
m
as poderoso que el modelo estandar, resulta que una MT con m
ultiples
cintas se puede simular con una MT multi-pista. A continuaci
on bosquejaremos el procedimiento de simulacion.
Una MT con k cintas se simula con una MT que act
ua sobre una u
nica
cinta dividida en 2k + 1 pistas. Cada cinta de la m
aquina multi-cinta da
lugar a dos pistas en la m
aquina simuladora: la primera simula la cinta
propiamente dicha y la segunda tiene todas sus celdas en blanco, excepto
una, marcada con un smbolo especial X, que indica la posicion actual del
visor de la m
aquina original en dicha cinta. La pista adicional de la m
aquina


6.5. VARIACIONES DEL MODELO ESTANDAR
DE MT

183

simuladora se utiliza para marcar, con un smbolo especial Y , las posiciones


m
as a la izquierda y m
as a la derecha de la unidad de control en la m
aquina original. Para simular un solo paso computacional, la nueva m
aquina
requiere hacer m
ultiples recorridos a izquierda y a derecha, actualizando el
contenido de las pistas y la posicion de los marcadores X y Y .

{ai bi ci : i 0}.

Ejemplo

Dise
nar una MT con dos cintas que acepte el lenguaje L =

as facil de dise
nar que la MT est
andar
Solucion. Una MT con dos cintas es m
presentada en el segundo ejemplo de la secci
on 6.1. La idea es copiar en la
segunda cinta una X por cada a leda y, al aparecer las bes, avanzar hacia la
derecha en la primera cinta y hacia la izquierda en la segunda. Al aparecer
las ces se avanza hacia la derecha en ambas cintas. Si la cadena de entrada
tiene la forma ai bi ci , se detectara simult
aneamente el smbolo en blanco b
en ambas cintas.
La funcion de transicion requerida para implementar esta idea es:
(q0 , (a, b)) = (q1 , (a, ), (X, )),
(q1 , (a, b)) = (q1 , (a, ), (X, )),
(q1 , (b, b)) = (q2 , (b, ), (b, )),
(q2 , (b, X)) = (q2 , (b, ), (X, )),
(q2 , (c, b)) = (q3 , (c, ), (b, )),
(q3 , (c, X)) = (q3 , (c, ), (X, )),
(q3 , (b, b)) = (q4 , (b, ), (b, )),
(q0 , (b, b)) = (q4 , (b, ), (b, )).
Se han utilizado cuatro estados; q4 es el u
nico estado de aceptaci
on.

6.5.4.

M
aquinas de Turing no-deterministas (MTN)

En el modelo no-determinista se permite que, en un paso computacional, la


unidad de control escoja aleatoriamente entre varias transiciones posibles.
La funcion tiene la siguiente forma:
(q, a) = {(p1 , b1 , D1 ), (p2 , b2 , D2 ), . . . , (pk , bk , Dk )}
donde los ai y los bi son smbolos del alfabeto de cinta , los pi son estados
y cada Di es un desplazamiento , o .
La noci
on de aceptaci
on en una MTN es similar a la de los modelos
no-deterministas de aut
omatas considerados antes: una cadena de entrada

184

CAPITULO 6. MAQUINAS
DE TURING

w es aceptada si existe por lo menos un c


omputo, a partir de la configuraci
on inicial q0 w, que termine en la configuraci
on u1 pu2 , con p F . Como
antes, los computos en los cuales la m
aquina se detiene en un estado de no
aceptaci
on, o en los cuales no se detiene, son irrelevantes para la aceptaci
on.
Simulaci
on. Una MTN no tiene mayor poder computacional que una MT
estandar, es decir, una MTN se puede simular con una MT, como lo explicaremos a continuaci
on.
Sea M una MTN; se bosquejar
a la construcci
on de una MT M tal que
L(M ) = L(M ). Sea n el n
umero m
aximo de transiciones en los conjuntos
(q, a), considerando todo smbolo a y todo estado q Q. Para cada
a y q Q, las transiciones contenidas en (q, a) se pueden enumerar
entre 1 y n. Si hay menos de n transiciones en un (q, a) particular, se
repite arbitrariamente una de ellas hasta completar n. De esta manera,
cada una de las transiciones (q, a) se puede considerar como un conjunto
de n opciones indexadas:

(q, a) = (p1 , b1 , D1 ), (p2 , b2 , D2 ), . . . , (pk , bk , Dk )


1

ndice

En algunos (q, a) habr


a opciones repetidas, pero esta repeticion no altera
el lenguaje aceptado.
La MT M que simulara a M tendr
a tres cintas. La primera cinta almacena la entrada, la segunda genera de forma sistematica todas las secuencias
finitas de n
umeros entre 1 y n: primero las secuencias de longitud 1, luego
las secuencias de longitud 2, luego las de longitud 3 y as sucesivamente
(para esto se puede usar una subrutina como la construida en el ejercicio
de la secci
on 6.4).
Para cada secuencia i1 i2 ik generada en la cinta 2, M copia la cadena
de entrada sobre la cinta 3 y simula la computaci
on de k pasos que hace
sobre ella la m
aquina original M , utilizando en el paso j la opcion con
ndice j en el (q, a) correspondiente. Si M se detiene en un estado de
aceptaci
on, entonces tanto M como M aceptan la entrada. Si el computo
simulado no termina en la aceptaci
on, M borra el contenido de las cintas
2 y 3, genera otra secuencia en la cinta 2, copia de nuevo la entrada en la
cinta 3 e inicia una nueva simulacion.
Si la entrada es aceptada por la m
aquina original M , existir
a un computo
que se detiene en un estado de aceptaci
on y, eventualmente, M encontrar
ay
simulara tal computo.


6.5. VARIACIONES DEL MODELO ESTANDAR
DE MT

Ejemplo

185

La siguiente MT M no-determinista genera todas las cadenas

binarias (cadenas de ceros y unos). M escoge primero una


cadena binaria w por medio de las opciones no-deterministas b | 0 y
b | 1 y retrocede hacia el primer smbolo de w, retornando al estado

q0 . Luego borra todos los smbolos de la cadena generada w y procede a


generar una nueva.
b|0
b|1

b|b

> q0

0|0
1|1

q1

0|b
1|b

b|b

Siempre que M retorna al estado q0 hay una cadena binaria escrita en


la cinta. Todas las cadenas binarias seran eventualmente generadas, aleatoriamente. En contraste, la MT determinista del segundo ejemplo de la
secci
on 6.4 genera estas cadenas sistematicamente (en orden lexicogr
afico).
Para generar de manera no-determinista todas las cadenas de , donde
es un alfabeto cualquiera, bastan tambien dos estados (ejercicio ).

Ejercicios de la secci
on 6.5

Dise
nar m
aquinas de Turing multi-pistas que acepten los siguientes
lenguajes. Escribir explcitamente la idea utilizada en el dise
no.
(i) L = {ai bi ci : i 0}.
(ii) L = {ai b2i ai : i 0}.
Dise
nar m
aquinas de Turing multi-cintas que acepten los siguientes
lenguajes (que no son LIC, seg
un los ejercicios y de la secci
on 4.13). Escribir explcitamente la idea utilizada en el dise
no.
!(i) L = ww : w {0, 1} .
!(ii) L = {ai : i es un cuadrado perfecto}.
Sea = {s1 , . . . , sm } un alfabeto cualquiera. Dise
nar una m
aquina

de Turing no-determinista que genere todas las cadenas de .

186

6.6.

CAPITULO 6. MAQUINAS
DE TURING

Simulaci
on de aut
omatas por medio de
m
aquinas de Turing

Intuitivamente, parece claro que un automata determinista AFD se puede


simular con una MT estandar y una automata con pila se puede simular
con una MT que act
ua sobre dos cintas. En esta secci
on presentaremos
los detalles concretos de estas simulaciones. Concluiremos que tanto los
lenguajes regulares como los independientes del contexto son recursivos.

6.6.1.

Simulaci
on de aut
omatas

Un aut
omata (modelo AFD, AFN o AFN-) se puede simular con una
m
aquina de Turing: primero se convierte en un AFD M = (Q, q0 , F, , )
equivalente, usando las tecnicas del Captulo 2. Luego se construye una MT
M tal que L(M ) = L(M ) a
nadiendo un nuevo estado qf , que sera el u
nico
estado de aceptaci
on de M , y transiciones desde los estados de F hasta
qf , en presencia del smbolo blanco b. Es decir, M = (Q , q0 , F , , , b, )
donde
Q = Q {qf },

qf es un estado nuevo,

= {b},
F = {qf },
(q, s) = ((q, s), s, ),

(q, b) = (qf , b, ),

para q Q, s ,

para todo q F.

N
otese que la MT M as construida se detiene con cualquier entrada w.
Puesto que los lenguajes regulares son precisamente los aceptados por los
AFD, hemos establecido el siguiente teorema.
6.6.1 Teorema. Todo lenguaje regular es recursivo.

6.6.2.

Simulaci
on de aut
omatas con pila

Sea M = (Q, q0 , F, , , z0 , ) un automata con pila (modelo AFPD o


AFPN). Para simular a M se puede construir una MT M que act
ue sobre
dos cintas: la primera cinta simula la cinta de entrada y la segunda simula la pila del aut
omata. M sera una MT determinista o no-determinista
dependiendo de si el aut
omata dado es un AFPD o un AFPN. Se define

DE AUTOMATAS

6.6. SIMULACION
POR MEDIO DE MAQUINAS
DE TURING

187

M = (Q , q0 , F , , , b, ) por medio de
Q = Q {qf },

donde qf es un estado nuevo,

= {b},
F = {qf }.
La MT M coloca inicialmente el smbolo inicial de pila sobre la cinta 2:
(q0 , (s, b)) = (q0 , (s, z0 ), (, )),

para cualquier s .

Una transicion de la forma (q, a, s) = (p, ) se simula con varias transiciones: se trata de lograr que M sobre-escriba el smbolo s en la cinta 2,
que representa el tope de la pila, por la cadena . Por ejemplo, la transicion
(q, a, s) = (p, a1 a2 a3 ) se simula a
nadiendo un estado auxiliar qe junto con
las transiciones
(q, (a, s)) = (qe , (a, ), (a3 , )),
(qe , (a, b)) = (qe , (a, ), (a2 , )),
(qe , (a, b)) = (p, (a, ), (a1 , )).
Para no alterar el lenguaje aceptado, cada transicion de este tipo requiere
la adicion de un estado especial qe diferente. Una transicion del automata
M , (q, , s) = (p, ), se simula de manera similar: la posicion de la unidad de control y el contenido de la primera cinta no cambian durante el
procedimiento.
Finalmente, se debe a
nadir la transicion
(q, (b, s)) = (qf , (b, s), (, )),

para todo s y todo q F .

Lo anterior muestra que el comportamiento del automata M se simula


completamente con la MT M y se tiene que L(M ) = L(M ).
N
otese que la MT as construida no necesariamente se detiene con todas
las cadenas de entrada ya que el automata original M puede ingresar a un
bucle infinito con transiciones que inserten y extraigan indefinidamente
smbolos en la pila. Por consiguiente, para concluir que todo LIC es recursivo es necesario restringir primero las transiciones del automata. En la
demostraci
on del siguiente teorema se indica como hacerlo.
6.6.2 Teorema. Todo LIC es un lenguaje recursivo.

188

CAPITULO 6. MAQUINAS
DE TURING

Demostraci
on. Sabemos que un LIC L dado se puede generar con una
GIC G en FNC en la que la variable inicial no sea recursiva. En G no
hay transiciones , excepto posiblemente S . A partir de G podemos
construir un AFPN M tal que L(G) = L(M ) = L usando el procedimiento
del Teorema 5.4.1, y luego una MT M que simule a M , en la forma indicada
en la presente secci
on. Se puede observar que M y M siempre se detienen
al procesar una cadena de entrada cualquiera: no ingresan nunca en bucles
infinitos debido al tipo restringido de las transiciones que surgen de la
gramatica G.

Ejercicios de la secci
on 6.6

Simular el siguiente AFD por medio de una MT M y hacer el diagrama de transiciones de la m


aquina M .
b

> q0

q1

q2

Simular por medio de una MT M el automata con pila del primer


ejemplo de la secci
on 5.1, el cual acepta el lenguaje {ai bi : i 1}
sobre el alfabeto = {a, b}, y cuya funcion de transicion es:
(q0 , a, z0 ) = (q0 , Az0 ),
(q0 , a, A) = (q0 , AA),
(q0 , b, A) = (q1 , ),
(q1 , b, A) = (q1 , ),
(q1 , , z0 ) = (q2 , z0 ).

6.7.

Aut
omatas con dos pilas (AF2P)

En esta secci
on mostraremos que el modelo de automata con dos pilas
(AF2P) es tambien equivalente a la m
aquina de Turing. Un automata con
dos pilas es esencialmente un AFPD, tal como se definio en el captulo 5,
con la adicion de una pila m
as. Las pilas tienen la misma restriccion que
antes: el aut
omata s
olo tiene acceso al smbolo que esta en el tope de cada
pila. Un paso computacional depende del estado actual de la unidad de
control, del smbolo escaneado en la cinta y de los dos topes de pila, como
se muestra en la siguiente gr
afica:

189

6.7. AUTOMATAS
CON DOS PILAS (AF2P)

..
.
..
.

s2

s1

..
.

..
.

q
Podramos tambien definir aut
omatas con k pilas, k 1, pero tal modelo
no aumenta la capacidad computacional que se consigue con dos pilas. Para
limitarnos al modelo determinista debemos dotar al automata de una faceta
m
as: un smbolo auxiliar, $, llamado marcador final de entrada, que se
escribe al final de cada entrada y le sirve al automata para saber cu
ando
ha consumido completamente la cadena de entrada. El smbolo $ no forma
parte del alfabeto de entrada .
Una transicion en un AF2P tiene la forma
(q, a, s1 , s2 ) = (q , 1 , 2 ),
la cual tiene el siguiente significado: en presencia del smbolo a en la cinta
de entrada, la unidad de control pasa del estado q al estado q y se mueve
a la derecha. Adem
as, borra el smbolo s1 que esta en el tope de la primera
pila y lo sobre-escribe por la cadena 1 , y borra el smbolo s2 que esta en el
tope de la segunda pila y lo sobre-escribe por 2 . La unidad de control pasa
a escanear los nuevos topes de cada pila. Las cadenas 1 y 2 pertenecen a
, siendo el alfabeto de pila.
Tambien se permiten transiciones o transiciones espontaneas,
(q, , s1 , s2 ) = (q , 1 , 2 ).

190

CAPITULO 6. MAQUINAS
DE TURING

Con esta transicion, el smbolo sobre la cinta de entrada no se procesa


y la unidad de control no se mueve a la derecha, pero los topes de pila
s1 y s2 son reemplazados por las cadenas 1 y 2 , respectivamente. Para
garantizar el determinismo, (q, a, s1 , s2 ) y (q, , s1 , s2 ), con a , no
pueden estar simult
aneamente definidos. Las transiciones en un AF2P
permiten que el aut
omata cambie el contenido de las pilas sin procesar (o
consumir) smbolos sobre la cinta de entrada.
Inicialmente cada pila contiene u
nicamente el marcador z0 en el fondo,
y la cadena de entrada se coloca en la cinta de entrada, en la forma usual.
N
otese que s
olo es necesario exigir que la cinta de entrada sea infinita en
una direccion ya que la unidad de control no puede nunca retornar a la
izquierda.

Dise
nar un AF2P que acepte el lenguaje L = {0i 12i 0i : i 0}.

Seg
un el ejercicio de la secci
on 4.13, este lenguaje no es LIC
y, por lo tanto, no puede ser aceptado por un automata con una sola pila.
Ejemplo

Solucion. La idea es copiar los ceros iniciales de la cadena de entrada en


la primera pila y el doble de ellos en la segunda. Al aparecer los unos en
la cadena de entrada, se van borrando los ceros de la segunda pila, sin
alterar el contenido de la primera pila. Al aparecer la u
ltima cadena de
ceros en la entrada, se borran los ceros acumulados en la primera pila. Si la
entrada tiene la forma 0i 12i 0i , se detectara el marcador inicial de entrada
$ simult
aneamente con los marcadores de fondo z0 en ambas pilas. Para
implementar esta idea utilizamos cuatro estados; q0 es el estado inicial y q3
el u
nico estado de aceptaci
on.
En detalle, si la entrada tiene i ceros iniciales, se acumulan i ceros en la
primera pila y 2i ceros en la segunda, por medio de las dos instrucciones
(q0 , 0, z0 , z0 ) = (q0 , 0z0 , 00z0 ),
(q0 , 0, 0, 0) = (q0 , 00, 000).
Se borra luego un 0 en la segunda pila por cada 1 ledo en la cinta, por
medio de las transiciones
(q0 , 1, 0, 0) = (q1 , 0, ),
(q1 , 1, 0, 0) = (q1 , 0, ).
Al vaciar as la segunda pila, el contenido de la primera no se altera. Finalmente, se borra un 0 en la primera pila por cada 0 ledo en la cinta, con


6.7. AUTOMATAS
CON DOS PILAS (AF2P)

191

las transiciones
(q1 , 0, 0, z0 ) = (q2 , , z0 ),
(q2 , 0, 0, z0 ) = (q2 , , z0 ).
Al encontrar $ en la cinta de entrada y z0 en el fondo de cada pila, se ingresa
al estado de aceptaci
on q3 :
(q2 , $, z0 , z0 ) = (q3 , z0 , z0 ).
Hay que a
nadir tambien la transicion (q0 , $, z0 , z0 ) = (q3 , z0 , z0 ) para aceptar la cadena vaca.
El siguiente teorema establece que una MT estandar se puede simular
con un AF2P.
6.7.1 Teorema. Dada una m
aquina de Turing M , se puede construir un
aut
omata con dos pilas M que acepte el mismo lenguaje que M .
Demostraci
on. Sea M una MT estandar dada, con funcion de transicion .
La idea basica de la simulacion es hacer que, en cada momento, la primera
pila de M contenga la parte ubicada a la izquierda de la unidad de control
de M , y la segunda pila contenga la parte ubicada encima y a la derecha.
La siguiente gr
afica muestra la cinta de M y las dos pilas de la simulacion.
En cada momento las pilas contienen solo un n
umero finito de casillas no
vacas.
tope tope
1ra. pila

2da. pila

Inicialmente, M copia la cadena de entrada w en la primera pila y luego


la traslada de esta a la segunda pila (el marcador final de entrada $ le
permite al aut
omata saber cu
ando ha terminado de copiar toda la entrada
en la primera pila). Al terminar esta operacion, la primera pila queda vaca,
excepto por el marcador de fondo z0 , y la segunda pila contiene toda la
cadena de entrada. La unidad de control de M esta escaneando el tope

192

CAPITULO 6. MAQUINAS
DE TURING

de la segunda pila que es exactamente el primer smbolo de w. N


otese que
para hacer este doble traslado se necesita solamente un n
umero finito de
estados, n
umero que depende del alfabeto de entrada pero no de la longitud
de w.
El resto de la simulacion lo realiza M por medio de transiciones mientras escanea el marcador final de entrada $ sobre la cinta. A continuaci
on
indicamos como simula M las transiciones de M .
Desplazamiento a la derecha: la transicion (q, a) = (p, b, ) de M es
simulada por M con transiciones de la forma (q, , s, a) = (p, sb, ), por
cada smbolo s (s es el smbolo ubicado a la izquierda de a). La siguiente
gr
afica ilustra la situacion:

(q, a) = (p, b, )

Hay dos excepciones por considerar:


1. Si M realiza la transicion (q, a) = (p, b, ) y la primera pila s
olo

contiene el marcador de fondo z0 , M ejecuta la accion (q, , z0 , a) =


(p, z0 , ).
2. Si M esta escaneando el marcador de fondo z0 en la segunda pila, lo
que significa que M esta leyendo una casilla en blanco y usando la
transicion (q, b) = (p, b, ), M debe ejecutar la accion (q, , s, z0 ) =
(p, sb, z0 ).
Desplazamiento a la izquierda: la transicion (q, a) = (p, b, ) de M es
simulada por M con transiciones de la forma (q, , s, a) = (p, , sb), por
cada smbolo s (s es el smbolo ubicado a la izquierda de a). La siguiente
gr
afica ilustra la situacion:

193

6.8. PROPIEDADES DE CLAUSURA

(q, a) = (p, b, )

Aqu hay que tener en cuenta una excepci


on: si s es el marcador de fondo

z0 , M debe ejecutar la accion (q, , z0 , a) = (p, z0 , bb). Esto significa que


la primera pila sigue vaca y M queda escaneando el smbolo blanco b en
el tope de la segunda pila.

Ejercicios de la secci
on 6.7

Mostrar como se puede simular un AF2P con una MT multi-cintas.


Dise
nar aut
omatas con dos pilas que acepten los siguientes lenguajes:
(i) L = {ai bj ci dj : i, j 1}.
(ii) L = {a2i b3i : i 1}.
(iii) El lenguaje de las cadenas sobre el alfabeto {0, 1} que tienen el
doble n
umero de ceros que de unos.

6.8.

Propiedades de clausura de los lenguajes RE


y de los lenguaje recursivos

En esta secci
on presentaremos algunas propiedades de clausura de los lenguajes recursivos y de los RE; en los ejercicios del final de la secci
on aparecen otras propiedades similares.
6.8.1 Teorema.
es recursivo.

1. El complemento de un lenguaje recursivo tambien

2. La uni
on de dos lenguajes recursivos es recursivo.
3. La uni
on de dos lenguajes RE es RE.
Demostraci
on.

194

CAPITULO 6. MAQUINAS
DE TURING

1. Sea L un lenguaje recursivo aceptado por la MT M . La m


aquina M
se detiene con cualquier entrada, ya sea en un estado de aceptaci
on

o en uno de rechazo. Se puede construir una MT M que acepte a


L, haciendo que los estados de aceptaci
on de M dejen de serlo en

M . De esta forma, las cadenas aceptadas por M seran rechazadas


por M . Adicionalmente, desde los estados de no-aceptacion en los
cuales M se detiene, definimos transiciones a un estado (nuevo) de
aceptaci
on de M . De esta forma, las cadenas no aceptadas por M
s seran aceptadas por M . Por consiguiente, L(M ) = L.
2. Sean L1 y L2 dos lenguajes aceptados por las MT M1 y M2 , respectivamente. Para demostrar las partes 2 y 3 del presente teorema
podramos proceder como se hizo en el Teorema de Kleene al demostrar que la uni
on de dos lenguajes regulares es regular; esto es, basta
unir las m
aquinas M1 y M2 en paralelo por medio de transiciones espontaneas (transiciones ) desde un nuevo estado inicial. Recuerdese
que las transiciones espontaneas en una m
aquina de Turing adquieren la forma (q, s) = (q , s, ). No obstante, las m
aquinas as construidas son no-deterministas. Resulta m
as conveniente, pensando en
aplicaciones posteriores, dise
nar MT multi-cintas deterministas para
aceptar la uni
on de dos lenguajes.
Supongase entonces que L1 y L2 son recursivos, es decir, M1 y M2 se
detienen con toda entrada. Construimos una MT M con dos cintas
que simule a M1 en la primera cinta y a M2 en la segunda. M procesa
inicialmente la entrada en la primera cinta; si M1 acepta, M tambien
aceptar
a. Si M1 se detiene en un estado de no-aceptacion, M proceder
a a procesar la entrada en la segunda cinta, simulando a M2 . Si
M2 acepta, M tambien aceptar
a pero si M2 se detiene en un estado
de rechazo, M tambien se detendra y no aceptar
a. Puesto que tanto
M1 como M2 siempre se detienen, L(M ) = L1 L2 .
3. El procedimiento del numeral anterior ya no sirve en este caso porque
es posible que M1 o M2 nunca se detengan al procesar una entrada
particular. En lugar de una simulacion consecutiva de las m
aquinas
dadas, se necesita que M simule simult
aneamente a M1 y a M2 . Para
lograrlo utilizamos tambien dos cintas, la primera para simular a M1
y la segunda para simular a M2 . En cada paso computacional, M
simula un paso de M1 y uno de M2 .
Resulta muy instructivo presentar explcitamente una m
aquina M que
implemente la anterior idea intuitiva. Aparte de los estados especiales

6.8. PROPIEDADES DE CLAUSURA

195

qe y qf , definidos m
as adelante, los estados de M son parejas de la
forma (p, q), donde p es un estado de M1 y q un estado de M2 . Cada
par de transiciones
1 (q1 , s1 ) = (p1 , r1 , D1 )

(transici
on de M1 ),

2 (q2 , s2 ) = (p2 , r2 , D2 )

(transici
on de M2 ),

da lugar a la siguiente transicion en la m


aquina M :
(q1 , q2 ), (s1 , s2 ) = (p1 , p2 ), (r1 , D1 ), (r2 , D2 ) .
Si alguno de los estados q1 o q2 es un estado de aceptaci
on de M1
o M2 , respectivamente, hacemos que M ingrese y se detenga en un
estado qf (estado nuevo), que sera el u
nico estado de aceptaci
on de
M . Esto se consigue con la transicion
(q1 , q2 ), (s1 , s2 ) = qf , (s1 , ), (s2 , ) .
Tambien hay que permitir que M siga operando en una de las cintas
incluso si se ha detenido en la otra en un estado de no aceptaci
on.
Por ejemplo, si 1 (q1 , s1 ) no esta definida en M1 , pero 2 (q2 , s2 ) =
(p2 , r2 , D2 ) es una transicion de M2 , definimos
(q1 , q2 ), (s1 , s2 ) = (qe , p2 ), (s1 , ), (s2 , D2 ) ,
donde qe es un estado especial (nuevo). Por medio de esta transici
on, cuando M ingrese en el estado qe en alguna de las cintas, se
detendra en dicha cinta pero contin
ua la simulacion en la otra. Si M
ingresa al estado (qe , qe ), se detendra sin aceptar.
El siguiente teorema establece una importante conexi
on entre las nociones
de lenguaje recursivo y lenguaje RE, la cual se puede demostrar con la
tecnica de simulacion simult
anea de dos MT usada en el Teorema 6.8.1.
Encontraremos aplicaciones u
tiles de este resultado en el Captulo 7.
6.8.2 Teorema. Un lenguaje L es recursivo si y s
olo si L y su complemento
L son RE.
on es directa:
Demostraci
on. En la direccion izquierda a derecha, la conclusi
si L es recursivo, obviamente es RE. L es tambien recursivo (parte 1 del
Teorema 6.8.1) y por lo tanto RE.
La parte esencial de este teorema es la otra direccion: si L y L son RE,
entonces L debe ser recursivo. Para verlo, partimos de dos m
aquinas M1 y

196

CAPITULO 6. MAQUINAS
DE TURING

M2 que acepten a L y L, respectivamente. Construimos luego una MT M


que simule simult
aneamente a M1 y M2 , tal como se hizo en la parte 3 del
Teorema 6.8.1. Puesto que para una entrada w s
olo hay dos posibilidades,
aquina M eventualmente se detendra en
w L o w L, entonces la m
la cinta 1 o en la cinta 2. En el primer caso, M acepta la entrada y en
el segundo caso la rechaza. Como M se detiene con toda entrada, L es
recursivo.
El siguiente teorema justifica la denominacion recursivamente enumerable para los lenguajes aceptados por m
aquinas de Turing.
6.8.3 Teorema. Para todo lenguaje L aceptado por una MT M , se puede
construir una MT M que enumere secuencialmente las cadenas de L.
a tres cintas. Las cadenas
Bosquejo de la demostraci
on. La MT M tendr
de L seran enumeradas secuencialmente en la cinta 1 usando el smbolo
& como separador: w1 &w2 &w3 & . La cinta 2 se usa para generar todas
las cadenas de en el orden lexicogr
afico, utilizando la subrutina construida en el ejercicio de la secci
on 6.4, modificada de tal manera que
las cadenas queden separadas entre s por el separador &. En la cinta 2
tambien se escribe, a la izquierda de la lista de cadenas, un contador que
registra el n
umero de cadenas generadas. La cinta 3 se usa para simular el
procesamiento de M sobre las cadenas que se generan en la cinta 2.
Para precisar, M procede seg
un las siguientes acciones:
Acci
on 1. M genera sobre la cinta 2 la primera cadena de (o sea, ) y
simula en la cinta 3 un movimiento de la accion de M sobre .
Acci
on 2. M genera sobre la cinta 2 la segunda cadena de y simula, en
la cinta 3, dos movimientos de la accion de M sobre dicha cadena,
as como un movimiento m
as del procesamiento de la cadena .
Acci
on i, (i 1). M genera sobre la cinta 2 la i-esima cadena de y
simula, en la cinta 3, i movimientos de la accion de M sobre dicha
cadena, as como un movimiento m
as del procesamiento de las i 1
cadenas previamente generadas en la cinta 2. Se incrementa luego,
en la cinta 2, el contador i de cadenas generadas (este es tambien
el contador del n
umero de movimientos simulados para cada cadena
generada).
Al concluir la accion i se han generado en la segunda cinta las i primeras
cadenas de y se han simulado, en la cinta 3, los i primeros movimientos
que M realiza sobre esas cadenas. Si durante la simulacion, alguna cadena

6.8. PROPIEDADES DE CLAUSURA

197

es aceptada por M , M la copia en la cinta 1. Las casillas ocupadas en la


cinta 3 por las simulaciones de cadenas ya aceptadas se tachan (es decir,
se marcan con un smbolo especial), de tal manera que M no tenga que
procesarlas en los pasos subsiguientes.
Para acomodar las simulaciones, cada vez m
as extensas, puede ser necesario usar en la cinta 3 subrutinas de desplazamiento de cadenas, a izquierda o a derecha. En todo caso, al terminar la accion i, M ha utilizado una
porci
on finita en cada una de las tres cintas.

Ejercicios de la secci
on 6.8

Utilizando razonamientos similares a los del Teorema 6.8.1 demostrar


lo siguiente:
(i) Si L1 y L2 son recursivos, L1 L2 es recursivo.
(ii) Si L1 y L2 son RE, L1 L2 es RE.
(iii) Si L1 y L2 son recursivos, L1 L2 es recursivo.
Sabiendo que existen lenguajes RE no recursivos (lo cual sera demostrado en la secci
on 7.5), demostrar que el complemento de un lenguaje
RE no necesariamente es RE.
! Demostrar que tanto los lenguajes recursivos como los lenguajes RE
son cerrados para la concatenaci
on. Es decir, si L1 y L2 son recursivos,
L1 L2 tambien es recursivo, y si L1 y L2 son RE, L1 L2 es RE.
Advertencia: no basta unir las m
aquinas de Turing en serie por medio
de transiciones espontaneas, como se hizo en la demostraci
on del Teorema de Kleene; hay que tener en cuenta que una MT puede aceptar
cadenas de entrada sin leerlas (consumirlas) completamente.
! Demostrar que tanto los lenguajes recursivos como los lenguajes RE
son cerrados para la estrella de Kleene. Es decir, si L es recursivo, L
tambien es recursivo, y si L RE, L es RE. Ayuda: tener en cuenta
la misma advertencia del ejercicio .
! Sea L un lenguaje recursivo pero no RE, demostrar que para toda
MT M que acepte a L hay infinitas cadenas de entrada con las cuales
M no se detiene nunca. Ayuda: razonar por contradicci
on.

198

CAPITULO 6. MAQUINAS
DE TURING

6.9.

M
aquinas de Turing, computadores,
algoritmos y la tesis de Church-Turing

Si bien la m
aquina de Turing antecedio en varias decadas a la implementaci
on fsica de los computadores actuales, ha resultado ser un modelo muy
conveniente para representar lo computable (lo que es capaz de hacer
cualquier dispositivo fsico de computaci
on secuencial).

6.9.1.

M
aquinas de Turing y algoritmos

Seg
un nuestra experiencia en las secciones anteriores, dise
nar una MT es
muy similar a escribir un programa computacional ya que la funcion de
transicion de una MT no es otra cosa que un conjunto de instrucciones.
Se establece as una conexi
on intuitiva directa entre m
aquinas de Turing y
algoritmos. La declaraci
on conocida como tesis de Church-Turing afirma
que dicha conexi
on es en realidad una equivalencia.
6.9.1. Tesis de Church-Turing. Todo algoritmo puede ser descrito por
medio de una m
aquina de Turing.
En su formulacion m
as amplia, la tesis de Church-Turing abarca tanto
los algoritmos que producen una salida para cada entrada como aquellos
que no terminan (ingresan en bucles infinitos) para algunas entradas.
Para apreciar su significado y su alcance, hay que enfatizar que la Tesis
de Church-Turing no es un enunciado matem
atico susceptible de demostraci
on, ya que involucra la noci
on intuitiva de algoritmo. En otras palabras,
la tesis no se puede demostrar. Se podra refutar, no obstante, exhibiendo
un procedimiento efectivo, que todo el mundo acepte que es un verdadero
algoritmo y que no pueda ser descrito por una m
aquina de Turing. Pero
tal refutaci
on no se ha producido hasta la fecha; de hecho, la experiencia
acumulada durante decadas de investigacion ha corroborado una y otra vez
la tesis de Church-Turing.
Hay dos hechos m
as que contribuyen a apoyar la tesis:
1. La adicion de recursos computacionales a las m
aquinas de Turing
(m
ultiples pistas o cintas, no determinismo, etc) no incrementa el
poder computacional del modelo basico. Esto es un indicativo de que
la m
aquina de Turing, no s
olo es extremadamente flexible, sino que
representa el lmite de lo que un dispositivo de computaci
on secuencial
puede hacer.

6.9. MT, COMPUTADORES, ALGORITMOS Y LA TESIS DE CHURCH-TURING

199

2. Todos los modelos o mecanismos computacionales propuestos para


describir formalmente la noci
on de algoritmo han resultado ser equivalentes a la m
aquina de Turing, en el sentido de que lo que se puede
hacer con ellos tambien se puede hacer con una MT adecuada, y viceversa. Entre los modelos de computaci
on secuencial equivalentes a
la m
aquina de Turing podemos citar:
Las funciones parciales recursivas (modelo de G
odel y Kleene,
1936).
El calculo- (modelo de Church, 1936).
Sistemas de deduccion canonica (modelo de Post, 1943).
Algoritmos de Markov (modelo de Markov, 1951).
Las gramaticas no-restringidas1 (modelo de Chomsky, 1956).
Las m
aquinas de registro (modelo de Shepherdson-Sturgis, 1963).
En el proximo captulo tendremos la oportunidad de usar la tesis de ChurchTuring en situaciones concretas.

6.9.2.

M
aquinas de Turing y computadores

Hagamos un bosquejo bastante superficial e incompleto de como los


computadores comunes y las m
aquinas de Turing se pueden simular entre
s.
En primer lugar, una MT esta determinada por un conjunto finito de
instrucciones (su funcion de transicion) y esta definida con referencia a
alfabetos finitos. Por lo tanto, se puede programar un computador para
que simule una MT dada, siempre y cuando se disponga de una capacidad
de almacenamiento (memoria, discos, etc) potencialmente infinita, que corresponda a la cinta infinita de una MT. Teoricamente, por lo menos, esta
simulacion es concebible y plausible.
Recprocamente, el modelo multi-cintas de m
aquina de Turing se puede
usar para simular el funcionamiento de un computador tpico. Se utilizara
una cinta para simular la memoria principal del computador, otra para las
direcciones de memoria y un n
umero adicional (pero finito) de cintas para
simular los discos de almacenamiento presentes en un computador real. La
m
aquina de Turing as construida es basicamente la llamada M
aquina de
Turing universal que se presentar
a detalladamente en la secci
on 7.2.
1
Se puede demostrar que los lenguajes RE son exactamente los lenguajes generados
por las gram
aticas de tipo 0, o no-restringidas, mencionadas en la secci
on 4.1.

Captulo

Problemas indecidibles
La importancia de un modelo simple pero capaz de emular cualquier dispositivo de computaci
on como lo es la m
aquina de Turing radica no s
olo
en que permite estudiar lo que puede hacer sino tambien lo que no puede
hacer una m
aquina de computo, aun si dispone de recursos inagotables, como tiempo y espacio de almacenamiento ilimitados (es decir, cinta infinita
y tiempo de ejecuci
on indefinido). En este captulo estudiaremos problemas
que ninguna m
aquina de Turing puede resolver.

7.1.

Codificaci
on y enumeraci
on de m
aquinas
de Turing

Toda MT se puede codificar como una secuencia binaria finita, es decir


una secuencia finita de ceros y unos. En esta secci
on presentaremos una
codificaci
on valida para todas las MT que act
uen sobre un alfabeto de
entrada pre-establecido. Para simplificar la codificaci
on, suponemos que
toda MT tiene un u
nico estado inicial, denotado q1 , y un u
nico estado final,
denotado q2 (en la secci
on 6.5.1 se mostro que esta modificaci
on siempre se
puede hacer, sin alterar los lenguajes aceptados).
El alfabeto de cinta de una MT M es de la forma
= {s1 , s2 , . . . , sm , . . . , sp }
donde s1 representa el smbolo blanco b, = {s2 , . . . , sm } es el alfabeto de
entrada y sm+1 , . . . , sp son los smbolos auxiliares utilizados por M (cada
MT utiliza su propia colecci
on finita de smbolos auxiliares). Todos estos
smbolos se codifican como secuencias de unos:
201

202

CAPITULO 7. PROBLEMAS INDECIDIBLES

Smbolo
s1 (smbolo b)
s2
s3
..
.

Codificaci
on
1
11
111
..
.
11 1

sm

m veces

..
.
11 1

..
.
sp

p veces

Los estados de una MT, q1 , q2 , q3 , . . . , qn , se codifican tambien con secuencias de unos:


Estado
q1 (inicial)
q2 (final)
..
.
qn

Codificaci
on
1
11
..
.
11 1
n veces

Las directrices de desplazamiento , y se codifican con 1, 11 y 111,


respectivamente. Una transicion (q, a) = (p, b, D) se codifica usando ceros
como separadores entre los estados, los smbolos del alfabeto de cinta y la
directriz de desplazamiento D. As, la transicion (q3 , s2 ) = (q5 , s3 , ) se
codifica como
01110110111110111010
En general, la codificaci
on de una transicion cualquiera (qi , sk ) = (qj , s , D)
es
01i 01k 01j 01 01t 0
donde t = 1
o 2
o 3, seg
un D sea , o . Observese que aparecen
exactamente seis ceros separados por secuencias de unos.
Una MT se codifica escribiendo consecutivamente las secuencias de las
codificaciones de todas sus transiciones. M
as precisamente, la codificaci
on
de una MT M es de la forma
C1 C2 Cr
donde las Ci son las codificaciones de las transiciones de M . Puesto que
el orden en que se presentan las transiciones de una MT no es relevante,

Y ENUMERACION
DE MAQUINAS

7.1. CODIFICACION
DE TURING

203

una misma MT tiene varias codificaciones diferentes. Esto no representa


ninguna desventaja practica o conceptual ya que no se pretende que las
codificaciones sean u
nicas.

Ejemplo

Considerese la siguiente MT M que acepta el lenguaje a+ b:


(q1 , a) = (q3 , a, )
(q3 , a) = (q3 , a, )
(q3 , b) = (q4 , b, )
(q4 , b) = (q2 , b, )

Si los smbolos del alfabeto de cinta b, a y b se codifican con 1, 11 y 111,


respectivamente, la MT M se puede codificar con la siguiente secuencia
binaria:
010110111011010011101101110110100111011101111011101001111010110101110

la cual se puede escribir tambien como


01012 013 012 010013 012 013 012 010013 013 014 013 010014 01012 01013 0.
Cambiando el orden de las cuatro transiciones de M obtendramos en total
4! = 24 codificaciones diferentes para M .
Es claro que no todas las secuencias binarias representan una MT:
la codificaci
on de una MT no puede comenzar con 1 ni pueden aparecer tres ceros consecutivos. As, las secuencias 0101000110, 010001110 y
1011010110111010 no codifican ninguna MT. No es difcil concebir un algoritmo que determine si una secuencia binaria finita dada es o no una MT y
que la decodifique en caso afirmativo. Una cadena binaria que codifique una
MT se denomina un c
odigo v
alido de una MT. Si una cadena binaria
no es un codigo valido de una MT, supondremos que codifica la MT con un
solo estado y sin transiciones; tal MT no acepta ninguna cadena, es decir,
acepta el lenguaje . De esta forma, todas las cadenas binarias representan
m
aquinas de Turing.
Por otro lado, las cadenas de ceros y unos se pueden ordenar lexicogr
aficamente; el orden se establece por longitud y las cadenas de la misma
longitud se ordenan ortograficamente de izquierda a derecha (considerando
0 < 1). Este orden comienza as:
0, 1, 00, 01, 10, 11, 000, 001, 010, 011, 100, 101, 110, 111, 0000, 0001, 0010, . . .

204

CAPITULO 7. PROBLEMAS INDECIDIBLES

Tenemos entonces una enumeraci


on de todas las cadenas binarias. Dado
un alfabeto , cada cadena binaria en la anterior lista representa, seg
un
la codificaci
on definida arriba, una m
aquina de Turing que act
ua sobre .
Podemos entonces hablar de la i-esima m
aquina de Turing, la cual denotaremos por Mi . N
otese que en la enumeraci
on M1 , M2 , M3 , . . ., cada MT
aparece varias veces (porque al cambiar el orden de las transiciones se obtiene una codificaci
on diferente). Las MT que aceptan el lenguaje aparecen
infinitas veces en la enumeraci
on.
Tambien sera necesario codificar el conjunto de todas las cadenas sobre el
alfabeto de entrada = {s2 , . . . , sm }, de tal manera que toda cadena tenga
un codigo binario y toda secuencia binaria represente una cadena de .
Una vez codificados los smbolos de , las cadenas de se pueden codificar
usando 0 como separador. Por ejemplo, la cadena aabbab se codifica como
01101101110101101110
si los smbolos a y b hacen parte de y se han codificado como 11 y
111. N
otese que en la codificaci
on de una cadena w no aparecen
nunca dos ceros consecutivos. En general, la codificaci
on de una cadena
si1 si2 sik es
01i1 01i2 0 01ik 0.
Las cadenas de se pueden ordenar lexicogr
aficamente estableciendo primero un orden arbitrario (pero fijo) para los smbolos de , por ejemplo,
s2 < s3 < < sm . El orden lexicogr
afico de las cadenas de induce un
orden en el conjunto de las codificaciones; obtenemos as una enumeraci
on
w1 , w2 , w3 , . . . de los c
odigos de cadenas de . Esto nos permite hablar
de la i-esima cadena de entrada, wi .
Aunque tenemos dos enumeraciones diferentes, w1 , w2 , w3 , . . . (c
odigos
de cadenas sobre ), y M1 , M2 , M3 , . . . (c
odigos de m
aquinas de Turing
sobre ), no habr
a peligro de confusi
on pues el contexto permitira saber a
cu
al de las dos enumeraciones nos estamos refiriendo.

Es corriente identificar las cadenas de entrada w y las MT M


con sus respectivas codificaciones binarias, y haremos eso en lo
sucesivo.

El mecanismo de enumeraci
on presentado en esta secci
on permite
tambien concluir que el conjunto de todas las m
aquinas de Turing
(sobre un alfabeto dado ) es infinito enumerable.

Y ENUMERACION
DE MAQUINAS

7.1. CODIFICACION
DE TURING

Ejercicios de la secci
on 7.1

205

Sea M la MT definida por el siguiente diagrama de estados:


a|a

b|b

> q1

q3

b|b
q4

a|a

b|b
q2

Determinar el lenguaje aceptado por M y codificar la m


aquina M
siguiendo el esquema presentado en esta secci
on (codificar los smbolos
del alfabeto de cinta b, a y b con 1, 11 y 111, respectivamente).
Las siguientes secuencias binarias codifican MT que act
uan sobre el
alfabeto de entrada = {a, b}, siguiendo el esquema de codificaci
on
presentado en esta secci
on. Decodificar las m
aquinas y determinar en
cada caso el lenguaje aceptado (los smbolos b, a y b estan codificados
como 1, 11 y 111, respectivamente).
sigue

(i)

010110111011010011101110111101110100111101110
111101110100111101101111101101001111010110101110

(ii)

01013 01013 01001012 013 012 01001012 015 012 0100

sigue

sigue

13 012 014 012 010014 013 01013 010015 013 01013 0100
15 01012 01013 00101012 01013
Supongase que el alfabeto de entrada es = {a, b, c, d} y que los
smbolos a, b, c y d se codifican como 11, 111, 1111 y 11111, respectivamente. Supongase tambien que se establece el orden a < b < c < d
para los smbolos de .
(i) Codificar las cadenas dacb, cddab y badbcc.
(ii) Escribir explcitamente las cadenas binarias w6 , w15 , w22 y w25 .
(iii) Que puesto ocupa el codigo de la cadena cbd en el orden w1 ,
w2 , w3 , . . .? En otros terminos, encontrar el ndice i tal que wi
es el codigo de cbd.
Escribir las codificaciones de las siguientes MT: M7 , M14 , M65 , M150
y M255 . Cual es el lenguaje aceptado por tales m
aquinas?

206

CAPITULO 7. PROBLEMAS INDECIDIBLES

7.2.

M
aquina de Turing universal

La m
aquina de Turing universal Mu simula el comportamiento de todas
las MT (sobre un alfabeto de entrada dado). Mu procesa pares (M, w),
siendo M la codificaci
on de una MT determinada y w la codificaci
on de

una cadena de entrada perteneciente a (estas codificaciones se hacen en


la forma indicada en la secci
on 7.1). La pareja (M, w) se puede presentar
tambien como una cadena binaria, en la forma M 0w. Es decir, los codigos
de M y w se separan con un cero. Puesto que el codigo de M termina en 0 y
el de w comienza con 0, en la cadena M 0w aparecen tres ceros consecutivos
u
nicamente en el sitio que separa los codigos de M y w.
Mu es una MT con tres cintas cuyo alfabeto de cinta es {0, 1, } (el
smbolo blanco de Mu difiere del smbolo blanco b utilizado por las demas
m
aquinas de Turing). La primera cinta contiene el codigo de una MT M
determinada; la segunda cinta contiene inicialmente el codigo de una entrada w y se usa para simular el procesamiento que hace M de w. La tercera
cinta se usa para almacenar el estado actual de M , tambien codificado: q1
se codifica como 1, q2 se codifica como 11, q3 como 111, etc. En la siguiente
gr
afica se muestran las tres cintas de Mu :

Cinta 1
Codigo de una MT M

Cinta 2
Codigo de una entrada w

Cinta 3
Codigo del estado actual de M

La entrada M 0w, que representa el par (M, w), se escribe en la primera


cinta; las otras dos cintas estan inicialmente marcadas con el smbolo de
Mu . La m
aquina Mu procede de la siguiente manera:
1. Deja el codigo de M en la primera cinta y pasa el codigo de w a la
segunda cinta. Como se indic
o arriba, para separar los codigos de M y
w se busca el u
nico sitio de la cadena que tiene tres ceros consecutivos.


7.2. MAQUINA
DE TURING UNIVERSAL

207

2. La cadena 1, que representa el estado inicial q1 , se coloca en la tercera


cinta. La unidad de control pasa a escanear el primer smbolo de cada
cadena binaria, en cada una de las tres cintas.
3. Examina el codigo de M para determinar si representa una MT. En
caso negativo, Mu se detiene sin aceptar (recuerdese que los codigos
no validos representan una MT que no acepta ninguna cadena).
4. Mu utiliza la informaci
on de las cintas 2 y 3 para buscar en la cinta 1
la transicion que sea aplicable. Si encuentra una transicion aplicable,
Mu simula en la cinta 2 lo que hara M y cambia el estado se
nalado en
la cinta 3. Esto requiere re-escribir la cadena de la cinta 2 desplazando
adecuadamente los smbolos a izquierda o a derecha; para lo cual se
utilizan las subrutinas mencionadas en la secci
on 6.2. La simulacion
contin
ua de esta forma, si hay transiciones aplicables. Despues de
realizar una transicion, la unidad de control regresa, en la primera y
tercera cintas, al primer smbolo de la cadena.
Si al procesar una entrada w, Mu se detiene en el u
nico estado de
aceptaci
on de M (que es q1 y esta codificado como 1), entonces la
cadena w sera aceptada. Por consiguiente, Mu tiene tambien un u
nico
estado de aceptaci
on, q1 , que es el mismo estado de aceptaci
on de
cualquier otra MT.
5. Si Mu no encuentra una transicion aplicable o se detiene en un estado
que no es de aceptaci
on, Mu se detiene sin aceptar, como lo hara M .
Se tiene entonces que Mu acepta la entrada M 0w si y solamente si M
acepta a w. De modo que el lenguaje aceptado por la m
aquina de Turing
universal Mu se puede describir explcitamente; este lenguaje se denomina
corrientemente el lenguaje universal y se denota con Lu :
Lu = {M 0w : la MT M acepta la cadena w }.
El lenguaje universal Lu es, por consiguiente, un lenguaje RE.
Utilizando codificaciones binarias, en lugar de unitarias, es posible construir una m
aquina de Turing universal m
as eficiente (veanse los detalles en
el recuadro gris al final de esta secci
on).
Para comprender el significado del concepto de m
aquina de Turing universal podemos recurrir a una u
til analoga, ilustrada en la siguiente figura:

208

CAPITULO 7. PROBLEMAS INDECIDIBLES

Mu

prog
ram
a
M

Como la funcion de transicion de una MT no es m


as que una lista de instrucciones, podemos concebir una MT como un programa computacional y
la m
aquina de Turing universal resulta ser un mecanismo en el que podemos ejecutar todos los programas. En otros terminos, la m
aquina de Turing
universal es una m
aquina de Turing programable.

Como hemos utilizado una codificaci


on unitaria (cadenas de unos)
de longitud variable para los smbolos del alfabeto de cinta y para
los estados, el funcionamiento de la m
aquina de Turing universal
es muy ineficiente: las acciones descritas en el numeral 4 exigen
continuos desplazamientos de las cadenas previamente escritas en
la cinta 2. Se podra utilizar una codificaci
on binaria para asegurar
que cada smbolo codificado ocupe el mismo n
umero de casillas.
Concretamente, si una MT M utiliza el lenguaje de cinta =
{s1 , s2 , . . . , sm , . . . , sp }, donde s1 = b, un smbolo de se puede
codificar por medio de una codificaci
on binaria de exactamente k
bits (codificaci
on de longitud k), siendo k el menor entero tal que
p 2k . Las cadenas de se pueden codificar luego usando un
smbolo adicional, por ejemplo #, como separador.
La codificaci
on binaria tambien se puede utilizar para los estados
y para las transiciones de una MT cualquiera. De esta forma, se
puede construir una m
aquina de Turing universal m
as eficiente,
que funcione como se describi
o en los numerales 1 a 5, pero que
utilice codificaciones binarias de longitud fija para re-escribir las
transiciones de cada MT M y para simularla.

PARA LENGUAJES RE
7.3. ALGORITMOS DE ACEPTACION

7.3.

209

Algoritmos de aceptaci
on para lenguajes RE

Recurriendo a la tesis de Church-Turing, se puede concluir que un lenguaje


L es RE si se exhibe un algoritmo de aceptaci
on1 para L. Para una
entrada u, el algoritmo debe finalizar con aceptaci
on si y s
olo si u L.
Si u
/ L, el algoritmo puede detenerse, sin aceptar, o puede no detenerse
nunca.

la m
aquina de Turing universal Mu y concluir que Lu es RE

Ejemplo

El argumento que se us
o en la secci
on anterior para construir

se puede presentar como un algoritmo de aceptaci


on:
1. Entrada: M 0w.
2. Ejecutar la MT M con la entrada w.
3. Aceptar si M se detiene en un estado de aceptaci
on.
Este algoritmo finaliza con aceptaci
on si M acepta a w. Si M no acepta
a w, el algoritmo puede terminar cuando M se detenga en un estado de
rechazo, o puede no terminar nunca. En conclusi
on: el algoritmo finaliza
con aceptaci
on de la entrada M 0w si y s
olo si M acepta a w.

Ejemplo

Demostrar que el lenguaje

La = {M : L(M ) = } = {M : M acepta alguna cadena}.


es RE.
Solucion. Usando el Teorema 6.8.3 se puede presentar el siguiente algoritmo
para aceptar a La :
1. Entrada: una MT M arbitraria.
2. Construir la MT M del Teorema 6.8.3; M enumera secuencialmente
las cadenas de L(M ).
3. Detenerse y aceptar cuando M genere la primera cadena.
1

Aqu estamos usando la noci


on de algoritmo en una acepci
on muy amplia. Por lo
general, se exige que un algoritmo siempre debe finalizar con una salida, es decir, no debe
tener bucles infinitos.

210

CAPITULO 7. PROBLEMAS INDECIDIBLES

Si M acepta alguna cadena, esta sera generada eventualmente por M .


Si M no acepta ninguna cadena, el anterior algoritmo nunca termina. En
conclusi
on: el algoritmo finaliza con aceptaci
on de la entrada M si y s
olo
si M acepta alguna cadena.
Tambien podemos presentar un algoritmo no-determinista para aceptar
a La . En un algoritmo no-determinista hay una etapa de conjetura que
corresponde a una b
usqueda exhaustiva en un algoritmo determinista. He
aqu un algoritmo no-determinista para aceptar a La :
1. Entrada: una MT M arbitraria.
2. Escoger de manera no-determinista una cadena w sobre el alfabeto de
cinta. Esto se hace con una subrutina generadora como la del ejemplo
de la secci
on 6.5.4. Una escogencia no-determinista generalmente se
llama una conjetura.
3. Ejecutar la MT M con la entrada w.
4. Aceptar si M se detiene en un estado de aceptaci
on.
N
otese que si M acepta aunque sea una cadena, esta sera encontrada, eventualmente, en el paso 2. Si M no acepta ninguna cadena, el anterior algoritmo nunca termina. En conclusi
on: el algoritmo finaliza con aceptaci
on
de la entrada M si y solo si M acepta alguna cadena.
Los dos algoritmos de este ejemplo son esencialmente el mismo (lo cual
corresponde al hecho de que las MT deterministas y las no-deterministas
tienen el mismo poder computacional): en el primero se hace una b
usqueda
exhaustiva de una cadena aceptada por M ; en el segundo se hace una
conjetura de una cadena aceptada. Ambos algoritmos finalizan u
nicamente
si la MT M acepta alguna cadena.

Ejercicios de la secci
on 7.3

Presentar algoritmos de aceptaci


on, similares a los de los ejemplos de esta
secci
on, para concluir que los siguientes lenguajes son RE:
Lp = {M 0w : M se detiene con entrada w}.
Lb = {M : M se detiene al operar con la cinta en blanco}.
L = {M : M se detiene con al menos una entrada}.
L = {M : M acepta por lo menos dos cadenas}.
L = {(M1 , M2 ) : L(M1 ) L(M2 ) = }. Nota: Las parejas de MT
(M1 , M2 ) se pueden codificar en la forma M1 0M2 .

7.4. LENGUAJES QUE NO SON RE

7.4.

211

Lenguajes que no son RE

En esta secci
on exhibiremos un lenguaje que no es RE, o sea, un lenguaje
que no puede ser reconocido por ninguna MT. Recordemos que para concluir que el lenguaje L = {ai bi : i 0} no es regular y que el lenguaje
L = {ai bi ci : i 0} no es LIC utilizamos razonamientos por contradicci
on
(basados en lemas de bombeo). Aqu tambien razonaremos por contradicci
on, aunque el lenguaje definido es completamente artificial y la contradicci
on se obtiene por medio de un argumento diagonal de interacci
on entre
las enumeraciones w1 , w2 , w3 , . . . (entradas) y M1 , M2 , M3 , . . . (m
aquinas
de Turing).
7.4.1 Teorema. El lenguaje
L = {wi : wi no es aceptada por Mi }
no es RE, es decir, no es aceptado por ninguna MT.
Demostraci
on. Razonamos suponiendo que L s es RE para llegar a una
contradicci
on. Si L fuera RE sera aceptado por una MT Mk , con respecto
a la enumeraci
on de m
aquinas de Turing ya descrita. Es decir, L = L(Mk )
para alg
un k. Se tendra entonces
wk L = wk no es aceptada por Mk = wk
/ L(Mk ) = L.
wk
/ L = wk
/ L(Mk ) = wk es aceptada por Mk = wk L.
Por lo tanto, wk L wk
/ L, lo cual es una contradicci
on.
El lenguaje L del Teorema 7.4.1 se denomina lenguaje de diagonalizaci
on y se denota con Ld :
Ld = {wi : wi no es aceptada por Mi }.
A lo largo de este captulo encontraremos otros lenguajes que no son RE.

El argumento diagonal del Teorema 7.4.1 recuerda el argumento


utilizado por Cantor para demostrar que el conjunto de los n
umeros reales no es enumerable. Tal argumento consiste en suponer,
razonando por contradicci
on, que el conjunto de los n
umeros reales
entre 0 y 1 es enumerable: r1 , r2 , r3 , . . . . Si se escriben las expansiones decimales de los n
umeros (evitando las secuencias de nueves
finales, para eliminar representaciones m
ultiples), se obtendra una
matriz infinita de la forma:

212

CAPITULO 7. PROBLEMAS INDECIDIBLES

r1 = 0.a11 a12 a13


r2 = 0.a21 a22 a23
r3 = 0.a31 a32 a33
..
..
.
.
Un n
umero real r = 0.b1 b2 b3 bk , en el que bi = aii y bi = 9
para todo i, sera diferente de todos y cada uno de los rk . Es decir,
dada cualquier enumeraci
on de los reales del intervalo [0, 1], se puede
siempre construir un real que no este en la lista, y esto se puede lograr
modificando los dgitos de la diagonal principal.
Este argumento es completamente similar al de la demostraci
on del
Teorema 7.4.1. En la siguiente matriz infinita hay un 1 en la posicion
(i, j) si Mi acepta a wj , y un 0 si Mi no acepta a wj :
M1
M2
M3
..
.

w1 w2 w3 w4
0
0
1
0
1
0
0
0
0
1
1
0
..
.

Las filas representan todos los lenguajes RE. Por diagonalizaci


on
construimos un lenguaje que no puede estar en esa lista y, por lo
tanto, no puede ser RE. El lenguaje Ld se construye complementando la diagonal (cambiando ceros por unos y unos por ceros).

7.5.

Lenguajes RE no recursivos

A continuaci
on mostraremos que existen lenguajes RE que no son recursivos, lo cual quiere decir que la contenencia
Lenguajes recursivos

Lenguajes RE

es estricta o propia (no hay igualdad). Esto implica que existen lenguajes
que pueden ser aceptados por MT especficas pero en cualquier MT que
los acepte habr
a computos que nunca terminan (obviamente, los computos de las cadenas aceptadas siempre terminan). De este hecho extraemos
la siguiente importante conclusi
on: los c
omputos interminables, o bucles
infinitos, no se pueden eliminar de la teora de la computaci
on.
El primer ejemplo de un lenguaje RE no-recursivo es el lenguaje universal Lu presentado en la secci
on 7.2.

7.5. LENGUAJES RE NO RECURSIVOS

213

7.5.1 Teorema. El lenguaje universal,


Lu = {M 0w : M acepta a w},
es RE pero no es recursivo.
Demostraci
on. En las secciones 7.2 y 7.3 se vi
o que Lu es RE. Para mostrar
que Lu no es recursivo razonamos por contradicci
on: suponemos que existe
una MT M que procesa todas las entradas M 0w y se detiene siempre en
un estado de aceptacion (si M acepta a w) o en uno de rechazo (si M
acepta a w). Esta suposicion permitira construir una MT M que acepte
el lenguaje Ld del Teorema 7.4.1, de lo cual se deducira que Ld es RE,
contradiciendo as la conclusi
on de dicho teorema.

Con una entrada w , la m


aquina M procede as: enumera sistematicamente las cadenas w1 , w2 , w3 , . . . hasta que encuentra un k tal que
w = wk . Luego simula (o invoca) a M con entrada Mk 0wk , decidiendo
si Mk acepta o no a wk . Por lo tanto, M acepta el lenguaje Ld , o sea,
L(M ) = Ld . Esto significa, en particular, que Ld es RE lo cual contradice
el Teorema 7.4.1.
El siguiente teorema sirve como fuente de ejemplos de lenguajes no RE.
7.5.2 Teorema. Si L es un lenguaje RE no recursivo, L no es RE.
Demostraci
on. Razonamiento por contradicci
on: por el Teorema 6.8.2, si
L fuera RE, L sera recursivo.
Como aplicacion de este resultado podemos concluir que el complemento
del lenguaje universal, Lu , no es RE. La siguiente gr
afica muestra la relaci
on
entre los lenguajes recursivos, los lenguajes RE y los no RE:

RE
no RE
recursivos
Lu

Lu
RE pero no recursivos

Ld

214

CAPITULO 7. PROBLEMAS INDECIDIBLES

Los resultados de las dos u


ltimas secciones permiten establecer las relaciones de contenencia entre las colecciones de lenguajes estudiadas en este
curso (sobre un alfabeto dado):
Regulares

LIC

Recursivos

RE

( ).

Regulares
LIC
Recursivos
Recursivamente Enumerables
Todos los lenguajes

En captulos anteriores mostramos que hay lenguajes recursivos que no


son LIC y lenguajes LIC que no son regulares. En el presente captulo
hemos demostrado la existencia de lenguajes RE que no son recursivos y de
lenguajes que no son RE. Por tal razon, todas las contenencias anteriores
son estrictas.
En la siguiente tabla se muestra, a manera de resumen, la relaci
on entre
los lenguajes estudiados y las m
aquinas que los aceptan.
Lenguajes

M
aquinas aceptadoras

Regulares

Aut
omatas finitos (AFD AFN AFN-)

LIC

Aut
omatas con pila no-deterministas (AFPN)

RE

M
aquinas de Turing (MT)

Recursivos

M
aquinas de Turing que se detienen con toda entrada

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

7.6.

215

Problemas indecidibles o irresolubles

Dada una propiedad P referente a m


aquinas de Turing, un problema de
decisi
on para P consiste en buscar un algoritmo A, aplicable a toda MT M
(es decir, a toda codificaci
on binaria), que responda SI o NO a la pregunta:
satisface M la propiedad P? Si existe un algoritmo de decisi
on, se dice que
el problema P es decidible o resoluble; en caso contrario, el problema P
es indecidible o irresoluble.
Un algoritmo de decisi
on debe ser aplicable uniformemente a todas las
entradas (hay infinitas entradas!) y terminar con una de las conclusiones
SI o NO:

SI P se satisface

Entrada o
Instancia

Algoritmo
de decisi
on A

NO

P no se satisface

Seg
un la tesis de Church-Turing (secci
on 6.9), identificamos algoritmos con
m
aquinas de Turing y, por lo tanto, decir que el problema P es indecidible
equivale a afirmar que el lenguaje
L = {M : M es el codigo de una MT que satisface P}
no es recursivo.

Ejemplo El hecho de que el lenguaje universal Lu no es recursivo, esta


blecido en el Teorema 7.5.1, equivale a afirmar que el siguiente
problema de decisi
on (el problema universal) es indecidible:
Dada una MT M cualquiera, sobre un alfabeto de cinta predeterminado, y una cadena w , acepta M a w?
N
otese que las entradas o instancias para este problema son de la forma
M 0w donde M es el codigo de una MT y w es el codigo de una entrada
(sobre el alfabeto ).

216

CAPITULO 7. PROBLEMAS INDECIDIBLES

T
ecnica de reducci
on de problemas
Conociendo que ciertos problemas son indecidibles, se puede concluir que
otros problemas de decisi
on tambien lo son si se razona por contradicci
on.
Para ser m
as precisos, supongase que ya se sabe que un cierto problema
P1 es indecidible (como el problema universal, por ejemplo). Podramos
concluir que un problema dado P2 es indecidible razonando as: si P2 fuera
decidible tambien lo sera P1 . Esta contradicci
on mostrara que el problema
P2 no puede ser decidible. Cuando se emplea este razonamiento, se dice que
el problema P1 se reduce al problema P2 .
Para utilizar esta tecnica de reduccion, es necesario dise
nar un algoritmo
A (o una m
aquina de Turing) que sea capaz de convertir una entrada cualquiera u del problema P1 en entradas para el problema P2 de tal manera
que, al aplicar la supuesta MT M que resuelve el problema P2 , se llegue
a una decisi
on, SI o NO, del problema P1 para la entrada u. La siguiente
gr
afica ilustra este procedimiento; el algoritmo A, que aparece representado por el rectangulo a trozos, es la parte esencial del procedimiento de
reducci
on.
SI

Entrada
u de P1

Entrada
de P2

M
Decisi
on para P2

Decisi
on para P1
con entrada w

NO

moso problema (halting problem, en ingl


es), estudiado por el

Ejemplo

Problema de la parada o problema de la detencion. Este fa-

propio Turing, consiste en preguntar si existe un algoritmo para el siguiente


problema de decisi
on:
Dada una MT M cualquiera, sobre el alfabeto de cinta , y una
cadena w , se detiene M al procesar la entrada w?
El problema universal se puede reducir al problema de la parada. En otros
terminos, asumiendo la existencia de una MT M que resuelva el problema

217

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

de la parada se puede resolver el problema universal. La gr


afica siguiente
esboza el razonamiento.
SI
M
M

M 0w

M 0w

Decisi
on del problema
de la parada

Decisi
on del problema
universal

NO

Sea M 0w una entrada arbitraria (M y w codifican MT y cadenas de ,


respectivamente). La m
aquina M solamente devuelve la entrada M 0w, ya
que las entradas para el problema universal y para el problema de la parada
coinciden. Puesto que M es capaz de decidir si M se detiene o no con
entrada w, tendramos un algoritmo para resolver el problema universal:
1. Si M no se detiene con entrada w, entonces M no acepta a w.
2. Si M se detiene con entrada w, procesar w con M y determinar si es
aceptada o no.
Conclusion: si el problema de la parada fuera decidible, tambien lo sera el
problema universal.
El anterior argumento tambien permite concluir que el lenguaje
Lp = {M 0w : M se detiene con entrada w}
no es recursivo, aunque, seg
un el ejercicio de la secci
on 7.3, Lp es RE.

Ejemplo

Problema de la cinta en blanco.

Dada una MT M cualquiera, sobre el alfabeto de cinta , se


detiene M al iniciar su funcionamiento con la cinta en blanco
(todas las celdas marcadas con b)?

218

CAPITULO 7. PROBLEMAS INDECIDIBLES

El problema de la parada se puede reducir al problema de la cinta en


blanco, es decir, asumiendo la existencia de una MT M que resuelva el
problema de la cinta en blanco se puede resolver el problema de la parada.
La siguiente gr
afica esboza el razonamiento:
SI
M
M 0w

Decisi
on del problema
de la cinta en
blanco

Decisi
on del problema
de la parada

NO

Sea M 0w una entrada arbitraria. Construimos una MT M que empiece a


operar con la cinta en blanco y, como primera instruccion, escriba la cadena
M 0w en una porci
on reservada (finita) de la cinta. M simula luego el
procesamiento que hace M con entrada w. Como M inicia su procesamiento
con la cinta en blanco, podemos ejecutar la m
aquina (algoritmo) M, con

entrada M (codificada). M decide si M se detiene o no y, por lo tanto, se


obtiene una decisi
on sobre si M se detiene o no con entrada w. Conclusion:
si el problema de la cinta en blanco fuera decidible, tambien lo sera el
problema de la parada.
Lo anterior tambien permite concluir que el lenguaje
Lb = {M : M se detiene al operar con la cinta en blanco}
no es recursivo.

Ejercicios de la secci
on 7.6

Mediante la tecnica de reduccion de problemas mostrar que los siguientes problemas de decisi
on son indecidibles:
(i) Problema de la impresion: dada M = (Q, q0 , F, , , b, ) una
MT cualquiera y un smbolo s , imprimir
a M alguna vez
el smbolo s sobre la cinta si M inicia su funcionamiento con

7.6. PROBLEMAS INDECIDIBLES O IRRESOLUBLES

219

la cinta en blanco? Ayuda: reducir el problema de la cinta en


blanco a este problema.
(ii) Problema del ingreso a un estado: dada M = (Q, q0 , F, , , b, )
una MT cualquiera, una cadena de entrada w y estado
q Q, ingresar
a M al estado q al procesar la cadena w? Ayuda:
reducir el problema universal a este problema.
!(iii) Dada una MT M , L(M ) = ? Ayuda: el problema de la cinta
en blanco se puede reducir a este problema. Para ello, dise
nar
un algoritmo que genere el codigo de una MT M de tal manera
que se cumpla: M acepta cualquier cadena si y s
olo si M se
detiene con la cinta en blanco.
!(iv) Dada una MT M , L(M ) = ? Ayuda: utilizar una idea similar
a la del problema (iii).
(v) Dadas dos MT M1 y M2 cualesquiera, L(M1 ) = L(M2 )?
Ayuda: si este problema fuera decidible, tambien lo sera el problema (iii), tomando como M2 una MT adecuada.
(vi) Dadas dos MT M1 y M2 cualesquiera, L(M1 ) L(M2 )?
Ayuda: si este problema fuera decidible, tambien lo sera el problema (iii), tomando como M1 una MT adecuada.
(vii) Dadas dos MT M1 y M2 cualesquiera, L(M1 ) L(M2 ) = ?
Ayuda: si este problema fuera decidible, tambien lo sera el problema (iv), tomando como M2 una MT adecuada.
Demostrar que si el problema de la parada fuera resoluble, todo lenguaje RE sera recursivo.
Demostrar que los lenguajes La , Lb y Lp no son RE. Explcitamente,
estos lenguajes estan definidos como
La = {M : L(M ) = } = {M : M no acepta ninguna cadena},
Lb = {M : M no se detiene al operar con la cinta en blanco},
Lp = {M 0w : M no se detiene con entrada w}.
Ayuda: usar el Teorema 7.5.2.
Demostrar que el lenguaje {(M1 , M2 ) : L(M1 ) L(M2 ) = } no es
RE.

Bibliografa

[ASU] A. Aho, R. Sethi & J. Ullman, Compilers: Principles, Techniques


and Tools, Addison-Wesley, 1986.
[B] F. Beckman, Mathematical Foundations of Programming, AddisonWesley, 1980.
[C] N. Cutland, Computability, Cambridge University Press, 1980.
rez, J. Ruiz, et al., Teora de Aut
[GPR] P. Garca, T. Pe
omatas y Lenguajes Formales, Alfaomega, 2001.
[HU1] J. Hopcroft & J. Ullman, Formal Languages and their Relation
to Automata, Addison-Wesley, 1969.
[HU2] J. Hopcroft & J. Ullman, Introduction to Automata Theory, Language and Computation, Addison-Wesley, 1979.
[HMU] J. Hopcroft , R. Motwani & J. Ullman, Introducci
on a la Teora
de Aut
omatas, Lenguajes y Computaci
on, Segunda Edici
on, PearsonEducacion, 2002.
[K] D. Kelley, Teora de Aut
omatas y Lenguajes Formales, Prentice
Hall, 1995.
[LP] H. Lewis & C. Papadimitriou, Elements of the Theory of Computation, Prentice Hall, 1981.
ve
sz, Introduction to Formal Language Theory, Dover Publi[R] G. Re
cations, 1991.
[Sa] J. Savage, Models of Computation, Addison-Wesley, 2000.
221

222

BIBLIOGRAFIA

[Su] T. Sudkamp, Languages and Machines, Addison-Wesley, 1988.


[SW] R. Sommerhalder & S. van Westrhenen, The Theory of Computability, Addison-Wesley, 1988.

También podría gustarte