You are on page 1of 76

This is page i

Printer: Opaque this


Teoria de la Computacion: via palindromos
Carolina Mejia, Juan Andres Montoya
Febrero 2009
ii
ABSTRACT En este breve libro hemos intentado estudiar algunos de los
conceptos basicos de la Teoria de la Computacion. Para ello hemos decidido
estudiar diferentes aspectos computacionales del lenguaje de los palindro-
mos sobre un alfabeto dado: su decidibilidad, su lugar en la jerarquia de
Chomsky, su complejidad temporal, su relacion con el no-determinismo,
algunas de sus aplicaciones en, por ejemplo, el reconocimiento de patrones
y en la bioinformatica
This is page iii
Printer: Opaque this
Contents
1 Problemas y lenguajes vii
1.1 Problemas y lenguajes . . . . . . . . . . . . . . . . . . . . . vii
1.2 Modelos de computacion . . . . . . . . . . . . . . . . . . . . viii
2 Automatas regulares xiii
2.1 Automatas nitos y lenguajes regulares . . . . . . . . . . . xiii
2.2 El lema de bombeo para lenguajes regulares . . . . . . . . . xv
2.3 Automatas no deterministicos . . . . . . . . . . . . . . . . . xvii
2.4 Automatas de doble via: equivalencias . . . . . . . . . . . . xix
2.4.1 El teorema de Myhill-Nerode . . . . . . . . . . . . . xx
2.4.2 Prueba de la equivalencia . . . . . . . . . . . . . . . xxi
2.5 Ejercicios capitulo 2 . . . . . . . . . . . . . . . . . . . . . . xxii
3 Automatas de pila xxiii
3.1 Automatas de pila . . . . . . . . . . . . . . . . . . . . . . . xxiii
3.2 Automatas de pila no deterministicos y lenguajes libres de
contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi
3.3 Ejercicios capitulo 3 . . . . . . . . . . . . . . . . . . . . . . xxviii
4 Maquinas de Turing xxxi
4.1 Maquinas de Turing con una cinta . . . . . . . . . . . . . . xxxi
4.1.1 La tesis de Church y la jerarquia de Chomsky . . . . xxxiii
4.1.2 Turing computabilidad de los lenguajes libres de con-
texto . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxv
iv Contents
4.2 Tiempo de computo: analisis de algoritmos . . . . . . . . . xxxvi
4.3 Lenguajes no computables . . . . . . . . . . . . . . . . . . . xxxviii
4.4 Maquinas universales . . . . . . . . . . . . . . . . . . . . . . xxxix
4.5 Ejercicios capitulo 4 . . . . . . . . . . . . . . . . . . . . . . xlii
5 Una introduccion a la complejidad computacional xlv
5.1 Una cota inferior para 1a|: secuencias de cruce . . . . . . . xlvi
5.2 Maquinas de Turing multicinta . . . . . . . . . . . . . . . . xlviii
5.3 Maquinas multidimensionales . . . . . . . . . . . . . . . . . lii
5.3.1 Una cota inferior . . . . . . . . . . . . . . . . . . . . lvi
5.3.2 Una cota superior . . . . . . . . . . . . . . . . . . . lviii
5.4 Otros modelos: la tesis de Church fuerte . . . . . . . . . . . lx
5.4.1 Maquinas de Turing probabilisticas . . . . . . . . . . lx
5.4.2 Maquinas cuanticas . . . . . . . . . . . . . . . . . . lxx
5.5 Ejercicios capitulo 5 . . . . . . . . . . . . . . . . . . . . . . lxxi
6 Aplicaciones lxxiii
6.1 Reconocimiento de patrones: Listado de palindromos aprox-
imados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . lxxiii
References lxxv
This is page v
Printer: Opaque this
Prefacio
Este pequeo libro pretende ser una introduccion agil y sencilla a la teoria
de la computacion (o mejor, a unos pocos temas de la teoria de la com-
putacion). El libro fue escrito desde la perspectiva de un practicante de la
complejidad computacional. Creemos que un libro completamente difer-
ente habria surgido de manos de un practicante de algotra de las muchas
areas que constituyen las ciencias de la computacion. Creemos tambien
que este libro puede ser de gran ayuda, si se le utiliza como lectura previa
al estudio en profundidad de la teoria de la complejidad computacional, y
precisamente ese es y ha sido el objetivo de los autores.
A lo largo del libro hemos usado, a manera de Drosophila, para ilustrar
la mayor parte de los conceptos introducidos problemas computacionales
relacionados con el lenguaje de los palindromos.
El librillo esta organizado a lo largo de seis capitulos. El capitulo 1
pretende ser una introduccion informal a las problematicas y conceptos de
la teoria de la computacion. En el capitulo 2 se estudian los automatas
regulares. En el capitulo 3 los automatas de pila. El capitulo 4 introduce
el modelo de maquinas de Turing. El capitulo 5 pretende ser una breve
introduccion a la Complejidad computacional. En el capitulo 6 se estudian
algunas aplicaciones en el Reconocimiento de patrones y la Bioinformatica.
El lector interesado puede prondizar en algunos topicos de la teoria
de la computacion usando las excelentes referencias [6] y [10]. El lector
interesado en la teoria de la Complejidad computacional puede consultar
la referencia [8].
vi Contents
This is page vii
Printer: Opaque this
1
Problemas y lenguajes
En este breve capitulo introducimos los conceptos basicos y parte de la
notacion que emplearemos con frecuencia en el texto
1.1 Problemas y lenguajes
A lo largo del texto el simbolo sera usado para denotar conjuntos nitos,
y mas especicamente para denotar conjuntos nitos de caracteres a los
que llamaremos alfabetos. Dado = a
1
. .... a
n
un alfabeto, el conjunto

+
es el conjunto de todas las palabras nitas construidas con los simbolos
de . esto es el conjunto
+
es igual al conjunto de todos las cadenas nitas
de simbolos de .
Advertencia. El conjunto
+
contiene palabras de todas las longitudes
nitas incluyendo una unica palabra de longitud cero, la palabra vacia, a la
que denotaremos con el simbolo c.
Denicin 1 Un -lenguaje es un conjunto 1 _
+
.
En lo que sigue, (cuando el contexto lo permita), evitaremos usar el
termino -lenguaje y a cambio usaremos simplemente el termino lenguaje.
Ejemplo 2 Sea 1a| el lenguaje de los -palindromos, esto es el conjunto
de todas las cadenas nitas de simbolos de que se leen igual de izquierda
a derecha que de derecha a izquierda.
viii 1. Problemas y lenguajes
Dada r = r
1
r
2
...r
n
una palabra en el alfabeto (esto es r
1
r
2
...r
n

+
),
el simbolo r denotara el reverso de r. es decir la palabra r
n
r
n1
...r
1
. Note
que el lenguaje de los palindromos es igual a
r
+
: r = r
Pregunta. Es 1a| un lenguaje computable?
Es claro que una respuesta a la pregunta anterior implica denir antes,
de manera precisa, el signicado de la expresion: lenguaje computable. In-
tuitivamente un lenguaje es computable si y solo si existe un procedimiento
mecanico que permite reconocer los elementos del lenguaje.
Denicin 3 1 _
+
es decidible (o computable) si y solo si existe un
algoritmo tal que dado r
+
. el algoritmo acepta r si y solo si
r 1.
La denicion anterior no es muy diferente a la denicion intuitiva de
lenguaje computable, y al igual que esta, nos obliga a aclarar primero el
signicado de algunos de los terminos utilizados, en particular el signicado
del termino algoritmo.
Pregunta (La pregunta central de la teoria de la computacion). Que
es un algoritmo?
Respuesta. Un algoritmo es una maquina computadora.
Muy probablemente la respuesta que acabamos de dar a la pregunta
central de la teoria de la computacion es un respuesta que deja insatisfecho
a mas de un lector. Los lectores mas condecendientes aceptaran que esta
es una buena respuesta si podemos aclarar (de una vez por todas) que es
una maquina computadora. Bueno, de alguna manera, este es el objetivo
central del presente libro.
1.2 Modelos de computacion
Uno de los objetivos de este libro es estudiar algunos de los muchos modelos
de computacion que han sido propuestos como respuestas parciales a la
pregunta: que es una maquina computadora? La denicion y el analisis
de modelos concretos los pospondremos hasta los capitulos subsiguientes.
En esta breve seccion tan solo intentaremos acotar el posible signicado
de la expresion: modelo de computacion. Para empezar podemos decir
que, jando el alfabeto , un modelo de computacion es un dispositivo que
procesa elementos de
+
y que posee las siguientes caracterisiticas
1. Puede leer el input, esto es dado r . una maquina computadora
al procesar r tiene la habilidad de leer cada uno de los caracteres de
r.
1.2 Modelos de computacion ix
2. Aunque podria almacenar una cantidad ilimitada de informacion, en
cada instante de la computacion la maquina computadora tan solo
puede usar una cantidad nita y acotada de informacion.
3. Las operaciones que la maquina ejecuta en un instante dado estan
completamente determinadas por: los caracteres de r, el input, que
la maquina se encuentra leyendo en ese instante y por el fragmento
de la informacion almacenada que la maquina se encuentra leyendo
en ese instante.
Para dotar a un dispositivo de computo de estas tres habilidades podemos
imaginar que la maquina cuenta con:
1. Una cabeza lectora que lee a lo mas un caracter en cada instante de
la computacion.
2. Una memoria, representada por: un conjunto nito de estados, que
pueden ser usados para almacenar una cantidad nita de informacion
(cantidad esta que es proporcional al tamao del conjunto de esta-
dos); y posiblemente un dispositivo externo de memoria que podria
almacenar una cantidad ilimitada de informacion, pero de la cual solo
es posible usar una cantidad acotada en cada instante de la computa-
cion.
3. Una tabla nita de transiciones o tabla de mando, la cual determina,
en cada instante de la computacion, la operacion que la maquina ha
de realizar. Tal decision ha de tomarse teniendo en cuenta (unica y
exclusivamente) el caracter que lee la cabeza lectora en ese instante y
el fragmento de la informacion, almacenada en el dispositivo externo,
que la maquina usa en ese instante. Ademas, las operaciones que la
maquina puede realizar se limitan a: cambiar de estado, reemplazar
a lo mas un caracter del input y escribir (o borrar) una cantidad
acotada de caracteres en el dispositivo externo de memoria (si es el
caso que la maquina posee uno).
Podemos imaginar una maquina computadora como un dispositivo com-
puesto por: un numero nito de cintas semi-innitas, una cabeza lectora (o
lecto-escritora) por cada una de las cintas, un dispositivo interno de memo-
ria y una tabla de mando. Cada cinta semi-innita esta compuesta por una
coleccion enumerable y bien ordenada de celdas que podemos identicar,
o etiquetar, con los numeros naturales. Cada una de las celdas, en cada
instante de la computacion, puede o estar ocupada por un caracter o estar
vacia. supondremos que el alfabeto de la maquina contiene un simbolo
especial, digamos , para indicar celdas vacias (o, lo que es lo mismo, es-
pacios en blanco). Supondremos que al inicio de la computacion el input
r se encuentra escrito en el extremo izquierdo de una de las cintas de la
maquina, esto es si r = r
1
...r
n
. supondremos entonces que r ocupa las
x 1. Problemas y lenguajes
primeras :-celdas de una de sus cintas, a la que llamaremos cinta de en-
trada. Por otro lado, supondremos que las celdas a la derecha de la :-esima,
en la celda de entrada, se encuentran ocupadas por espacios en blanco, (esto
es por el caracter ). Cada cinta cuenta con una cabeza lecto(escritora)
que en algunos casos se podra mover en las dos direcciones (de izquierda a
derecha y de derecha a izquierda) y que en otros casos solo se podra mover
de izquierda a derecha. Cada cabeza lectora puede leer el contenido de
la celda sobre la que se halla ubicada, si la cabeza es lecto-escritora po-
dra, adicionalmente, reemplazar dicho caracter por algotro cualquiera de
los caracteres del alfabeto de la maquina. Una transicion de la maquina
consiste en:
1. Leer los caracteres de las celdas sobre las que se hallan las cabezas
lectoras.
2. Reemplazar cada uno de estos caracteres, por un caracter diferente o
por el mismo (i.e. no realizar reemplazo alguno).
3. Mover cada una de las cabezas lectoras a alguna de las celdas con-
tiguas a la celda sobre la que actualmente se encuentra. Dado i N
las celdas contiguas a la celda i-esima son la i 1-esima, la i-esima y
la i + 1-esima.
4. Cambiar de estado.
Que transicion realiza la maquina dependera de la conguracion en la
que se encuentre la maquina, donde una conguracion esta constituida por
El estado interno de la maquina. La maquina cuenta con un con-
junto de estados, su dispositivo interno de memoria, el cual le permite
codicar informacion referente a: que acciones(transiciones) acaba de
realizar y que acciones pretende realizar.
Los caracteres que estan siendo leidos en ese instante.
Dado que el alfabeto de la maquina es nito, el conjunto de estados es
nito y el numero de cintas es nito, tenemos que el numero de las posibles
conguraciones es nito.
La maquina cuenta, adicionalmente, con una tabla nita de mando
que especica para cada conguracion de la maquina, cual es la tran-
sicion que esta debe realizar.
Lo anterior esta muy lejos de ser una denicion de maquina computa-
dora. Aun asi lo anterior nos permite desde ya decir algunas cosas no
evidentes acerca de maquinas computadoras. Es posible argumentar, a
partir de la discusion precedente, que el numero de las maquinas computa-
doras es enumerable, y de ello podemos concluir que existen lenguajes no
computables.
1.2 Modelos de computacion xi
Teorema 4 Dado un alfabeto no vacio, existe 1 _
+
tal que 1 no es
decidible.
Proof. Note simplemente que el cardinal del conjunto de todos los -
lenguajes es igual a 2
I0
. Recuerde que
0
2
I0
. por lo que existen mas
lenguajes a ser decididos que maquinas que puedan decidirlos. Tenemos
entonces que existe una cantidad no enumerable de lenguajes no decidibles.
Dado que existen lenguajes no decidibles, es posible que 1a| sea uno de
ellos. Es claro que existen procedimentos, a los que informalmente podemos
llamar algoritmos, que pueden ser usados para reconocer el lenguaje 1a|.
No es dicil disear un programa que pueda ser usado para reconocer palin-
dromos (ejercicio: disee un tal programa). Toda nocion formal de com-
putabilidad debe capturar de manera adecuada la nocion intuitiva de com-
putabilidad, y en consecuencia todo lenguaje intuitivamente computable
debe ser computable si se considera una nocion formal de computabilidad
que quepa considerar adecuada. En los capitulos siguientes introducire-
mos diferentes modelosde computacion, o lo que es lo mismo diferentes
nociones de computabilidad, y estudiaremos el lenguje 1a| a la luz de estas
deniciones formales.
xii 1. Problemas y lenguajes
This is page xiii
Printer: Opaque this
2
Automatas regulares
En este capitulo estudiaremos la clase de los automatas regulares. Los
automatas regulares son, en cierto sentido, las maquinas computadoras
mas elementales que podamos imaginar. Es por ello, entre otras cosas,
que su poder de computo es muy limitado. Un automata regular es un
dispositivo de computo que: carece de un dispositivo externo de memoria,
cuenta con una cabeza de solo lectura la cual, ademas, solo puede moverse
en una direccion.
2.1 Automatas nitos y lenguajes regulares
Advertencia. A partir de este punto, en lo que queda del libro, supon-
dremos jado un alfabeto . Podemos suponer, como es costumbre en
teoria de la computacion, que es igual a 0. 1 .
Un automata regular es un cuadrupla (Q. c
0
. 1. c) . donde:
1. Q es un conjunto nito, el conjunto de estados del automata .
2. c
0
Q. es un elemento distinguido de Q. que sera llamado el estado
inicial del automata .
3. 1 _ Q es el conjunto de estado nales o estados de aceptacion del
automata .
4. c. la funcion de transicion, es una funcion de Q en Q.
xiv 2. Automatas regulares
Dado un alfabeto y dado un -automata regular supondremos que
posee una cinta semiinnita constituida por una cantidad enumerable de
celdas, supondremos ademas que la cinta se extiende de izquierda a derecha
empezando en una celda inicial. Cada celda de tiene la capcidad de
albergar un unico caracter del conjunto ' . donde es un caracter
especial que denota espacio en blanco o, lo que es lo mismo, celda vacia. Al
comienzo de la computacion el input r = r
1
r
2
...r
n
se encuentra ubicado
en el extremo izquierdo de la cinta ocupando los primeros : caracteres. Al
comienzo de la computacion la cabeza lectora de la maquina se encuentra
ubicada sobre la primera celda leyendo el caracter r
1
y el estado de la
maquina es el estado interno inicial c
0
. Al comenzar la computacion la
cabeza lectora de la maquina se dezplaza a la derecha, de celda en celda
leyendo de a un caracter. La computacion termina cuando la maquina
encuentra la primera celda ocupada por un caracter . esto es cuando la
cabeza lectora llega al nal del input. El caracter sera usado para denotar
el espacio en blanco y para indicar que la computacion debe terminar. Al
terminar la computacion la maquina se encuentra en un estado interno
c Q. Si c 1. la maquina acepta el input, en caso contrario lo rechaza.
Denicin 5 1. 1() = r
+
: acepta r . Dado . diremos
que 1() es el lenguaje reconocido por el automata .
2. Dado 1 _
+
. diremos que 1 es un lenguaje regular si y solo si existe
, un automata regular, tal que 1 = 1() .
Comentario 6 La denicion de automata regular implica que el tiempo de
computo empleado por un tal automata al procesar un input r es igual a [r[
(el simbolo [r[ denota la longitud del input r), donde el iempo de computo
de al procesar r es simplemente el numero de transiciones realizados por
la maquina durante la computacion. Tenemos entonces que todo automata
regular reconoce el lenguaje regular 1() en tiempo real. Reconocer un
lenguaje no trivial usando una maquina secuencial (es decir, una maquina
que no realiza mas de una transicion de manera simultanea) requiere, como
minimo, tiempo real. Lo anterior implica que los automatas regulares son
maquinas secuenciales optimas, cuando de reconocer lenguajes regulares se
trata, el problema es que los lenguajes computables mas interesantes y mas
importantes no son regulares.
Sea = 0. 1 . Dada r
+
. el simbolo |r|
0
denotara el numero
de caracteres de r que son iguales a 0. reciprocamente |r|
1
denotara el
numero de unos.
Ejemplo 7 Sea 1 = r
+
: |r|
0
= 1 (mod2) y |r|
1
= 1 (mod2) . El
lenguaje 1 es un lenguaje regular. Sea = (Q. c
0
. 1. c) el automata
regular denido por
1. Q =

c
10
00
. c
10
01
. c
11
00
c
11
01

.
2.2 El lema de bombeo para lenguajes regulares xv
2. c
0
= c
10
00
.
3. 1 =

c
11
01

4. c es la funcion de transicion denida por


c

0. c
10
00

= c
10
01
. c

0. c
10
01

= c
10
00
. c

0. c
11
00

= c
11
01
c

0. c
11
01

= c
11
00
. c

1. c
10
00

= c
11
00
. c

1. c
10
01

= c
11
01
c

1. c
11
00

= c
10
00
. c

1. c
11
01

= c
10
01
.
Es facil convencerse de que 1 = 1() .
Note que, en el ejemplo anterior, el lenguaje 1 es regular esencialmente
porque la informacion relevante relativa a los fragmentos iniciales de una
instancia de 1 puede ser codicada usando un numero acotado de bits,
especicamente dos: un bit que codica la paridad del numero de unos
leidos y un segundo bit que codica la paridad del numero de ceros leidos
(los bits a la derecha de los subindices y superindices que hemos usado
como distintivos de los elementos de Q). El teorema de Myhill-Nerode
(que estudiaremos mas adelante), indica que un lenguaje 1 es regular si y
solo si la informacion relevante, referente a los segmentos iniciales de las
instancias de 1. puede ser codicada usando un numero acotado de bits (o
equivalentemente de estados, note que los estados son el unico dispositivo
de memoria con que cuenta un automata regular). En el caso de lenguajes
regulares generales, la informacion relevante relativa al fragmento inicial,
que del input la maquina ha leido, es la etiqueta (o numero) de la clase
de equivalencia a la que pertenece este fragmento. El teorema de Myhill-
Nerode arma precisamente que 1 es regular si y solo si el numero de estas
clases de equivalencia es nito (si y solo si es posible decribir la etiqueta de
cada clase usando una cantidad acotada de bits).
2.2 El lema de bombeo para lenguajes regulares
El lema de bombeo es una herramienta poderosa que puede ser usada para
probar no regularidad.
Teorema 8 (lema de bombeo para lenguajes regulares)
Dado 1 un lenguaje regular, existe 1 N tal que si r 1 y [r[ _ 1.
existen entonces n. . n
+
para las cuales se satisface lo siguiente
1. r = nn.
2. [[ 0 y [n[ _ 1
3. Para todo : N se tiene que n
n
n 1.
xvi 2. Automatas regulares
Proof. Sea = (Q. c
0
. 1. c) un automata regular que reconoce el lenguaje
1. Al automata podemos asociarle un digrafo etiquetado G[] el cual
esta denido por
\ (G[]) = Q.
Dados c. j \ (G[]) y dado a . existe una arista de c a j con
etiqueta a si y solo si c ((a. c)) = j.
Note que una computacion de es simplemente un camino nito en
G[] con origen en c
0
. Note tambien que todo camino nito con origen
en c
0
es una computacion de . y que las computaciones aceptantes estan
en correspondencia biyectiva con los caminos de este tipo que tienen su
vertice nal dentro del conjunto 1 \ (G[]) .
Armamos que el 1 en el enunciado del teorema es igual a [Q[ + 1.
Dado que el grafo G[] tiene tamao [Q[ . todo camino de longitud mayor
o igual que [Q[ + 1 debe pasar al menos dos veces por un mismo vertice,
digamos j Podemos partir un tal camino en tres fragmentos a saber.
1. Fragmento inicial, que va de c
0
hasta la primera visita al vertice j.
2. Fragmento intermedio, el bucle que va de la primera visita a j hasta
la segunda visita a j.
3. Fragmento nal, desde la segunda visita al vertice j hasta el vertice
nal.
Dada r 1. si [r[ _ [Q[ + 1 el camino determinado por r. al que
denotaremos `
r
, puede partirse en tres fragmentos, el inicio, el bucle y el
nal. Estos tres fragmentos corresponden a fragmentos de r. digamos n.
y n. Dado : N, el camino determinado por la palabra n
n
n tiene la
siguiente estructura.
1. El inicio es identico al inicio del camino `
r
.
2. El fragmento intermedio corresponde a recorrer : veces el fragmento
intermedio de `
r
(recuerde que este fragmento intermedio es un bucle,
y por lo tanto es posible recorrer este bucle tantas veces como sea
necesario).
3. El fragmento nal es identico al fragmento nal de r (o mejor, del
camino determinado por r)
Ahora, dado que r 1 el vertice nal de `
r
pertenece a 1. Note que el
vertice nal del camino `
uu
n
u
es identico al vertice nal del camino `
r
. por
lo que la computacion de con input n
n
n es tambien una computacion
aceptante y esto implica que n
n
n 1. Note nalmente que es posible
tomar n y de tal forma que [n[ _ 1. esto es asi dado que todo fragmento
2.3 Automatas no deterministicos xvii
inicial, del camino `
r
. que tenga una longitud mayor o igual que [Q[ + 1
debe contener un bucle
A continuacion probaremos que 1a| no es regular.
Corolario 9 (Primera cota inferior para 1)
No existe un automata regular que pueda reconocer el lenguaje 1a|.
Proof. Suponga que 1a| es regular y sea 1 como en el enunciado del lema
de bombeo. Considere r = 1
1+1
01
1+1
. El lema de bombeo arma que
existen palabras n. . y n tales que r = nn. [n[ _ 1 y tales que dado
i _ 2 la palabra n
I
n 1a|. Note que la desigualdad [n[ _ 1 implica
que esta totalmente contenido en el fragmento izquierdo de r constituido
por 1 + 1 unos. Tenemos entonces que n
I
n = 1
1+|u|I|u|
01
1
que no es
un palindromo dado que [[ _ 1
Del corolario anterior hemos dicho que es una cota inferior para 1a|, dado
que este corolario establece que los recursos computacionales que denen
la clase de los automatas regulares no son sucientes para reconocer el
lenguaje 1a|. para ello se requiere algo mas, se necesita mayor poder de
computo.
No es de extraar que el lenguaje 1a| no pueda ser reconocido por un
automata regular. Note que, en la denicion de automata regular, hemos
impuesto demasiadas limitaciones al poder de computo de este tipo de
dispositivos, algunas de las mas prominentes limitaciones son las siguientes:
La cabeza lectora solo puede moverse en una direccion, esto es de
izquierda a derecha.
La maquina no tiene un dispositivo de memoria externo.
La maquina no tiene funciones de escritura
La maquina no puede marcar (o transformar) fragmentos o caracteres
del input.
En lo que sigue estudiaremos modelos que podemos concebir como obtenidos
a partir de nuestro modelo basico (la clase de los automatas regulares) elim-
inando una o varias de estas (y otras) limitaciones.
2.3 Automatas no deterministicos
En esta seccion estudiaremo un segundo modelo de computacion, obtenido
a partir del modelo basico, adicionando a este una habilidad: transiciones
no deterministicas.
Un automata regular no deterministico es un automata = (Q. c
0
. 1. c)
para el cual la relacion de transicion c no necesariamente es funcional, esto
es esta constituido por un conjunto de estados Q. un estado inicial c
0
, un
xviii 2. Automatas regulares
conjunto de estados aceptantes 1 y una relacion de transicion c _ QQ.
Es discutible que el no-determinismo sea una habilidad computacional y que
las maquinas no deterministicas sean mas potentes que las deterministicas
(para el caso de maquinas de Turing de tiempo polinomial la pregunta: el
no-determinismo incrementa el poder de computo? No es otra cosa que la
famosa, y casi mistica, pregunta: es 1 igual a 1?). Existen al menos
dos maneras de pensar el nodeterminismo:
Una maquina no deterministica es una maquina capaz de realizar
adivinanzas afortunadas.
Una maquina no deterministica es una maquina capaz de realizar en
paralelo un gran numero de computaciones.
Es claro que desde cualquiera de las dos perpectivas anteriores el no-
determinismo aparece como una habilidad adicional (un recurso computa-
cional) que puede (y debe) incrementar el poder de nuestras maquinas.
Sea = (Q. c
0
. 1. c) un automata no deterministico.
Denicin 10 Dado r = r
1
...r
n
un input de . una computacion de
con input r es una secuencia c
0
c
1
...c
n
de elementos de Q tal que para todo
i _ : se tiene que (r
I
. c
I1
. c
I
) c.
Una computacion es entonces una secuencia nita y ordenada de con-
guraciones que adicionalemente satisface la siguiente condicion: todo par
de conguraciones consecutivas estan conectadas por una transicion de la
maquina.
La nocion de conguracion depende del modelo de computacion. Intu-
itivamente, una conguracion es una descripcion completa del estado de
la computacion en un instante dado. En el caso de los automatas regu-
lares es suciente especicar el estado (estado interno, elemento de Q) en
el que se encuentra la maquina para describir completamente el estado de
la computacion. Esto es asi dado que en el instante t de la computacion
la cabeza lectora de la maquina se encuentra sobre la t-esima celda de su
cinta (leyendo el t-esimo caracter) y el contenido de la cinta en este in-
stante es identico al contenido de la cinta en el instante 0. Esto implica
que el unico parametro que nosotros podriamos desconocer es precisamente
el estado interno de la maquina, y es este parametro (y es precisamente lo
desconocido) lo que la conguracion describe y debe describir.
Denicin 11 Dado un automata regular no deterministico y dado
r
+
. diremos que acepta r si y solo si existe una computacion de
con input r que termina en un estado de aceptacion.
En esta seccion probaremos que los automatas regulares no deterministi-
cos y los automatas regulares deterministicos tienen exactamente el mismo
poder de computo.
2.4 Automatas de doble via: equivalencias xix
Teorema 12 Todo automata regular no deterministico puede ser simulado
por un automata regular.
Proof. Sea 1 un lenguaje reconocible mediante un automata regular no
deterministico y sea = (Q. c
0
. 1. c) un tal automata que reconoce 1.
Considere el automata regular
det
=

Q
det
. c
det
0
. 1
det
. c
det

denido por:
1. Q
det
= { (Q) .
2. c
det
0
= c
0
.
3. 1
det
= Q : 1 = ? .
4. La funcion c
det
es denida por
c
det
((a. )) = c Q : j (c ((a. j)) = c)
Es facil vericar que 1() = 1

det

.
El siguiente corolario es una consecuencia inmediata de los dos teoremas
anteriores
Corolario 13 (Segunda cota inferior para 1a|)
No existe un automata regular no deterministico que pueda reconocer el
lenguaje 1a|.
2.4 Automatas de doble via: equivalencias
En esta seccion introduciremos un clase de maquinas aparentemente mas
poderosas que los automatas regulares, a esta clase de maquinas las llamare-
mos automatas de doble via (2way-automata). Los automatas de doble via
son automatas regulares provistos de una cabeza lectora que puede moverse
en las dos direcciones. Es de esperar que esta habilidad adicional conera
mayor poder de computo a estas maquinas, y es de esperar que tal poder
adicional sea suciente para reconocer el lenguaje 1a|. Intuitivamente, si
la cabeza lectora de la maquina puede moverse de izquierda a derecha y de
derecha a izquierda, puede entonces moverse varias veces a lo largo de la
cinta en las dos direcciones y vericar (o, reciprocamente, vericar que no es
el caso) que para todo i _ [r[ . el caracter i-esimo y el caracter [r[ i-esimo
coinciden. Sorprendentemente este no es el caso. El teorema principal de
esta seccion arma que los automatas de doble via tienen exactamente el
mismo poder de computo que los automatas regulares (y en consecuencia
los automatas de doble via son incapaces de reconocer el lenguaje 1a|).
Denicin 14 Un automata de doble via es una quintupla
= (Q. c
0
. 1. . c)
xx 2. Automatas regulares
tal que Q es un conjunto nito de estados, c
0
Q es el estado inicial,
1 _ Q y c es una funcion de Q en Q. .
Dado a y c Q. si la maquina se encuentra leyendo el caracter a, en
el estado c y c (a. c) = (. j) . entonces la cabeza de la maquina se desplaza
una posicion a la derecha y el estado interno de la maquina cambia de c a j.
Por el contrario si c (a. c) = (. j) . la cabeza de la maquina se mueve una
posicion a la izquierda. Dado que la cabeza de la maquina podria llegar
al extremo derecho de la maquina y devolverse a la izquierda, nada nos
garantiza que la computacion de la maquina terminara en algun momento,
es por ello que en la denicion de automata de doble via hemos agregado el
parametro . La idea es que si el estado interno de la maquina pertenece
a la maquina para.
2.4.1 El teorema de Myhill-Nerode
El teorema de Myhill-Nerode puede ser entendido como una caracterizacion
algebraica de los lenguajes regulares. Caracterizaciones de este tipo siempre
son utiles en Matematicas. Como lo vermos mas adelante, el teorema de
Myhill-Nerode puede ser usado para probar algunos hechos importantes
referentes a los lenguajes regulares.
Denicin 15 Dado 1
+
. podemos denir una relacion de equivalencia
sobre
+
asociada a 1. La relacion 1
J
_
+

+
se dene por
r1
J
n si y solo si \n(rn 1 = nn 1)
Teorema 16 (Myhill-Nerode)
1 es regular si y solo si

1
L

es nito.
Proof. Sea 1
+
tal que la relacion 1
J
es de indice nito, (es decir el
conjunto

1
L

es nito). Sea = (Q. c


0
. 1. c) el automata regular denido
por:
Q =

1
L
.
c
0
= [c]
1
L
.
1 =

[r]
1
L
: r 1

.
La funcion c : Q Q esta denida por
c

a. [r]
1
L

= [ra]
1
L
Es claro que es un automata regular, adicionalmente es facil probar
que 1() = 1.
2.4 Automatas de doble via: equivalencias xxi
Veamos ahora que si 1 es un lenguaje regular entonces la relacion 1
J
es de indice nito. Sea un automata regular que reconoce 1. Dada
r
+
. podemos denir una funcion
'
r
: Q Q de la siguiente manera:

'
r
(c) es igual al estado nal al que accede , al procesar el input r.
empezando en el estado c
Es facil probar que si
'
r
=
'
u
entonces r1
J
n. Tenemos entonces que

1
L

_ [Q[
|O|
.
2.4.2 Prueba de la equivalencia
En esta subseccion probaremos que la clase de los lenguajes regulares coin-
cide con la clase de los lenguajes aceptados por automatas de doble via, es
decir probaremos que todo automata de doble via puede ser simulado por
un automata regular.
Dado un automata de doble via denimos una relacion de equivalencia
=
'
_
+

+
de la manera siguiente:
r =
'
n si y solo si \t
+
( acepta rt si y solo si acepta nt)
Teorema 17 (Rabin-Scott-Sheperdson)
Dado . un automata de doble via, existe un automata regular tal
que 1() = 1

.
Proof. Lo que nosotros probaremos es que dado = (Q. c
0
. 1. . c) un
automata de doble via, el lenguaje aceptado por . al que denotaremos
con el simbolo 1() . satisface las condiciones impuestas en el enunciado
del teorema de Myhill-Nerode.
Dada r
+
, denimos una funcion
r
: Q Q ' 0 de la siguiente
manera:
Si c = c
0
. se dene
r
(c) como igual al estado al que accede .
si iniciamos la computacion con r como input, con la cabeza lectora
ubicada sobre el caracter nal de r. Si al imponer estas condiciones
iniciales el automata para con la cabeza lectora ubicada en una
posicion diferente al extremo izquierdo de r. o si no para del todo
se dene
r
(c) = 0.
Si c = c
0
. denimos de manera similar
r
(c) . la unica diferencia es
que en este caso asumimos que en el instante inicial la cabeza esta
ubicada en el extremo izquierdo de r.
Armacion. Dadas r. n
+
. se tiene que
r
=
u
implica r =
J(')
n.
Note que si : = [Q[ . la armacion anterior implica entonces que la
relacion de equivalencia =
J(')
esta constituida por a lo mas (: + 1)
n
clases.
En este punto podemos invocar el teorema de Myhill-Nerode para armar
que 1() es regular.
xxii 2. Automatas regulares
Corolario 18 (tercera cota inferior para 1a|)
Ningun automata de doble via puede reconocer el lenguaje 1a|.
El corolario anterior indica que, para reconocer el lenguaje 1a|. no es su-
ciente con adicionarle a nuestros automatas basicos la habilidad de mover
su cabeza lectora en las dos direcciones. Cuales son los recursos computa-
cionales necesarios para reconocer el lenguaje 1a|?
2.5 Ejercicios capitulo 2
1. (Trabajo de lectura) Investigue la nocion de automata regular con
transiciones en vacio.
2. Sea 1 = 1
n
01
n
: : N . use el lema de bombeo para probar que 1
no es regular.
3. Sea Reg el conjunto de todos los lenguajes regulares. Pruebe que Reg
es cerrado bajo uniones, intersecciones y complementos.
4. Dado 1 un lenguaje, se dene 1
+
como el lenguaje
n
1
...n
n
: : N y n
1
. .... n
n
1
Pruebe que si 1 es regular, entonces 1
+
tambien es regular.
5. Disee un algoritmo que resuelva el siguiente problema
El problema de la vacuidad
Input: , donde es un automata regular.
Problema: Decida si 1() es diferente de vacio.
6. Disee un algoritmo que resuelva el siguiente problema
El problema de la equivalencia
Input: (. A), donde y A son automatas regulares.
Problema: Decida si 1() = 1(A) .
7. Disee un algoritmo que resuelva el siguiente problema
El problema de la nitud
Input: , donde es un automata regular.
Problema: Decida si 1() es nito.
This is page xxiii
Printer: Opaque this
3
Automatas de pila
En este capitulo introduciremos un segundo modelo de computacion: los
automatas de pila. Los automatas de pila se diferencian de los automatas
regulares en que los primeros poseen un dispositivo externo de memoria (la
pila). Es de esperar que este dispositivo externo de memoria incremente
el poder de computo. Es plausible entonces que los automatas de pila, a
diferencia de los automatas regulares, sean capaces de reconocer el lenguaje
1a|.
3.1 Automatas de pila
Un automata de pila es una quintupla = (Q. . c
0
. 1. c) tal que
1. Q es un conjunto nito, el conjunto de estados de .
2. es un conjunto nito, el alfabeto de la pila.
3. c
0
Q es el estado inicial de .
4. 1 _ Q es el conjunto de estados de aceptacion.
5. La funcion de transicion c es una funcion de (
+
Q) en
+
Q
que satisface las siguientes condiciones. Dados a. / , n. n
+
y
c. j Q;
(a) Si c (a. n. c) = (n. j) . se tiene entonces que [[n[ [n[[ 0. 1
xxiv 3. Automatas de pila
(b) Si c (a. n. c) = (n. j) . se tiene entonces que o n = n o n @ n o
n @ n. (el simbolo n @ n denota que n es un fragmento inicial
de n).
(c) Dados r
1,
r
2
' c, se tiene que
c (a. n/. c) = (nr
1
r
2
. j) = c (a. n/. c) = (nr
1
r
2
. j)
Es decir, si r es el contenido de la pila, la manera en que r afecta
la computacion del automata esta completamente determinada
por el ultimo caracter de dicha palabra.
Un automata de pila es como un automata regular al que se le ha adi-
cionado un dispositivo externo de memoria, la pila. En cada transicion
del automata de pila este puede: o agregar un caracter a la derecha de la
palabra contenida en la pila, o borrar el ultimo caracter de esta palabra,
o dejar invariante el contenido de la pila. Lo que el automata escriba en
la pila puede ser usado en la computacion, aunque en cada instante de la
computacion el automata solo tenga acceso al ultimo caracter del contenido
de la pila. La nocion de conguracion para automatas de pila es un poco
mas compleja que la nocion de conguracion para automatas regulares.
Recuerde que una conguracion es una descripcion completa del estado de
la maquina en cada instante de la computacion. En consecuencia una tal
descripcion debe declarar, como minimo, lo que del estado de la maquina
es desconocido para el usuario. Dado que el automata de pila no puede es-
cribir, borrar caracteres o marcar caracteres en la cinta de entrada, en todo
instante de la computacion el contenido de la cinta es identico al contenido
de la cinta en el instante cero. Esto implica que no necesitamos incluir
en nuestra nocion de conguracion informacion referente al contenido de
la cinta. Por otro lado, dado que en cada transicion la cabeza lectora se
mueve una posicion a la derecha, en el instante t la cabeza lectora ha de
estar ubicada sobre la celda i-esima de la cinta de entrada. Tenemos en-
tonces que lo unico que no conocemos de entrada, respecto al estado de la
maquina, es su estado interno y el contenido de la pila.
Denicin 19 Dado = (Q. . c
0
. 1. c) un automata de pila, una con-
guracion de es una tripla (n. c. i)
+
QN.
Dado r = r
1
...r
n

+
. la computacion de con input r es una secuen-
cia ordenada y nita de conguraciones (c. c
0
. 1) . (n
1
. j
1
. 2) .... (n
n
. j
n
. : + 1)
que satisface la siguiente condicion: para todo i _ : se tiene que
c (r
I
. n
I1
. j
I1
) = (n
I
. j
I
)
Denicin 20 Dado = (Q. . c
0
. 1. c) un automata de pila, dado r =
r
1
...r
n

+
y dada
(c. c
0
. 1) . (n
1
. j
1
. 1) .... (n
n
. j
n
. : + 1)
3.1 Automatas de pila xxv
la computacion de con input r. diremos que acepta r si y solo si
n
n
= c y j
n
1.
Denicin 21 Dadas ..
+
, dada r
+
y dados c. j Q el simbolo
(.. c)
'
r
(. j) indica que si inicializaramos el automata con r como
input, c como estado interno y . como contenido de la pila, al terminar de
leer r el automata estaria en el estado j y con como contenido de la
pila.
Teorema 22 Los automatas de pila son incapaces de reconocer El lenguaje
1a|.
Proof. Suponga que = (. . Q. 1. c
0
. c) es un automata de pila que
reconoce el lenguaje 1a|. Suponga ademas que 1 = j
1
. .... j

y que
todos los estados en 1 son accesibles. Dado que el conjunto
+
es innito,
existen r. n
+
y existe i. , _ tales que:
1. r = n.
2. (c. c
0
)
'
rr
(c. j
I
) .
3. (c. c
0
)
'
uu
(c. j
I
)
4. (c. j
I
)
'
uu
(c. j
,
) .
5. rrnn 1a|.
Dado que rrrr y nnnn son palindromos, se tiene que j
I
. j
,
1. Note
que:
(c. c
0
)
'
rruu
(c. c
2
)
Y esto implica que el automata acepta la palabra rrnn. pero dado
que rrnn 1a|. podemos concluir que no reconoce el lenguaje 1a|.
Aunque los automatas de pila (deterministicos) son incapaces de recono-
cer 1a|. es facil probar que los automatas de pila son estrictamente mas
potentes que los automatas regulares. Note primero que todo automata
regular es un automata de pila que no usa la pila. Por otro lado es facil
vericar que el lenguaje 1a|
+
= 1
n
01
n
: : N puede ser reconocido por
un automata de pila, por otro lado es facil vericar (usando el lema de
bombeo) que el lenguaje 1a|
+
no es regular
Ejercicio 23 1. Pruebe que 1a|
+
no es regular.
2. Pruebe que 1a|
+
puede ser reconocido por un automata de pila.
xxvi 3. Automatas de pila
3.2 Automatas de pila no deterministicos y
lenguajes libres de contexto
En esta seccion estudiaremos los automatas de pila no deterministicos. A
diferencia de lo que sucede en el caso regular, el no-determinismo incre-
menta estrictamente el poder de computo de los automatas de pila. Como
veremos mas adelante el lenguaje 1a| puede ser reconocido por un au-
tomata de pila no deterministico, recuerde que 1a| no puede ser reconocido
por un automata de pila deterministico.
Un automata de pila no deterministico es una quintupla = (Q. . c
0
. 1. c)
tal que
1. Q es un conjunto nito, el conjunto de estados de .
2. es un conjunto nito, el alfabeto de la pila.
3. c
0
Q es el estado inicial de .
4. 1 _ Q es el conjunto de estados de aceptacion.
5. La relacion de transicion c es un subconjunto de (
+
Q)
(
+
Q) que satisface las siguientes condiciones. Dados a ,
n. n.
+
y c. j Q
(a) Si (a. n. c. n. j) c se tiene entonces que [[n[ [n[[ 0. 1
(b) Si (a. n. c. n. j) c se tiene entonces que o n = n o n @ n o
n @ n.
(c) Dados r
1
. r
2
' c, se tiene que
(a. n/. c. nr
1
r
2
. j) = (a. n/. c. nr
1
r
2
. j) c
Es decir, si r es el contenido de la pila, la manera en que r afecta
la computacion del automata esta completamente determinada
por el ultimo caracter de dicha palabra.
Las nociones de conguracion, computacion y aceptacion se denen de
manera similar a como se denieron en el caso deterministico.
Ejercicio 24 Dana de manera precisa las nociones de conguracion, com-
putacion y aceptacion para automatas de pila no deterministicos.
Denicin 25 Dado 1
+
diremos que 1 es libre de contexto si y solo
si existe un automata de pila no deterministico que reconoce 1.
Proposicin 26 1a| es libre de contexto.
Proof. Considere el automata de pila = (Q. . c
0
. 1. c) denido por:
3.2 Automatas de pila no deterministicos y lenguajes libres de contexto xxvii
1. Q = c
t
. c
b
. c
:

2. = .
3. c
0
= c
t
.
4. 1 = c
b

5. c es la funcion de
+
Q en
+
Q denida por
(a) Suponga que r = na, en este caso se tiene que c (a. r. c
t
) =
(ra. c
t
) . (n. c
b
) .
(b) Suponga que r = n/ con / a . en este caso se tiene que
c (a. r. c
t
) = (ra. c
t
) . (n. c
:
) .
(c) Suponga que r = na, en este caso se tiene que c (a. r. c
b
) =
(n. c
b
) .
(d) Suponga que r = n/ con / a . en este caso se tiene que
c (a. r. c
b
) = (n. c
:
) .
(e) Suponga que r = na, en este caso se tiene que para todo /
vale la ecuacion c (/. r. c
:
) = (n. c
:
) .
(f) Suponga que r = c. en este caso se tiene que c (/. c. c
:
) =
(c. c
:
) .
Es facil vericar que el automata reconoce el lenguaje 1a|
Que el lenguaje 1a| sea libre de contexto no debe hacernos pensar que
todo lenguaje es libre de contexto, recuerde que existen lenguajes no com-
putables y que los lenguajes libres de contexto son computables. Tampoco
debemos pensar que todo lenguje computable es libre de contexto. Es posi-
ble establecer un lema de bombeo para lenguajes libres de contexto, el cual
enuciaremos sin prueba a continuacion (la prueba se deja como trabajo de
lectura para el lector).
Lema 27 (lema de bombeo para lenguajes libres de contexto)
Dado 1 un lenguaje libre de contexto existe 1 N tal que si r 1 y [r[ _
1, entonces la palabra r puede escribirse como nnrn. satisfaciendose que
1. [r[ _ 1.
2. [nr[ _ 1.
3. n
I
nr
I
n 1.
El lema de bombeo, (al igual que el lema de bombeo para lenguajes
regulares), nos permite probar de ciertos lenguajes,que estos no son libres
de contexto. Veamos un ejemplo.
Sea el lenguaje 1

: j es primo . es claro que el lenguaje es com-


putable (en algun sentido).
xxviii 3. Automatas de pila
Corolario 28 El lenguaje no es libre de contexto.
Proof. Suponga que es libre de contexto. Sea 1 como en el enunciado
del lema de bombeo y sea 1 un primo mayor que 1. Considere la palabra
1
1
. El lema de bombeo arma que existen n. . n. r. n
+
tales que
1
1
= nnrn y tales que dado i _ 2 la palabra n
I
nr
I
n tambien pertenece
a . Sea r
I
la palabra n
I
nr
I
n. Note que [r
I
[ es igual a 1+(i 1) ([r[) .
Dado i = 1 + 1. se tiene que [r
I
[ = 1(1 +[r[) . Tenemos entonces que
r
I
y que por lo tanto 1(1 +[r[) = [r
I
[ es un numero primo, pero esto
es imposible dado que 1. 1 +[r[ 1
El corolario anterior muestra que los automatas de pila no son omnipo-
tentes, es mas, el corolario anterior muestra que los automatas de pila
tiene un poder de computo tan bajo que ni siquiera son capaces de re-
alizar vericaciones aritmeticas elementales (note que decidir el lenguaje
. corresponde a reconocer numeros primos).
3.3 Ejercicios capitulo 3
1. (trabajo de lectura) Investigue la nocion de gramatica libre de con-
texto y su relacion con los lenguajes libre de contexto.
2. (trabajo de lectura) Investigue la nocion de automata de cola (queue
automata) y su relacion con los automatas de pila. Decida si el
lenguaje 1a| puede ser decidido por un automata de cola.
3. Disee un algoritmo que resuelva el siguiente problema
Parsing problem para lenguajes libres de contexto
Input: (. r) . donde es un automata de pila no determin-
istico y r
+
.
Problema: Decida si r es aceptado por .
Nota. Aunque es en si mismo un procedimiento que podria
ser usado para decidir si acepta r. el problema con es que
este podria ser un procedimiento no determinista. Lo que se pide en
este ejercicio es disear un procedimiento determinista que resuelva el
parsing problem (Ayuda. Investigue acerca del algoritmo de Earley).
4. Pruebe el lema de bombeo para lenguajes libres de contexto.
5. (Lema de Ogden) Sea n una palabra y sea j _ [n[ . una j-marcacion
de n es una escogencia de al menos j posiciones de n. Pruebe que si
1 es libre de contexto, existe entonces un numero j 0 tal que para
toda palabra n 1 de longitud al menos j y para toda j-marcacion
de n existen palabras n. . r. n y . para las cuales se tiene que
3.3 Ejercicios capitulo 3 xxix
n = nrn..
r contiene al menos una posicion marcada.
O n y contienen cada uno al menos una posicion marcada, o
n y . contienen cada uno al menos una posicion marcada.
rn contiene a lo mas j posiciones marcadas.
Para todo i _ 0 se tiene que n
I
rn
I
. 1.
6. Use el lema de Ogden para probar que el lenguaje

a
I
/
,
c
|
d
l
: i = 0 o , = / = |

no es libre de contexto.
xxx 3. Automatas de pila
This is page xxxi
Printer: Opaque this
4
Maquinas de Turing
En este capitulo introduciremos y estudiaremos el non plus ultra de los
modelos de computacion: el modelo de maquina de Turing.
Advertencia. A partir de este momento el simbolo log (:) denotara la
parte entera del logaritmo en base dos de :.
4.1 Maquinas de Turing con una cinta
Para empezar introduciremos el modelo de maquinas de Turing de una sola
cinta. Podemos pensar en una maquina de Turing de una sola cinta (para
abreviar, a este tipo de maquinas las llamaremos simplemente maquinas
deTuring) como en un automata regular dotado con una cabeza que puede
moverse en las dos direcciones y que ademas puede escribir en la cinta de
entrada. Dado que una maquina de Turing puede escribir en la cinta de
entrada, una tal maquina puede usar la cinta de entrada como dispositivo
externo de memoria. Las maquinas de Turing son maquinas que combinan
las habilidades de los automatas de pila y de los automatas de doble via.
Es de esperar que esta combinacion de habilidades de como resultado un
tipo de automata mas poderoso.
Denicin 29 Una maquina de Turing es una sextupla =(Q. . c
0
. 1. c. )
tal que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
xxxii 4. Maquinas de Turing
2. es un conjunto nito, el alfabeto de la maquina que satisface '
_ .
3. c
0
Q es el estado inicial de la maquina.
4. 1 Q es el conjunto de estados nales de la maquina.
5. La funcion de transicion c es una funcion de Q en Q
. . .
6. 1 Q y si el estado interno de la maquina pertenece a la
maquina para.
Dados a. / ; c. j Q y / . . , si c (a. c) = (/. j. /), cada
vez que la maquina se encuentre en el estado c leyendo el caracter a. la
maquina borrara a. escribira a cambio el caracter / (reemplazara a por /),
pasara del estado c al estado j y se movera a la derecha, a la izquierda o
permanecera en su lugar dependiendo de quien sea / (indica movimiento
a la derecha, indica movimiento a la izquierda y indica que la cabeza
de la maquina permanece sobre la misma celda, i.e. no se mueve).
Ejemplo 30 Considere el lenguaje denido por
1
n
: : es primo
Recuerde que en el capitulo 3 probamos, usando el lema de bombeo para
lenguajes libres de contexto, que no puede se reconocido por un automata
de pila no deterministico. No es facil, pero es posible, disear una maquina
de Turing que reconozca el lenguaje .
Del ejempplo anterior tenemos que existen lenguajes que no son libres
de contexto pero que pueden ser reconocidos por maquinas de Turing.
Denicin 31 Diremos que 1 _
+
es Turing-computable si y solo si
existe una maquina de Turing que reconoce 1.
Denicin 32 Una conguracion de = (Q. . c
0
. 1. c. ) es una tripla
(n. c. i) tal que
1. n
+
(es el contenido de la cinta)
2. c Q (es el estado interno de la maquina).
3. i _ [n[ (es la posicion de la cabeza lectora).
4.1 Maquinas de Turing con una cinta xxxiii
4.1.1 La tesis de Church y la jerarquia de Chomsky
Hasta el momento hemos estudiado esencialmente tres modelos de com-
putacion: automatas regulares, automatas de pila y maquinas de Turing.
Considere los siguientes conjuntos
Co:j = 1
+
: 1 es computable
Reg = 1
+
: 1 es regular
1C = 1
+
: 1 es libre de contexto
TC = 1
+
: 1 es Turing-computable
Aunque el primero de estos conjuntos no esta denido de manera formal
podemos aceptar su existencia y conformarnos por ahora con una denicion
informal: un lenguje 1 es computable si y solo si existe un procedimiento
mecanico nitista (una maquina discreta) capaz de decidir 1.
Da los conjuntos antes denidos sabemos que
Reg $ 1C $ TC _ Co:j
La tesis de Church arma que Co:j = TC. La tesis de church no es una
armacion matematica suceptible de prueba, dado que uno de los terminos
involucrados en la tesis (el termino Co:j) no posee una denicion formal.
La tesis de Church puede ser entendida de diversas maneras:
Como una denicion formal (aunque posiblemente inadecuada de la
nocion de computabilidad).
Como una armacion semiotica la cual arma que la nocion intu-
itiva de computabilidad es capturada completamente por un simbolo
matematico: Turing-computabilidad.
Como una armacion pragmatica que nos permite evitar las inmensas
dicultades involucradas en el diseo de una maquina de Turing que
resuelva un problema concreto no trivial: la tesis de Church arma
que si usted es capaz de exhibir un procedimiento, que quepa llamar
mecanico y nitista, que resuelve el problema 1. usted ha probado
que existe una maquina de Turing que resuelve 1.
En lo que queda del texto usaremos convenientemente la perspectiva
pragmatica.
Existe fuerte evidencia a favor de la tesis de Church, tal evidencia se
reduce esencialmente a los siguientes hechos:
1. No se conoce un problema que sea calculable en algun sentido y que
no sea Turing-calculable.
2. De toda nocion formal de computabilidad propuesta hasta la fecha
se ha podido probar que esta embebida en la nocion de Turing-
computabilidad.
xxxiv 4. Maquinas de Turing
Existen muchos otras clases de lenguajes computables (ademas de los tres
estudiados hasta el momento) que son importantes desde el punto de vista
teorico. Una tal clase es la clase de los lenguajes sensitivos al contexto,
los cuales pueden ser caracterizados a partir de la nocion de automata
linealmente acotado.
Denicin 33 Un automata linealmente acotado es una septupla
(Q. . c
0
. 1. c. . 1)
tal que
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. es un conjunto nito, el alfabeto de la maquina que satisface '
_ .
3. c
0
Q es el estado inicial de la maquina.
4. 1 Q es el conjunto de estados nales de la maquina.
5. La funcion de transicion c es una funcion de Q en Q
. . .
6. 1 Q y si el estado interno de la maquina pertenece a la
maquina para.
7. 1 es una funcion lienal tal que, cuando la maquina ' procesa un
input r de tamao :. ella solo puede usar las celdas ocupadas por los
caracteres de r y 1 (:) celdas adicionales localizadas a la derecha del
ultimo caracter de r.
Tenemos entonces que un automata linealmente acotado es una maquina
de Turing de una sola cinta a la que se le impone una condicion adi-
cional, referente esta a la cantidad de espacio de trabajo disponible para la
maquina.
Denicin 34 Dado 1
+
diremos que 1 es un lenguaje sensitivo al
contexto si y solo si existe un automata linealmente acotado tal que
reconoce 1.
Sea oC = 1
+
: 1 es sensitivo al contexto .
Teorema 35 oC $ TC.
Del teorema anterior (y aceptando la tesis de Church) tenemos que
Reg $ 1C $ oC $ TC = Co:j
Esta jerarquia de lenguajes computables (de lenguajes formales) se le
conoce como la Jerarquia de Chomsky.
4.1 Maquinas de Turing con una cinta xxxv
4.1.2 Turing computabilidad de los lenguajes libres de
contexto
En esta breve subseccion probaremos que todo automata de pila puede ser
simulado por una maquina de Turing, esto implica en particular que todo
lenguaje libre de contexto es Turing-computable.
Sea = (Q. . c
0
. 1. c) un automata de pila deterministico. Construire-
mos una maquina de Turing T () = (Q
+
.
+
. c
0
. 1. c
+
. ) capaz de simular
el automata '. La maquina ' esta dada por:
1. Q
+
= Q'

c
o
: c Q y a '

c : c Q .
2.
+
= ' (a. 1) : a ' # .
3. La funcion c
+
esta denida por:
(a) Para todo a
+
# y para todo c Q se tiene que c
+
(a. c) =
((a. 1) .

c
o
. ) .
(b) Para todo a. /
+
y para todo c Q se tiene que c
+
(a.

c
b
) =
(a.

c
b
. ) .
(c) Para todo a
+
y para todo c Q. si $ denota que la celda
actual no contiene caracteres y si c (/. na. c) = (n.
1
.
2
. j), se
tiene que c
+
($.

c
b
) = (.
2
.

j . ) .
(d) Para todo a y para todo c Q se tiene que c
+
(a.

c ) =
(a.

c . ) .
(e) Para todo a y para todo c Q se tiene que c
+
((a. 1) .

c ) =
(a. c. ) .
(f) Para todo c Q. c
+
($. c) = /a|t. (esto es, la maquina termina
la computacion en este punto).
(g) Para todo c Q y para todo a se tiene que c
+
($.

c
o
) =
($.

c
o
. ) .
(h) Para todo c Q. c
+
($.

c ) = ($.

c . ) .
Dado r = r
1
...r
n
un input de . supondremos que la maquina T ()
es inicializada en el estado c
0
. con el input r
1
r
2
...r
n
# escrito en el extremo
izquierdo de la cinta. El simbolo # sera usado para indicar el nal del input
y el comienzo de la pila, la maquina T () usara las celdas a la derecha
del simbolo # para simular la pila de . Una transicion
(na. c. i)
'
(n.
1
.
2
. j. i + 1)
sera simulada por la siguiente secuencia de transiciones
(r#na. c. i) (r
1
...r
I1
(r
I
. 1) r
I+1
...r
n
#na.

c
ri
. i + 1) ...
xxxvi 4. Maquinas de Turing
(r
1
...r
I1
(r
I
. 1) r
I+1
...r
n
#na.

c
ri
. : + 1 +[n[)
(r
1
...r
I1
(r
I
. 1) r
I+1
...r
n
#n.
1
.
2
.

j . : + 1 +[n[ +c) ....


(r
1
...r
I1
(r
I
. 1) r
I+1
...r
n
#n.
1
.
2
.

j . i)
(r
1
...r
I1
r
I
r
I+1
...r
n
#n.
1
.
2
. j. i + 1)
donde .
1
.
2
' c y c 1. 0. 1 . El valor de c esta determinado
por la siguiente regla
Si .
1
= a y .
2
= c. entonces c = 1.
Si .
1
. .
2
= c. entonces c = 1.
Si .
1
= a y .
2
= c. entonces c = 0.
Note que si es un automata deterministico, la simulacion de la com-
putacion del automata en el input r consta de a lo mas 2:
2
transiciones.
Con lo anterior hemos probado el teorema que enunciamos a continuacion.
Teorema 36 Si es un automata de pila deterministico, la maquina
T () realiza a lo mas 2:
2
transiciones al simular la computacion del
automata en el input r.
El caso de automatas de pila no deterministicos es tecnicamente mas
complicado, dado que tenemos que arreglarnoslas para simular el no-determinismo.
Aun asi es posible probar el siguiente teorema
Teorema 37 (Earley)
Dado un automata de pila no deterministico, existe una maquina de
Turing T () y existe C N tales que la maquina T () es capaz de
simular el automata , ademas se tiene que la maquina T () realiza a
lo mas C [r[
3
transiciones al simular la computacion del automata en
el input r.
4.2 Tiempo de computo: analisis de algoritmos
Los practicantes de la algoritmia saben que
Para dar por resuelto un problema
no basta con conocer un algoritmo
que resuelva el problema
Esto es asi dado que no todo algoritmo puede ser usado en la practica.
algunos algoritmos requieren recursos computacionales de los cuales, en
4.2 Tiempo de computo: analisis de algoritmos xxxvii
la practica, no es posible disponer. Usualmente los algoritmos malos lo
son o porque requieren demasiada memoria o porque requieren tiempos de
computo astronomicos cuando se procesan inputs grandes.
Dado un algoritmo, es necesario analizar el algoritmo y determinar desde
el analisis teorico si este es suceptible de ser usado en la practica. El primer
aspecto que debe analizarse de un algoritmo es su tiempo de computo. El
tiempo de computo mide la velocidad del algoritmo. A cada algoritmo es
posible asociarle una funcion, la funcion tiempo de computo, la cual mide
la manera como el tiempo de computo escala respecto al tamao de los
inputs. La tesis de Church justica el que basemos nuestro analisis de
algoritmos en la nocion de maquina de Turing.
Denicin 38 Dada una maquina de Turing, la funcion tiempo de
computo de es la funcion T
'
: N N' denida por:
1. Dado r
+
un input de se dene T
'
(r) como el numero de
transiciones que realiza la maquina al procesar el input r. Si la
maquina no para, es decir si el numero de transiciones es innito,
denimos T
'
(r) = .
2. Dado : N se dene T
'
(:) = max
r:|r|=n
T
'
(r) .
Dados dos algoritmos (o, lo que es lo mismo, dos maquinas de Turing)
y A que resuelven el mismo problema 1. es importante poder decidir
desde la teoria cual de los dos algoritmos es el mas eciente. Para ello
podemos intentar comparar el tiempo de computo de los dos algoritmos.
Esto nos obliga a denir una nocion de orden apropiada para el conjunto
N
N
. Esta nocion de orden debe tener un caracter asintotico, dado que los
inputs grandes son los inputs para los cuales es importante que el algoritmo
se comporte de manera eciente. En cierto sentido los inputs pequeos
son pan comido, y todo algoritmo puede dar cuenta de ellos de manera
apropiada (los inputs pequeos se pueden resolver a mano).
Denicin 39 (notacion asintotica)
1. Dadas 1. o N
N
. se tiene que 1 O(o) si y solo si existen C. 1 N
tales que para todo : _ C se satisface la desigualdad 1 (:) _ 1o (:) .
2. Dadas 1. o N
N
. se tiene que 1 (o) si y solo si o O(1) .
La nocion de orden que suele usarse para comparar el tiempo de computo
de dos algoritmos esta dada por
_ si y solo si T
'
O(T
'
)
xxxviii 4. Maquinas de Turing
4.3 Lenguajes no computables
En el capitulo 1 presentamos un argumento informal que garantizaba la
existencia de problemas no computables. En aquel momento era imposible
presentar un argumento formal, dado que no contabamos con una nocion
formal de computabilidad. A estas alturas, contando como lo hacemos con
la nocion de Turing-computabilidad, podriamos formalizar el argumento.
No vamos a hacerlo dado que, aunque el argumento garantiza que existe
una innidad no enumerable de problemas no computables, el argumento
no nos permite exhibir un problema concreto no computable. En esta
seccion deniremos un problema concreto (el problema de la parada) del
cual mostraremos que es no Turing-computable (y entonces no computable
si la tesis de Church es cierta).
Denicin 40 El problema de la parada es el problema denido por
Input: (. r) donde es una maquina de Turing y r es un input
de .
Problema: Decida si la maquina para al procesar el input r. esto
es decida si T
'
(r) .
Teorema 41 El problema de la parada no es computable.
Proof. Suponga que A es una maquina de Turing que resuelve el problema
de la parada. Esto quiere decir que dada una maquina de Turing, si a A
se le presenta como input el par

....
. r

, (donde
....
es una codicacion
adecuada de la maquina ). entonces sucede lo siguiente
Si para al procesar el input r. la maquina A imprime 1.
Si no para al procesar el input r. la maquina A imprime 0.
Podemos disear una maquina de Turing, llamemosla A
+
. tal que
Si A

....
.
....


= 1. entonces la maquina A
+
al procesar el
input

....


entra en un bucle innito.
Si A

....
.
....


= 0. entonces A
+

....


= 0.
Podemos preguntarnos que pasa si a la maquina A le presentamos el
input

....
A
+
.
....
A
+

. Note que:
4.4 Maquinas universales xxxix
Si A
+

....
A
+

= 0 = A

....
A
+
.
....
A
+

. Entonces la maquina A
+
no para al procesar el input
....
A
+
. pero esto es absurdo, dado que
la maquina A
+
si para al procesar el input
....
A
+
y al nal de esta
computacion imprime 0.
Si A

....
A
+
.
....
A
+

= 1. entonces la maquina A
+
si para al procesar
el input
....
A
+
. pero esto es absurdo dado que en este caso la maquina
A
+
, de acuerdo a su diseo, entra en un bucle innito.
Es claro entonces que hemos llegado a una contradiccion insalvable, y
deber ser claro para el lector que la causa de esta contradiccion fue suponer
que existe una maquina A que supuestamanente resuelve el problema de la
parada Podemos entonces concluir que no existe una maquina de Turing
que resuelva el problema de la parada, (i.e. el problema de la parada no
es Turing-computable, y si aceptamos la tesis de Church el problema de la
parada no es computable).
4.4 Maquinas universales
Las maquinas que hemos introducido hasta el momento tienen la caracter-
istica de ser maquinas de un solo proposito, cada una de las maquinas y
cada uno de los automatas que hemos introducido y estudiado sirven, en
principio, para resolver un unico problema. Esto no se corresponde a la
intuicion que tenemos de maquinas computadoras las cuales son maquinas
multiproposito, es decir maquinas que pueden ser programadas para re-
solver una gran variedad de problemas.
Uno de los resultados fundamentales de la teoria de maquinas de Turing
arma que existe una maquina de Turing |, que llamaremos universal, que
puede ser usada para simular cualquier otra maquina de Turing, y entonces
(de acuerdo a la tesis de Church) | es una maquina que puede ser usada
para reconocer cualquier lenguaje computable, (o, lo que es lo mismo, para
resolver cualquier problema computacionalmente soluble).
Fijemos un alfabeto . Diremos que |

es una maquina de Turing -


universal si y solo si |

puede ser usada para reconocer todo -lenguaje


decidible.
Lema 42 Dado existe 1 N tal que todo -lenguaje decidible puede
ser reconocido usando una maquina de Turing = (Q. . c
0
. 1. c) tal que
1. [Q[ _ 1.
2. = ' .
xl 4. Maquinas de Turing
Note que si es una maquina de Turing como en el enunciado del
lema anterior la maquina puede ser descrita usando una -palabra de
longitud /([[ +1) . donde / es una funcion conveniente que no depende
ni de ni de 1. Dada una maquina de Turing usaremos el simbolo
....
para indicar el codigo de .
Teorema 43 Dado un alfabeto, existe una maquina de Turing |

la
cual es -universal.
Proof. En la prueba de este teorema usaremos la version pragmatica de
la tesis de Church, lo cual nos permitira evitar los engorrosos detalles in-
volucrados en la construccion explicita de |

. aun asi es importante anotar


que es posible presentar una construccion explicita de |

; es un excelente
ejercicio para el lector intentar desarrollar una tal construcion.
Sea = ' y sea Tnri:o el -lenguaje denido por
Tnri:o =

....
r : es una -maquina de Turing, r
+
y acepta r

Es claro que el lenguaje Tnri:o es decidible en el sentido en que existe


un procedimiento mecanico para reconocer Tnri:o (construya usando
....
y verique que
....
acepta r). La tesis de Church arma que existe
una maquina de Turing, llamemosla |

, que reconoce el lenguaje Tnri:o.


Note que |

puede ser usada para reconocer todo -lenguaje decidible.


Sea 1 un -lenguaje decidible. Considere el siguiente procedimiento.
1. Dado que 1 es un -lenguaje decidible, existe una maquina de Turing
....
que decide 1. construya una tal y construya entonces
....

(el codigo de
....
).
2. Dada r una instancia de 1. construya
....
r.
3. Use la maquina |

en el input
....
r.
Note que |

acepta
....
r si y solo si acepta r si y solo si r
1. Tenemos entonces que la maquina |

puede ser efectivamente usada


para reconocer todo -lenguaje decidible (en este sentido la maquina es
universal)
El teorema anterior es un paso adelante, pero no es el paso nal, dado
que aun necesitamos contar con una maquina por cada alfabeto (antes
necesitabamos contar con una maquina por cada problema).
Diremos que una maquina de Turing | es una maquina universal si y solo
si | puede ser usada para reconocer todo lenguaje decidible. Probaremos
que existe una maquina de Turing universal, la idea se basa en que si jamos
4.4 Maquinas universales xli
un alfabeto . podemos recodicar todo lenguaje 1 como un -lenguaje, es
decir dado 1 un lenguaje en un alfabeto arbitrario . existe una biyeccion
computable c

de
+
en
+
tal que 1 es decidible si y solo si c

(1) .
la imagen de 1, es decidible.
Teorema 44 Existe una maquina de Turing | la cual es universal.
Proof. Para empezar jaremos un alfabeto (por ejemplo = 0. 1).
Sea 1 un lenguaje decidible en un alfabeto arbitrario y sea |

una
maquina de Turing -universal. Mostraremos que es posible usar |

para
decidir el lenguaje 1. Considere el siguiente procedimiento:
Dada r una instancia de 1
1. Calcule c

(r) .
2. Use |

para decidir si c

(r) c

(1) .
Note que r 1 si y solo si c

(r) c

(1) si y solo si |

acepta
c

(r) .
Tenemos entonces que la maquina |

es universal dado que puede ser


usada para decidir todo lenguaje decidible (y entonces para resolver todo
problema computable). Si tomamos | igual a |

obtenemos la prueba del


teorema
Algunos lectores pueden sentirse decepcionados con el teorema anterior,
dado que a la maquina universal | es necesario ayudarle (en cierto sentido)
con los calculos que pretendemos que ella realize, especicamente dado 1
un lenguaje computable en un alfabeto arbitrario , a la hora de usar |
para decidir si r 1 es necesario
1. Calcular c

(r) .
2. Disear una maquina que decida c

(1) .
3. Construir
....
el codigo de .
El lector debe notar que
1. La maquina se disea una unica vez, es decir hecho el diseo de
al momento de decidir si r pertenece a 1. no es necesario repetir
el trabajo de diseo para decidir de otra palabra n si ella pertenece
o no a 1.
2. El calculo de
....
se realiza una unica vez.
3. El calculo de c

(r) es computacionalmente trivial.


Note que al usar un computador digital para decidir si una palabra r
pertenece a un lenguaje 1 es necesario:
xlii 4. Maquinas de Turing
1. Disear un algoritmo / que sea capaz de reconocer 1.
2. Implementar el algoritmo / en un lenguaje de programacion ade-
cuado, esto es calcular
....
/ un codigo computacional de /.
3. Calcular una codicacion adecuada de la instancia r. esto es calcular
c

(r), donde es el alfabeto de 1 y es el alfabeto de la maquina


(por ejemplo 0. 1. . o por ejemplo el codigo ASCII).
Tenemos entonces que:
| es el hardware.
es el algoritmo.

....
es la implementacion de en un lenguaje de programacion
prejado.
c

(r) es el codigo computacional de r


1
.
4.5 Ejercicios capitulo 4
1. Pruebe el lema 42.
2. Disee una maquina de Turing que reconozca el lenguje 1a| en tiempo
O

:
2

.
3. Disee explicitamente una maquina de Turing universal.
4. Si fracaso con el desarrollo del ejercicio anterior, intente lo siguiente:
disee una maquina que sea capaz de simular toda maquina de
Turing con a lo mas dos estados y con alfabeto interno 0. 1. .
5. Si fracaso con el ejercicio anterior intente algo aun mas facil: disee
una maquina de Turing capaz de simular a todo automata de pila.
6. (trabajo de lectura) Investigue la nocion de reduccion entre lenguajes
combinatorios y sus aplicaciones en la teoria de la computabilidad(no-
computabilidad).
1
Note que el calculo de
!
(x) es inevitable en muchos casos, dado que a un
computador no le podemos introducir cualquier objeto como input de un programa, por
ejemplo si x es un grafo, como input del programa que estemos usando introduciremos
m(x) ; la matriz de adyacencia de x; o I (x) la matriz de incidencia o cualquier otro
codigo combinatorio-computacional del grafo x:
4.5 Ejercicios capitulo 4 xliii
7. Decida si el siguiente problema es o no computable, en caso de serlo
disee un algoritmo que lo resuelva, en caso de no serlo pruebe que
el problema no es computable.
El problema de la vacuidad
Input: , donde es un automata de pila.
Problema: Decida si 1() es diferente de vacio.
8. Decida si el siguiente problema es o no computable, en caso de serlo
disee un algoritmo que lo resuelva, en caso de no serlo pruebe que
el problema no es computable.
El problema de la equivalencia
Input: (. A), donde y A son automatas de pila.
Problema: Decida si 1() = 1(A) .
9. Decida si el siguiente problema es o no computable, en caso de serlo
disee un algoritmo que lo resuelva, en caso de no serlo pruebe que
el problema no es computable.
El problema de la nitud
Input: , donde es un automata de pila.
Problema: Decida si 1() es nito.
xliv 4. Maquinas de Turing
This is page xlv
Printer: Opaque this
5
Una introduccion a la complejidad
computacional
Este capitulo pretende ser una breve introduccion a la Teoria de la com-
plejidad computacional. La complejidad computacional (o la Teoria de la
complejidad computacional) intenta dar respuestas al siguiente tipo de pre-
gunta: dado 1 un lenguaje computable, cuales son los recursos computa-
cionales requeridos para resolver el problema 1? La complejidad computa-
cional parte del hecho de que todo problema tiene un grado de dicultad
intrinseco, que le es propio, y que por lo tanto toda solucion computa-
cional de un problema algoritmico requiere una cantidad minima de recur-
sos computacionales. El concepto de recurso computacional es un concepto
informal y multifacetico. Recursos computacionales pueden ser: tiempo de
computo, espacio de memoria, habilidades del hardware, recursos aleatorios
(bits aleatorios). A lo largo del libro hemos analizado, en cierto sentido, la
complejidad computacional (esto es: la dicultad intrinseca) del problema
1a|. Hemos establecido cotas inferiores tales como:
1. No es posible resolver 1a| usando automatas regulares (una cabeza
lectora unidireccional).
2. No es posible resolver 1a| usando automatas de pila deterministicos
(cabeza lectora unidireccional + dispositivo externo de memoria).
3. No es posible resolver 1a| usando automatas de doble via (una cabeza
bidireccional).
Reciprocamente, hemos establecido cotas superiores tales como:
xlvi 5. Una introduccion a la complejidad computacional
Es posible resolver 1a| usando un automata de pila no determinis-
tico (cabeza lectora unidireccional + dispositivo externo de memoria+no-
determinismo).
Este tipo de resultados, cotas inferiores y cotas superiores, es el tipo
de resultados que la complejidad computacional intenta establecer cada
vez que se analiza un problema computable. Una cota superior es simple-
mente un algoritmo que resuelve el problema. Dado 1 un problema y dado
un algoritmo, si resuelve 1 entonces los recursos usados por son
sucientes para resolver 1. Establecer una cota superior consiste precisa-
mente en probar que cierta cantidad de recursos (usados inteligentemente),
son sucientes para resolver 1.
el establecimiento de cotas inferiores (tal cantidad de recursos es insu-
ciente, por lo tanto algo mas es necesario), presupone un analisis teorico
tanto del problema como de las potencialidades de los recursos en cuestion.
Algunas cotas inferiores puden opbtenerse por dos caminos diferentes
Como corolarios de resultados generales concernientes al modelo de
computacion (o conjunto de modelos con acceso a cierta cantidad de
recursos) tales como: el lema de bombeo para automatas regulares,
la simulabilidad mediante automatas regulares de los automatas reg-
ulares no deterministicos y de los automatas de doble via.
Via argumentos combinatorias ad hoc, tales como: el argumento de
secuencias de cruce que usaremos en este capitulo para probar que
1a| requiere tiempo cuadratico cuando se consideran maquinas de
Turing de una cinta (45); el argumento combinatorio elemental usado
al probar que 1a| requiere no-determinismo cuando se consideran
automatas de pila.
En este capitulo presentaremos algunas cotas inferiores y algunas cotas
superiores referentes al lenguaje 1a|. y referentes a diferentes modelos de
maquina de Turing.
5.1 Una cota inferior para Pal: secuencias de cruce
En esta seccion probaremos una cota inferior para 1a|. especicamente pro-
baremos que toda maquina de Turing de una sola cinta capaz de reconocer
el lenguaje 1a| tiene un tiempo de computo por lo menos cuadratico. La
prueba es un argumento combinatoria elemental que se basa en la nocion
de secuencia de cruce, nocion que ha sido utilizada con exito para obtener
otras cotas inferiores (vea [2], [11]).
Teorema 45 (Teorema de Hennie)
1a| requiere tiempo

:
2

en una maquina de Turing de una sola cinta


5.1 Una cota inferior para Pal: secuencias de cruce xlvii
Proof. Sea una maquina de Turing de una sola cinta que reconoce el
lenguaje 1a|. Considere el subconjunto de 1a| denido por

r1
2|r|
r : r
+

Dado r1
2|r|
r
+
y dado i _ 4 [r[ . denimos C
'
I
(r) . la i-esima se-
cuencia de cruce (crossing sequence) asociada a r y a de la siguiente
manera: C
'
I
(r) es la secuencia ordenada de estados a los que accede
cada vez que, procesando el input r1
2|r|
r. cruza la linea que separa la celda
i-esima y la celda i + 1-esima. Dado r
+
. denimos C
'
(r) como

C
'
I
(r) : [r[ _ i _ 3 [r[

La observacion fundamental es que dados r. n


n
. si r = n entonces
C
'
(r) C
'
(n) = ?. Suponga que existe i :. : + 1. .... 3: tal que
C
'
I
(r) = C
'
I
(n) . sea . el prejo de longitud i de la palabra r1
2|r|
r y sea
n el sujo de longitud 4:i de la palabra n1
2|r|
n. Es facil convencerse de
los siguientes hechos
1. .n 1a|
2. acepta la palabra .n
Lo anterior implica que no puede reconocer el lenguaje 1a|. contradi-
ciendo con ello la hipotesis inicial. Es claro que la hipotesis auxiliar que nos
ha llevado a esta contradiccion es suponer que existen : N y r. n
n
tales que r = n y C
'
(r) C
'
(n) = ?.
Dado r
+
el simbolo t
r
denotara la cantidad min
I|r|,...,3|r|

C
'
I
(r)

y dado : N el simbolo t
n
denotara la cantidad max
r
n t
r
.
Armacion. t
n
(:) .
Note que la armacion anterior implica que el tiempo de computo de
es

:
2

. Para terminar la prueba es suciente probar la armacion.


Note que el numero de -secuencias de cruce de longitud menor o igual
que t esta acotado superiormente por
|

I=0
[Q
'
[
I
=
[Q
'
[
|+1
1
[Q
'
[ 1
Recuerde que dado : N, y dados r. n
n
se tiene que C
'
(r)
C
'
(n) = ?. Dado que existen 2
n
palabras en
n
se tiene que
[Q
'
[
|n+1
1
[Q
'
[ 1
_ 2
n
Esta ultima desigualdad implica que t
n
(:) . dado que Q
'
es una
cantidad constante que no depende de :.
xlviii 5. Una introduccion a la complejidad computacional
El ejercicio 2 del capitulo 4 pedia vericar que existe una maquina de
Turing de una sola cinta capaz de reconocer el lenguaje 1a| en tiempo
O

:
2

. Tenemos entonces una cota inferior y una cota superior referentes


al tiempo de computo requerido por una maquina de una sola cinta para
reconocer el lenguaje 1a|. y tenemos adicionalmente un hecho infrecuente
en ciencias de la computacion: la cota inferior y la superior cazan, o lo que
es lo mismo las dos cotas son ajustadas (tight).
5.2 Maquinas de Turing multicinta
En esta seccion presentaremos el modelo de maquinas de Turing multicinta.
Dado / N, una maquina de Turing con / cintas es una maquina de Turing
que ademas de contar con la cinta de entrada, en la cual se escribe el input
antes de iniciar el computo, cuenta con / 1 cintas adicionales las cuales
pueden ser usadas como espacio de trabajo adicional. Adicionalmente la
maquina cuenta con /-cabezas lecto-escritoras (una por cada cinta) que se
mueven de manera independiente.
Denicin 46 Una maquina de Turing con / cintas es una sextupla
(Q. . c
0
. 1. c. )
tal que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. es un conjunto nito, el alfabeto de la maquina que satisface '
_ .
3. c
0
Q es el estado inicial de la maquina.
4. 1 Q es el conjunto de estados nales de la maquina.
5. La funcion de transicion c es una funcion de ()
|
Q en ()
|
Q
. .
|
.
6. 1 Q y si el estado interno de la maquina pertenece a la
maquina para.
En lo que sigue probaremos que:
Dada una maquina con / ci:ta:. existe
+
una maquina de
una sola cinta que simula . Adicionalmente se tiene que para todo
: N se satisface la desigualdad T
1
(:) _ / (T
1
(:) +: + 2/)
2
.
El lenguaje 1a| puede ser decidido en tiempo lineal (incluso en
tiempo real!) por una maquina multicinta.
5.2 Maquinas de Turing multicinta xlix
Tenemos entonces que la adicion de hardware (/ 1 cintas adicionales)
incrementa el poder de computo pero de una manera modesta. Lo incre-
menta porque permite decidir algunos lenguajes computables de manera
mas eciente. El incremento en poder de computo es modesto dado que
las nuevas maquinas son capaces de decidir exactamente los mismo lengua-
jes y ademas porque el incremento en eciencia (aceleramiento, speed up)
es de caracter polinomial.
Denicin 47 Dada = (Q. . c
0
. 1. c. ) una maquina con /-cintas,
una conguracion de es una tupla (c. n
1
. j
1
. n
2
. j
2
. .... n
|
. j
|
) . donde c
es el estado interno de la maquina y para cada i _ / el simbolo n
I
denota
el contenido de la i-esima cinta, mientras que j
I
denota la posicion de la
i-esima cabeza lecto-escritora.
Teorema 48 Dada una maquina con /ci:ta:. existe
+
una maquina
de una sola cinta que simula . Adicionalmente se tiene que para todo
: N se satisface la desigualdad T
'
(:) _ / (T
'
(:) +: + 2/)
2
.
Proof. Sea = (Q. . c
0
. 1. c. ) una maquina de Turing con /-cintas.
Para simular la maquina usaremos una maquina de una sola cinta,
llamemosla
+
. La construccion de la maquina
+
se basa en las sigu-
ientes observaciones
Podemos particionar la cinta de
+
en las / clases de equivalencia
modulo /. Recuerde que podemos pensar en la cinta de
+
como en
una secuencia ordenada de celdas i : i N . Dado , _ /. la clase
[,] es la coleccion de celdas | : | = , (mod/) . Usaremos la clase
[,] para simular los computs de realizados sobre la cinta ,-esima.
Podemos patir cada transicion de en /-estapas, cada una de ellas
correspondiendo al trabajo que realiza en cada una de las cintas.
Dado que el movimiento de la cabezas es independiente y no necesari-
amente paralelo, en cada instante de la computacion y de cada clase
[,] debemos marcar la celda sobre la que ha de hallarse la ,-esima
cabeza.
Sea entonces
+
= (Q
+
.
+
. c
0
. 1. c
+
. ) la maquina denida por:
1. Q
+
= Q' Q
l
' Q
t
. donde
Q
l
=

c
o ,I,l
:

a (
+
)
|
y i 0. 1. .... /

y
Q
t
=

c
o ,I,t,

t
:

a (
+
)
|
; i 0. 1. .... / y

c 1. 0. 1
|

.
2.
+
= ' (a. i) : a
+
y i 1. .... / .
l 5. Una introduccion a la complejidad computacional
A la funcion c no la deniremos explicitamente, (por resultar increible-
mente engorroso), a cambio ilustraremos como la maquina
+
simula una
transicion de .
Considere una transicion tipica de , como por ejemplo

c
1
. n
1
1
...n
1
1
...n
|u1|
1
. j
1
. .... n
1
|
...n

k
|
...n
|u
k
|
|
. j
|

c
2
. n
1
1
....
1
1
...n
|u1|
1
. j
1
+c
1
. .... n
1
|
....

k
|
...n
|u
k
|
|
. j
|
+c
|

donde c
1
. .... c
|
1. 0. 1 . (supondremos sin perdida de generalidad
que 1 j
1
... j
|
[n
1
[; [n
1
[ = ... = [n
|
[ y c
1
. .... c
|
= 1). Para
simular una tal transicion de usamos la siguiente secuencia de
+
-
transiciones

c
1
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .... (n

k
|
. /) ...n
|u1|
1
...n
|u1|
|
. j
1
/ + 1

(c
1
)
u
p
1
1
...,1,l
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .... (n

k
|
. /) ...n
|u1|
1
...n
|u1|
|
. j
1
/ + 2

...


(c
1
)
u
p
1
1
u
p
2
2
...,2,l
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .... (n

k
|
. /) ...n
|u1|
1
...n
|u1|
|
. j
2
/ + 2

...


(c
1
)
u
p
1
1
u
p
2
2
...u
p
k
k
,|,l
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .... (n

k
|
. /) ...n
|u1|
1
...n
|u1|
|
. j
|
/

(c
2
)
:
p
1
1
:
p
2
2
...:
p
k
k
,|,t,

t
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .....

k
|
...n
|u1|
1
...n
|u1|
|
. j
|
/ +c
|
1

...


(c
2
)
:
p
1
1
:
p
2
2
...:
p
k
k
,|,t,

t
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .....

k
|
...n
|u1|
1
...n
|u1|
|
. j
|
/ +c
|
/

...
( (c
2
)
:
p
1
1
:
p
2
2
...:
p
k
k
,|1,t,

t
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .....

k
|
...

k
+1
|
. /

..
..n
|u1|
1
...n
|u1|
|
. j
|
/ +c
|
/)
( (c
2
)
:
p
1
1
:
p
2
2
...:
p
k
k
,|1,t,

t
. n
1
1
n
1
2
...n
1
|
... (n
1
1
. 1) .....

k
|
...

k
+1
|
. /

..
..n
|u1|
1
...n
|u1|
|
. j
|
/ +c
|
/ 1) ...
( (c
2
)
:
p
1
1
:
p
2
2
...:
p
k
k
,1,t,

t
. n
1
1
n
1
2
...n
1
|
....
1
1
...

n
1+1
1
. 1

....

k
|
..
..

k
+1
|
. /

...n
|u1|
1
...n
|u1|
|
. j
1
/ +/ + 1)

c
2
. n
1
1
n
1
2
...n
1
|
....
1
1
...

n
1+1
1
. 1

....

k
|
...

k
+1
|
. /

...n
|u1|
1
...n
|u1|
|
. j
1
/ +/ + 1

La idea es que los estados en Q


l
son estados de lectura, lo cual quiere
decir que mientras la maquina
+
esta en un estado c Q
l
. ella esta
recorriendo la cinta recolectando informacion acerca de los / caracteres
que esta leyendo la maquina . La informacion recolectada, que puede
ser codicada usando a lo mas [[ / bits es almacenada usando los estados
5.2 Maquinas de Turing multicinta li
internos de la maquina
+
. Al terminar la fase de lectura, la maquina
calcula: el vector

c que indica las direcciones de movimiento de las cabezas


lecto-escritoras de ; los caracteres .
1
. .... .
|
que habran de reemplazar a
los / caracteres que la maquina estaba leyendo y j el estado interno
al que accede la maquina . Tras calcular esta informacion, que de por
si determina la transicion de . la maquina
+
la almacena dentro de
un estado j
:1,...,:
k
,|,

t ,t
Q
t
. el cual es un estado de escritura. Lo que
la maquina
+
debe hacer a continuacion es: realizar los reemplazos de
caracteres a lugar, marcar las posiciones de la cinta unidimensional que
corresponden a las posiciones de las / cabezas de y nalmente ubicar
su cabeza lectora en una posicion adecuada. Para realizar este trabajo,
la unica informacion que necesita, y que no se ha codicado dentro
del estado de la maquina, son las posiciones de las cabezas lectoras; es
para ello que se usan caracteres adicionales de la forma (a. i) (con a
e i 1. .... /), para marcar dichas posiciones.Note que para simular una
transicion de la maquina se necesitan a lo mas / (T
'
(:) +: + 2/)
transiciones de
+
por lo que el tiempo de computo de
+
esta acotado
superiormente por / (T
'
(:) +: + 2/)
2
El teorema anterior arma que es posible simular velozmente una maquina
multicinta usando una maquina de una sola cinta. Que la simulacion sea
veloz quiere decir que el aceleramiento (speed up) que es posible lograr al
usar varias cintas no puede ser mas que polinomial.
Teorema 49 El lenguaje 1a| puede ser decidido en tiempo lineal por una
maquina multicinta.
Proof. Sea la maquina de dos cintas denida por:
Al comienzo de la computacion, el input r aparece escrito en el ex-
tremo izquierdo de la cinta 1. la cinta 2 se encuentra vacia, las dos
cabezas lecto-escritoras de la maquina se encuentran ubicadas en el
extremo izquierdo de cada cinta.
Supongamos que el input r tiene longitud :. En la primera etapa
del computo las dos cabezas se desplazan : posiciones a la derecha.
Mientras la cabeza 2 avanza sobre la cinta 2, ella va escribiendo si-
multaneamente los caracteres de r (que la cabeza 1 esta leyendo).
En la segunda etapa del computo la cabeza 1 se desplaza al extremo
izquierdo de la cinta 1.
En la tercera etapa las dos cabezas se mueven de manera simultanea,
la cabeza 1 de izquierda a derecha leyendo el input, la cabeza 2 de
derecha a izquierda. Las dos cabezas van leyendo los contenidos de
sus cintas. La cabeza 2 lee r pero de derecha a izquierda, mientras que
la cabeza 1 lee r de izquierda a derecha. La maquina compara paso
a paso los caracteres leidos por cada una de las cabezas, si en algun
lii 5. Una introduccion a la complejidad computacional
instante de esta etapa las cabezas se encuentran leyendo caracteres
distintos la maquina para y rechaza el input. Si todos los caracteres
coinciden la maquina acepta el input.
Es facil convencerse de que la maquina acepta el lenguaje 1a|. Adi-
cionalmente es facil convencerse de que el tiempo de computo de es 3:
Comentario 50 Un importante teorema de Ziv Galil arma que existe
una maquina multicinta capaz de reconocer el lenguaje 1a| en tiempo real
[4]. Debe ser obvio para el lector que este teorema de Galil esta muy lejos de
ser evidente o elemental, al teorema de Galil lo estudiaremos en el capitulo
6.
5.3 Maquinas multidimensionales
En esta seccion estudiaremos un modelo de computacion que extiende el
modelo de maquina de Turing.
Denicin 51 Una maquina de Turing bidimenional (para mayor brevedad,
simplemente maquina bidimensional) es una sextupla (Q. . c
0
. 1. c. ) tal
que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. es un conjunto nito, el alfabeto de la maquina que satisface '
_ .
3. c
0
Q es el estado inicial de la maquina.
4. 1 Q es el conjunto de estados nales de la maquina.
5. La funcion de transicion c es una funcion de Q en Q
. . . |. | .
6. 1 Q y si el estado interno de la maquina pertenece a la
maquina para.
Las maquinas bidimensionales son maquinas de Turing que cuentan con
una unica cinta bidimensional, la cual es un semiplano (el semiplano noror-
iental) particionado en celdas. Adicionalmente la maquina cuenta con una
cabeza lectora capaz de moverse a lo largo y ancho de la cinta. Es por
ello que en la denicion de c. el tercer factor del rango de c. que es el con-
junto . . . |. | . incluye cinco parametros: movimientos a derecha,
a izquierda, hacia arriba, hacia abajo y permanecer sobre la celda que se
acaba de leer.
5.3 Maquinas multidimensionales liii
Dada una maquina bidimensional y dado r un input de '. supon-
dremos que al iniciar el computo, el input aparece escrito en la primera la
y con el primer caracter ocupando el extremo izquierdo de la primera la.
Podemos pensar en la cinta de como en el reticulo (i. ,) : i. , N .
La primera la de la cinta es el conjunto (0. ,) : , N . El origen de la
cinta es la celda (0. 0) . ubicada en el extremo suroccidental de la misma.
Es posible que una cinta bidimensional agregue algun poder de computo
a la maquina, es posible que no. Si la tesis de Church es cierta, una cinta.no
nos va a permitir decidir un lenguaje que no sea Turing-computable, pero
lo que si puede pasar es que la bidimensionalidad de la cinta nos permita
decidir algunos lenguajes computables de manera mas eciente. Esta ul-
tima hipotesis podemos intentar revisarla a la luz de lo que sucede con el
lenguje 1a|. Antes de esto probaremos que toda maquina bidimensional
puede ser efectivamente simulada por una maquina bidimensional, y que
adicionalmente que el tiempo de computo de la maquina unidimensional
esta acotado por un polinomio en el tiempo de computo de la maquina
bidimensional.
Denicin 52 Dada una maquina bidimensional, una conguracion
de es una tripla (c. . (i. ,)) . donde c Q es el estado interno de la
maquina; es el contenido de un subreticulo nito de N N de la forma
(/. |) : /. | _ : y tal que alcanza a contener todo el contenido de la
cinta de ; y nalmente la pareja (i. ,) indica la posicion de la cabeza
lecto-escritora de (se satisface que i. , _ : 1).
Teorema 53 Suponga que es una maquina bidimensional que decide
1. Existe una maquina unidimensional
1
que decide el lenguaje 1.
Adicionalmente se tiene que para todo : N se satisface la desigualdad
T
'1
(:) _ 2

T
'
(:)
2
+: + 4

2
.
Proof. Suponga que = (Q. . c
0
. 1. c. ) es una maquina bidimensional
que decide 1. Probaremos que existe una maquina
1
con 2 cintas uni-
dimensionales que reconoce 1. La primera cinta sera usada para simular
la cinta bidimensional de ' mientras que la segunda cinta se usara como
contador. El primer problema que debemos resolver es el siguiente: como
recorrer, de manera lineal, el reticulo N N? Para resolver este primer
problema podemos usar la bien conocida biyeccion de Cantor entre el con-
liv 5. Una introduccion a la complejidad computacional
junto N y el conjunto N N, la cual se ilustra a continuacion
(0. 3)
| `
(0. 2) (1. 2)
` `
(0. 1) (1. 1) (2. 1)
| ` ` `
(0. 0) (1. 0) (2. 0) (3. 0)
Usaremos la curva de Cantor para simular el desplazamiento de una
cabeza lectora sobre una cinta bidimensional usando una cinta unidimen-
sional. Note que dada (i. ,) . una celda cualquiera de la cinta bidimensional
de , se satisface lo siguiente:
1. Si i. , = 0 e i + , es un numero par, la curva de Cantor visita (i. ,)
viniendo de la celda (i + 1. , 1) y llendo a la celda (i 1. , + 1) .
2. Si i. , = 0 e i +, es un numero impar, la curva de Cantor visita (i. ,)
viniendo de la celda (i 1. , + 1) y llendo a la celda (i + 1. , 1) .
3. Si i = 0 es un numero par, la curva de Cantor visita (i. 0) viniendo
de la celda (i 1. 0) y llendo a la celda (i 1. 1) .
4. Si i = 0 es un numero impar, la curva de Cantor visita (i. 0) viniendo
de la celda (i 1. 1) y llendo a la celda (i + 1. 0) .
5. Si , = 0 es un numero par, la curva de Cantor visita (0. ,) viniendo
de la celda (1. , 1) y llendo a la celda (0. , + 1) .
6. Si , = 0 es un numero impar, la curva de Cantor visita (0. ,) viniendo
de la celda (0. , 1) y llendo a la celda (1. , 1)
Para poder simular la dinamica de la cabeza de usando una cinta
unidimensional debemos usar un alfabeto enriquecido. Lo ideal seria que
el caracter ubicado en una celda unidimensional i especicara a que celda
bidimensional corresponde la celda i. esto es que el caracter ubicado en la
celda i especicara el valor de ( (i) . (donde el simbolo ( denota la biyeccion
de Cantor). Desafortunadamente esto es imposible dado que esto impli-
caria usar un alfabeto innito. Nosotros nos contentaremos con mucho
menos, usaremos un alfabeto tal que, dada i una celda unidimensional,
el caracter ubicado en i en cualquier instante de la computacion especi-
ca la direccion asumida por la curva de Cantor al visitar la celda ( (i) .
Sea '
+
= (Q
+
.
+
. c
0
. 1. c
+
. ) la maquina con 4 cintas unidimensionales
denida por:
Q
+
= Q' c
+
: c Q ' c
++
: c Q ' c
+++
: c Q
5.3 Maquinas multidimensionales lv

+
= |. . `. ` ' 1 .
A la funcion c
+
no la deniremos explicitamente, a cambio mostraremos
como la maquina
1
simula una transicion de la maquina . Consider-
aremos uno de 20 casos posibles. Considere la transicion

c.

a
0n
a
In
a
nn
.
.
.
.
.
.
.
.
.
a
0,
a
I,
a
n,
.
.
.
.
.
.
.
.
.
a
00
a
I0
a
n0

. (i. ,)

j.

a
0n
a
In
a
nn
.
.
.
.
.
.
.
.
.
a
0,
/
I,
a
n,
.
.
.
.
.
.
.
.
.
a
00
a
I0
a
n0

. (i. , + 1)

Supondremos que i. , = 0 y que i +, es un numero par. La maquina


1
simula esta transicion por medio de la siguiente secuencia de transiciones

c. (a
00
. |) (a
01
. `) (a
10
. ) ... (a
I,
. `) ... (a
nn
. `) . (
1
(i. ,) . c. 0

j
+
. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(i 1. , + 1) . 1. 1

j
+
. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(i 2. , + 2) . 11. 2

j
+
. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(i i. , +i) . 1
I
. i

j
++
. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(0. , +i + 1) . 1
I
. i

j
+++
. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(1. , +i) . 1
I1
. i 1

j
+++
. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(i. , + 1) . c. 0

j. (a
00
. |) (a
01
. `) (a
10
. ) ... (/
I,
. `) ... (a
nn
. `) . (
1
(i. , + 1) . c. 0

Note que, en nuestro caso particular, la segunda cinta se utiliza para


contar el numero de caracteres del tipo (a. `), esto es la maquina
1
cuenta el numero de echas del tipo ` agregando un 1 al contenido de la
segunda cinta cada vez que encuentra una tal echa. El conteo de estas
echas se realiza mientras la maquina esta en el estado j
+
. Este conteo
para cuando la maquina se encuentra con un caracter del tipo (a. |) . en
este instante la maquina pasa al estado j
++
. En la siguiente transicion la
maquina se encuentra por primera vez un caracter del tipo (a. `) . lo cual
la obliga a pasar al estado j
+++
y en consecuencia a iniciar el conteo de este
tipo de caracteres (i.e. a iniciar el conteo de echas del tipo `). El conteo
lvi 5. Una introduccion a la complejidad computacional
lo realiza borrando un uno (el ultimo caracter) al contenido de la segunda
cinta cada vez que se encuentra con una echa `. La maquina termina
esta tercera fase al borrar completamente el contenido de la segunda cinta,
entonces pasa al estado j y se prepara para iniciar la simulacion de la
siguiente transicion de .
Note que la simulacion de una unica transicion del computo de en
el input r. implica realizar a lo mas T
'
([r[) transiciones, por lo que el
tiempo de computo de
1
satisface la desigualdad T
'1
(:) _ (T
'
(:))
2
.
Ahora, dado que la maquina
1
es una maquina con dos cintas, el teorema
48 garantiza que existe una maquina
+
de una sola cinta que puede
simular el computo de
1
y tal que dado r un input de
1
se tiene
que T
'
(r) _ 2 (T
'1
(r) +[r[ + 4)
2
. Tenemos nalmente que existe una
maquina
+
de una sola cinta que puede simular el computo de de
manera que para todo : N se satisface la desigualdad
T
'
(:) _ 2

T
'
(:)
2
+: + 4

2
5.3.1 Una cota inferior
En esta seccion probaremos que toda maquina de Turing con una unica
cinta bidimensional que acepte 1a| tiene un tiempo de computo

n
2
log(n)

.
El argumento es una adaptacion del argumento via secuencias de cruce
usado en el caso unidimensional. Dada una maquina bidimensional
que acepta 1a|. asumiremos que el input esta ubicado en la primera la,
escrito de izquierda a derecha y con su primer caracter ubicado en el origen.
Lo primero que debemos hacer para adaptar el argumento es adaptar la
nocion de secuencia de cruce al caso bidimensional. Suponga que es
una maquina de Turing bidimensional que acepta 1a|, suponga que r es
un input de de longitud : y suponga que i _ :. La secuencia de cruce
C
'
I
(r) es una secuencia de parejas ordenadas, donde cada pareja esta
constituida por un estado de y por un numero natural. Cada pareja en
la secuencia C
'
I
(r) contiene informacion acerca de el estado en que estaba
la maquina al cruzar la linea que separa las columnas i-esima e i +1-esima,
ademas de la columna usada al realizar este cruce. Adicionalmente pedimos
que exista una correspondencia entre la secuencia ordenada de parejas de
C
'
I
(r) y la secuencia ordenada de ocasiones en que la cabeza lectora cruzo
tal linea.
En lo que sigue jaremos una maquina bidimensional que acepta 1a|.
Los dos lemas a continuacion son la version bidimensional de los dos hechos
claves usados en la prueba del teorema de Hennie (45).
5.3 Maquinas multidimensionales lvii
Lema 54 Suponga que acepta n y rn. suponga ademas que [r[ = i,
[n[ = , y que C
'
I
(rn) = C
'
,
(n) Tenemos entonces que acepta la
palabra r.
Dada r
+
el simbolo n(r) denotara el palindromo r0
|r|
r. Dado
: _ 1. el simbolo 1
n
denotara el conjunto n(r) : [r[ = : .
Lema 55 Dadas r = n dos palabras de longitud :. y dados i. , :. .... 2:
se tiene que C
'
I
(r) = C
'
,
(n) .
De los lemas anteriores es facil obtener la prueba del siguiente teorema
Teorema 56 Si es una maquina bidimensional que acepta 1a|. el tiempo
de computo de es

n
2
log(n)

.
Proof. El numero de posibles secuencias de cruce de longitud | y que
corresponden a computaciones de de duracion acotada por :
2
esta aco-
tado superiormente por

[Q[ :
2

l
. donde [Q[ es el numero de estados de la
maquina . Dado que 1
n
tiene exactamente 2
n
elementos que determi-
nan :2
n
secuencias de cruce distintas dos a dos, se tiene que si | es una
cota en la longitud de las secuencias de cruce determinadas por elementos
de 1
n
. entonces

[Q[ :
2

l
_ 2
n
; y esto implica que
| _ log
|O|n
2 2
n
=
:
2 log (:) + log ([Q[)
De ello se tiene que existe n
n
1
n
tal que n
n
determina : secuencias
de cruce de longitud

n
log(n)

y esto claramente implica que el tiempo de


computo de es

n
2
log(n)

. dado que el tiempo de computo de en el


input n
n
es mayor o igual que la suma de las longitudes de las secuencias
de cruce determinadas por n
n
. y esta cantidad es al menos
n
2
log(n)
(recuerde
que [n
n
[ = 3:)
Comentario 57 Note que el argumento usado en la prueba anterior puede
ser facilmente adpatado al caso /-dimensional (con / _ 3).
Ejercicios
1. Prueba los dos lemas que, en esta seccion, se enunciaron y no se
probaron.
2. Dena de manera detallada el concepto de maquina de Turing /-
dimensional.
3. Establezca cotas inferiores para el reconocimiento de palindromos
usando maquinas de Turing con una sola cinta de /-dimensiones
(maquinas /-dimensionales).
lviii 5. Una introduccion a la complejidad computacional
5.3.2 Una cota superior
En esta seccion probaremos que existe una maquina de Turing bidimen-
sional que reconoce 1a| en tiempo O

n
2
log(n)

. Note que esta cota superior,


junto con la cota inferior de la seccion anterior, implica que una maquina
de Turing bidimensional que resuelva 1a| de manera optima (optima en
terminos del tiempo de computo), tiene un tiempo de computo O

n
2
log(n)

.
A continuacion presentaremos un algoritmo bidimensional (esto es, una
maquina de Turing bidimensional) que resuelve el problema 1a| en tiempo
O

n
2
log(n)

.
La idea del algoritmo es la siguiente. Supondremos que el vocabulario es
0. 1 . Dado r una instancia de 1a|. partimos a r en bloques de longitud n.
Interpretamos cada bloque como un numero en el intervalo 0. .... 2
u
1 .
Dado un bloque a la izquierda de r. si el contenido del bloque es el
numero :. marcamos la la :-esima. Revisamos el bloque a la derecha
de r que corresponde al bloque . llamemos
+
a este bloque. Leemos
el contenido de
+
de derecha a izquierda y lo interpretamos como un
numero, digamos :. Marcamos la columna :. si marcamos dos veces la
misma columna, los bloques y
+
son apropiados el uno para el otro.
Realizamos este trabajo para cada uno de los bloques que constituyen el
input r. Note que para comparar dos bloques es suciente recorrer la
primera la de la cinta 2 veces. Esto implica que el numero de veces que
debemos recorrer el input es O

n
u

. Si escogemos el n de manera adecuada,


obtendremos la cota superior que estamos intentando establecer.
A continuacion presentaremos una descripcion detallada del algoritmo.
Asumiremos que la cinta de la maquina tiene un marcador en el origen.
Adicionalemente asumiremos que el input esta escrito en la primera la
empezando en la celda justo a la derecha del origen.
Algoritmo 58 (Algoritmo bidimensional)
Sea r una instancia de 1a| de longitud :.
1. (fase de inicializacion)
Calcule log (:)| y escriba el resultado en unario en la segunda
la, utilice ceros para tal n. (Es posible calcular log (:) en
tiempo O(:log (:)) de la siguiente manera: Recorra el input
marcando posiciones alternativamente, es decir una si una no
una si..... Repita el proceso hasta que todas las posiciones esten
marcadas. El numero de iteraciones es igual a log (:)| + 1)
Calcule log (log (:)) y escriba el resultado en unario en la tercera
la, utilice ceros para tal n.
5.3 Maquinas multidimensionales lix
Calcule n = log (:) log (log (:)) . Borre los contenidos de la
segunda y tercera la. Escriba n en unario en la segunda la,
utilice ceros para tal n.
2. (Comparacion de bloques)
Empezando con la segunda la que contiene la palabra 0
u
copie
repetidamente el contenido de la la actual en la la que queda
justo arriba y al contenido de esta nueva la sumele 1. Pare
cuando escriba en alguna la la palabra 1
u
. Al nalizar este
proceso la maquina ha escrito todos los numeros entre 0 y 2
u
1.
en orden ascendente, utilizando el extremos izquierdo de las las
2. 3. .... 2
u
.
lea el primer caracter de r. Suponga que este caracter es igual
a r
1
. Recorra la primera columna entre las las 2 y 2
u
. En
cada celda verique si el caracter es igual a r
1
. si es el caso
reemplaze el contenido de la celda por el simbolo | . En caso
contrario reemplaze el contenido de la celda por el simbolo | .
Repita este proceso para todas las columnas entre la primera y
la n-esima.
Lea los contenidos de las las 2 a 2
u
. Si una de estas las
contiene un simbolo |. reemplaze el contenido de esta la por
#
u
. Al nalizar el proceso una unica la contiene la palabra |
u
mientras que todas las demas contienen la palabra #
u
. Note que
con esto hemos marcado la la que correponde al contenido del
primer bloque.
Repita el proceso con el bloque del extremo derecho, pero en esta
ocasion, lea el contenido del bloque de derecha a izquierda y es-
criba de derecha a izquierda. Verique que la la marcada para
el primer y ultimo bloque coinciden. Si no es el caso, pare y
rechaze a r. En caso contrario continue. Repita el proceso
con el segundo bloque a la izquierda y el segundo bloque a la
derecha. Continue despues con los bloques subsiguientes hasta
que el par de bloques que usted esta trabajando se intersecten.
Cuando esto suceda, verique que el fragmento restante (el frag-
mento obtenido al suprimir de r los bloques ya analizados) es un
palindromo. Note que este fragmento tiene una longitud acotada
por 2n _ 2 log (:) . Para vericar que el bloque restante es un
palindromo podemos usar el algoritmo estandard para maquinas
unidimensionales, lo cual requiere un tiempo de computo acotado
por log (:)
2
.
Es facil vericar que el tiempo de computo del algoritmo anterior es
O

n
2
log(n)

.
lx 5. Una introduccion a la complejidad computacional
Ejercicio 59 Pruebe que el tiempo de computo del algoritmo es O

n
2
log(n)

.
5.4 Otros modelos: la tesis de Church fuerte
El lector debe notar que todos los modelos de computacion introducidos
hasta el momento poseen la siguiente caracteristica: todos pueden ser sim-
ulados en tiempo polinomial por maquinas de Turing de una sola cinta
unidimensional. Es importante anotar que esta caracteristica no es una
mera casualidad y quer los modelos presentados en este libro no fueron
escogidos convenientemente para que se presentara este fenomeno. Este es
un fenomeno muy general: de casi cualquier tipo de maquina se ha logrado
mostrar que pueden ser simuladas en tiempo polinomial por maquinas de
Turing de una sola cinta. Lo anterior motiva y justica el enunciado de la
siguiente version fuerte de la tesis de Church.
Hipotesis 60 (Tesis de Church fuerte)
Todo modelo de computacion puede ser simulado en tiempo polinomial
usando maquinas de Turing de una sola cinta.
En esta, la ultima seccion del capitulo estudiaremos dos modelos de com-
putacion que podrian ser contraejemplos a la tesis anterior, ellos son: las
Maquinas de Turing probabilisticas y las Maquinas cuanticas
5.4.1 Maquinas de Turing probabilisticas
Una maquina de Turing probabilistica es una maquina de Turing de una
sola cinta equipada con un generador de bits aleatorios.
Denicin 61 Una maquina de Truing probabilistica es una sextupla
=(Q. c
0
. . 1. . . c) tal que
1. c
0
Q es el estado inicial de la maquina.
2. es el alfabeto de la maquina, del cual supondremos que ' _ .
3. _ 1 Q. donde es el conjunto de los estados de aceptacion y
1 es el conjunto de los estados nales.
4. c es una funcion de Q 0. 1 en Q . . .
Dada una maquina de Turing probabilistica, supondremos que en
toda computacion y antes de cada transicion la maquina genera un bit
aleatorio a 0. 1 . Generado el bit a la maquina lee el caracter escrito en
la celda que esta siendo escaneada, y entonces decide: que estado asdumir,
que caracter escribir y en que direccion moverse. Supondremos ademas
que cada maquina determina una distribucion de probabilidad en el
5.4 Otros modelos: la tesis de Church fuerte lxi
conjunto 0. 1 . esto es para cada maquina de Turing probabilistica
existe j [0. 1] tal que el generador de bits aleatorios de genera, en
cada transicion, un 1 con probabilidad j y un 0 con probabilidad 1 j.
Una maquina de Turing probabilistica es una maquina de Turing no de-
terministica. Esto implica que dado un input r. la maquina puede realizar
muchos computos distintos con el input r dependiendo de la secuencias de
bits aleatorios generados durante la computacion.
Dado
+
una secuencia legal para es una secuencia o 0. 1
+
para
la cual existe una computacion de con input . cuyo tiempo de computo
es [o[ . y tal que la secuencia de bits generados durante esta computacion es
precisamente la secuencia o. Sea () =

o 0. 1
+
: o es legal para

.
Una maquina es buena si y solo si para todo input

c.(u)
Pr [o] = 1
Intuitivamente una maquina es buena si y solo si para todo input .
la maquina para al procesar con probabilidad 1. Por otro lado diremos
que es una maquina standard si y solo si antes de terminar la computa-
cion la maquina debe: llegar al extremo derecho del contenido de la cinta,
recorrer la cinta de derecha a izquierda sin cambiar de estado, llegar al ex-
tremo izquierdo y entonces si parar. Dada una maquina probabilistica
supondremos que es buena y standard.
Denicin 62 1. Dado
+
se dene
() = Pr
c.(u)
[la o-computacion de con input es aceptante]
2. Diremos que reconoce 1 con error - si y solo si para todo
+
se tiene que
Si 1 entonces () _ 1 -.
Si 1 entonces () _ -.
3. Dado
+
se dene T
'
() =

c.(u)
Pr [o] [o[
4. Dado : N se dene T
'
(:) = max
u:|u|=n

T
'
()

.
Comentario 63 Dado que las maquinas probabilisticas son no determinis-
ticas, dada una tal maquina y dado un input de , tiene mas sentido
hablar del tiempo de computo esperado de con input que del tiempo
de computo con input . Note que en el item 3 de la denicion ante-
rior hemos denido T
'
() como el valor esperado de la variable aleatoria
tiempo de computo. Es natural que en el contexto de las maquinas prob-
abilisticas denamos las cantidades de interes como valores esperados de
lxii 5. Una introduccion a la complejidad computacional
variables aleatorias adecuadas y no como cantidades deterministicas, i.e.
como cantidades asociadas a variables deterministicas.
El objetivo de esta seccion es establecer las siguientes cotas
(cota superior) Existe una maquina de Turing probabilistica que
reconoce 1a| con error
1
5
y tal que T
'
(:) O

:log
2
(:)

.
(cota inferior) Si es una maquina de Turing probabilistica que
reconoce el lenguaje 1a| con error -

0.
1
2

. se tiene que existe


c 0 tal que T
'
(:) _ c:log (:) .
Para el caso de maquinas probabilisticas las cotas inferior y superior
no son ajustadas dado que existe un gap (una brecha) entre :log (:) y
:log
2
(:). Aun asi es importante anotar que en el trabajo [11] se referencia
un resultado no publicado de Pippenger, quien supuestamente diseo un
algoritmo probabilistico (o, lo que es lo mismo, una maquina de Turing
probabilistica) que reconoce 1a| con error
1
3
y en tiempo O(:log (:)) .
La cota superior: el algoritmo de Freivald
En esta seccion presentaremos el algoritmo clasico de Freivald [3] que re-
conoce 1a| en tiempo O

:log
2
(:)

con error
1
5
. Los algoritmos prob-
abilisticos tiene una larga historia dentro de la teoria de la computacion,
ellos presentan desventajas respecto a los algoritmos clasicos(deterministas)
dado que pueden cometer errores, pero poseen tambien una gran ventaja:
suelen ser mas ecientes. Existe una larga lista de algoritmos probabilis-
ticos que son mas ecientes que todos los algoritmos clasicos conocidos
(obviamente, que resuelven el mismo problema). Una pequeisima lista
parcial es la siguiente:
1. El algoritmo de Schwartz-Zippel (consulte la referencia [8]) para de-
terminar si un polinomio en varias variables es no nulo sobre un campo
nito dado.
2. El algoritmo de Freivalds para multiplicar matrices [3].
3. El algoritmo de Freivalds para reconocer 1a| [3]
Es importante anotar que todo algoritmo probabilistico puede ser con-
vertido en un algoritmo clasico, aunque ello puede implicar un alto costo:
el tiempo de computo del algoritmo clasico podria ser exponencial en el
tiempo de computo del algoritmo probabilistico.
empezemos recordando dos desigualdades fundamentales de la teoria de
la probabilidad, a saber: La desigualdad de Markov y La desigualdad de
Chebyshev.
5.4 Otros modelos: la tesis de Church fuerte lxiii
Teorema 64 (desigualdad de Markov)
Si A es una variable aletoria positiva y 1 [A] es su valor esperado, se
tiene que para todo a R
+
Pr [A _ a] _
1 [A]
a
Teorema 65 (desigualdad de Chebyshev)
Dada A una varible aleatoria, si 1 [A] es su valor esperado y o
2

es su
desviacion standard, se tiene que para todo a R
+
Pr [[A 1 [A][ _ a] _
o
2

a
2
Sea r = r
1
...r
n
una palabra de longitud :. si r no es palindromo existe
i _ : tal que r
I
= r
nI
. Note que, Pr
,<n
[r
,
= r
n,
] _
2
n
. Suponga ahora
que escogemos a numeros en el intervalo 1. .... : . Cual es la probabilidad
de escoger, entre esos a numeros, al menos un numero i tal que r
I
= r
nI
?
Es claro que si existe mas de un i para el cual r
I
= r
nI
. la probabilidad
es mayor. Supongamos que [i _ : : r
I
= r
nI
[ = 2. El valor esperado,
del numero de escogencias aleatorias realizadas, antes de escoger a i o a
: i es log (:) . Supongamos entonces que escogemos a log (:) numeros
entre 1 y :. digamos ,
1
. .... ,
o log(n)
cual es la probabilidad de que i o :i
pertenezcan al conjunto

,
1
. .... ,
o log(n)

?. Note que, si A es la variable


aleatoria: numero de escogencias realizadas antes de escoger por primera
vez a i o a : i. La desigualdad de Markov nos dice que
Pr

i

,
1
. .... ,
o log(n)

y ,

,
1
. .... ,
o log(n)

=
Pr [A _ a log (:)] _
1
a
Por lo que
Pr

i

,
1
. .... ,
o log(n)

o ,

,
1
. .... ,
o log(n)

_
a 1
a
Suponga ahora que nosotros recorremos la palabra r y a cada posicion la
marcamos con probabilidad
b log(n)
n
(con probabilidad 1
b log(n)
n
no mar-
camos la posicion). Sea 1 la variable aleatoria: numero de posiciones mar-
cadas al nalizar el recorrido. Cual es el valor esperado de 1 ? Cual es
la desviacion standard de 1 ? cual es la probabilidad de que el numero de
posiciones marcadas pertenezca al intervalo (/ c) log (:) . .... (/ +c) log (:)?
1. 1 [1 ] =

I<n
b log(n)
n
= / log (:) .
2. o
2
Y
= 1

1
2

1 [1 ]
2
= :

b log(n)
n

b log(n)
n

=
:

nb log(n)b
2
log
2
(n)
n
2

= / log (:)
b
2
log
2
(n)
n
lxiv 5. Una introduccion a la complejidad computacional
3. La desigualdad de Chebyshev nos dice que
Pr [1 (/ c) log (:) . .... (/ +c) log (:)] _
Pr [[1 1 [1 ][ _ c log (:)] _
/ log (:)
b
2
log
2
(n)
n
c
2
log
2
(:)
_
/
c
2
De todo lo anterior tenemos que: si recorremos la palabra r, y marcamos
cada posicion con probabilidad
10 log(n)
n
. con probabilidad al menos
10
25
el
numero de posiciones marcadas pertenecera al intervalo
(5) log (:) . .... (15) log (:)
y esto a su vez implica que la probabilidad de que la posicion i sea una de las
posiciones marcadas es al menos
4
5
. Considere el siguiente procedimiento
Con input r = r
1
...r
n
1. Para cada , 1. .... :, decida si marca o no la posicion ,. Para ello
arroje una moneda tal que Pr [cara] =
10 log(n)
n
. Si sale cara marque
la posicion, en caso contrario no la marque.
2. Sea i
1
. .... i
|
el conjunto de las posiciones marcadas. Para todo
, _ / decida si r
Ij
= r
nIj
. Si este es el caso acepte r. en caso
contrario, esto es si existe , _ / tal que r
Ij
= r
nIj
rechaze r.
Note que
1. Si r 1a| el procedimiento acepta r con probabilidad 1.
2. Si r 1a|. el procedimiento rechaza r con probabilidad
4
5
3. El valor esperado del numero de posiciones marcadas es 10 log (:) .
Intuitivamente, el procedimento anterior toma un input r. el cual es una
palabra de longitud :. probabilisticamente transforma r en una palabra
corta, llamemosla . (de longitud 10 log (:)) y entonces decide si . 1a|.
Dado que el tiempo de computo de un algoritmo que reconoce 1a|. al
procesar el input r. depende de [r[ . el transformar el input r en una palabra
corta . puede reducir el tiempo de computo de manera signicativa. El
problema es: como implementar el algoritmo anterior en una maquina de
Turing de una sola cinta?
Considere el siguiente problema
Problema 66 (Calculo del caracter dual)
Input: r. donde r es una palabra en el vocabulario ' 1 tal
que existe un unico i _ [r[ para el cual r
I
1.
5.4 Otros modelos: la tesis de Church fuerte lxv
Problema: Decida si
1
(r
I
) = r
nI
. donde para todo a se tiene
que
1
(a. 1) = a.
Note que si podemos resolver el problema anterior en tiempo O

:log
2
(:)

usando una maquina de una sola cinta, podemos entonces disear una
maquina de Turing probabilistica que decide 1a| y tal que para todo
: _ 1 se tiene que T
'
(:) O

:log
2
(:)

. Esto es asi dado que en la


primera fase del procedimento anteriormente expuesto se escogen y mar-
can O(log (:)) posiciones, y lo que resta entonces por hacer es resolver
el problema Calculo del caracter dual para cada una de estas O(log (:))
posiciones.
Ejercicio 67 Disee una maquina de Turing de una sola cinta, que lla-
maremos 1na| y que resuelve, en tiempo O(:log (:)) . el problema: Calculo
del caracter dual.
Hecho lo anterior estamos listos para describir el algoritmo de Freivalds.
Algoritmo 68 (Algoritmo de Freivald)
con input r
1. Calcule [r[ y log([r[) .
2. Use un generador de bits aleatorios tal que la probabilidad de generar
un 1 es igual a
log(|r|)
|r|
. Para cada posicion i _ [r[ . decida si marca
la posicion i o no. Use el generador aleatorio, si este genera un 1
marque la posicion en caso contrario no la marque.
3. Sea i
1
. .... i
|
el conjunto de las posiciones marcadas. Para todo
, _ / decida, simulando la maquina 1na|. si r
Ij
= r
nIj
. Si este
es el caso acepte r. en caso contrario, esto es si existe , _ / tal que
r
Ij
= r
nIj
. rechaze r.
Sea la maquina de Turing probabilistica que implementa el algoritmo
anterior. Es facil convencerse de lo siguiente:
1. T
'
(:) O

:log
2
(:)

.
2. Si r 1a| la maquina acepta r con probabilidad 1.
3. Si r 1a|. la maquina rechaza r con probabilidad
4
5
Ejercicio 69 Verique lo anterior.
La cota inferior
En esta seccion probaremos la cota inferior, el argumento en la prueba es
una adaptacion al contexto probabilista del argumento via secuencias de
cruce.
Sea una maquina probabilistica y sea un input de .
lxvi 5. Una introduccion a la complejidad computacional
Denicin 70 Dado o () . el simbolo o [. o. ,] denotara la secuencia
ordenada de los estados asumidos por al cruzar la linea que separa las
celdas i-esima e i + 1-esima, mientras realiza la computacion determinada
por y por o.
Dada o [. o. ,] una secuencia de cruce el simbolo [o [. o. ,][ denotara su
longitud, la longitud esperada(promedio) de las secuencias de cruce deter-
minadas por se dene naturalmente como
| (. ,) =

c.(u)
Pr [o] [o [. o. ,][
Lema 71 Para todo se tiene que T
'
() _

,<|u|
| (. ,).
Proof. Dada o () se tiene que [o[ _

,<|u|
[o [. o. ,][ . De ello se
tiene que
T
'
() =

c.(u)
Pr [o] [o[ _

c.(u)
Pr [o]

,<|u|
[o [. o. ,][

,<|u|


c.(u)
Pr [o] [o [. o. ,][

=

,<|u|
| (. ,)
Suponga que en algun momento del computo la maquina esta en el
estado c. con la cabeza lectora pasando en ese instante de la celda , a la
celda , +1. y que el contenido de la cinta de la celda , +1 en adelante es la
palabra n seguida de espacios en blanco. Dados .
+
y j Q se dene
o (c. n. j. .) como la probabilidad de que, cuando la cabeza de la maquina
cruce nuevamente la linea que separa las celdas ,-esima y , +1-esima (esta
vez pasando de la celda , + 1 a la celda ,), se encuentre en el estado j
y con el contenido de la cinta, de la celda , + 1 en adelante, siendo igual a
la palabra . seguida de espacios en blanco.
Denicin 72 Dado / _ 1 y dado n
+
la /-esima signatura izquierda
de n es la tupla

G
|
(n. :
1
. t
1
. .... :
|
. t
|
) : :
1
. t
1
. .... :
|
Q1 y t
|
1

,
donde
G
|
(n. :
1
. t
1
. .... :
|
. t
|
) =

:1,...,:
k

o (:
1
. n. t
1
. .
1
) o (:
2
. .
1
. t
2
. .
2
) ...o (:
|
. .
|1
. t
|
. .
|
)
Comentario 73 Dado que 0 _

,:
o (c. n. j. .) _ 1 se sigue que
0 _ G
|
(n. :
1
. t
1
. .... :
|
. t
|
) _ 1
5.4 Otros modelos: la tesis de Church fuerte lxvii
Supongamos ahora que la cabeza de la maquina esta pasando de la celda
, + 1 a la celda ,. con la maquina en el estado c y con el contendio de la
cinta, a la izquierda de la celda , +1. siendo igual a la palabra n. Se dene
/(c. n. j. .) como la probabilidad de que cuando la cabeza de la maquina
pase nuevamente sobre la linea separando las celdas ,-esima y , + 1-esima
(llendo esta vez de , a , + 1) lo haga estando en el estado j y con el
contenido de la cinta, a la izquierda de la celda , + 1. siendo igual a ..
Sea /
0
(n. j. .) la probabilidad de que si visita desde la derecha el
extremo izquierdo de n. estando en el estado c
0
. cruce por primera vez el
extremo derecho de r, digamos la linea que separa la celda : y la celda
: + 1. estando en el estado j y con el contenido de la cinta, a la izquierda
de : + 1. siendo igual a ..
Denicin 74 Dado / _ 1 y dado n
+
la /-esima signatura derecha de
n es la tupla

H
|
(n. :
1
. t
1
. .... t
|1
. :
|
) : :
1
. t
1
. .... t
|1
. :
|
Q1

, donde
H
|
(n. :
1
. t
1
. .... t
|1
. :
|
) =

:1,...,:
k

/
0
(n. :
1
. .
1
) /(t
1
. .
1
. :
2
. .
2
) .../(t
|1
. .
|1
. :
|
. .
|
)
Es facil vericar que
0 H
|
(n. :
1
. t
1
. .... :
|
. t
|
) 1
Para nalizar deniremos la nocion de patron
Denicin 75 Dado / _ 1 y dado n
+
el /-esimo patron de n es la tu-
pla

1
|
G
I
(n. :
1
. t
1
. ...:
|
. t
|
)| : 1 _ i _ / y :
1
. t
1
. ...:
I
. t
I1
Q1 y t
|
1

,
donde 1
|
es igual a (r)
|
3
y r = [Q[ 1.
Lema 76 El numero de distintos /-patrones es a lo mas exp

4/
3
r
2|
ln(r)

.
Proof. Dado que 0 _ G
I
(n. :
1
. t
1
. ...:
I
. t
I
. :
|
) _ 1. las entradas de un /-
patron son numeros enteros en el intervalo 0. .... 1
|
. Por otro lado cada
/-patron es un vector con

I<|
2 (r 1)
2I1
entradas. Tenemos entonces
que el numero de /-patrones esta acotado por
(1
|
+ 1)
P
ik
2(:1)
2i1
_

r
|
3
+ 1

2:
2k
_ exp

4/
3
r
2|
ln(r)

en adelante diremos que una secuencia de estados :


1
. t
1
. ...:
|
. t
|
es legal
si y solo si :
1
. t
1
. ...:
|
Q 1 y t
|
1. Sea = rn un input de , sea
1 un conjunto de secuencias legales y sea G(. [r[ . 1) la probabilidad de
que la secuencia de cruce de , con input . en la posicion [r[ ; pertenezca
lxviii 5. Una introduccion a la complejidad computacional
a 1. Es facil vericar que
G(. [r[ . 1) =

|`1


s1,|1,...s
k
,|
k
1
H
|
(r. :
1
. t
1
. ...:
|
) G
|
(n. :
1
. t
1
. ...:
|
. t
|
)

Lema 77 Dadas r. n. n
+
y dados d. : _ 1 se tiene que: si | (rn. [r[) _
d y las palabras n y n tienen el mismo :d-patron, entonces
(rn) _

1 r
J
2

(rn) :
1

2r
(n
3
J
3
J
2
nJ)
Proof. Dado que | (rn. [r[) _ d. la probabilidad de que la secuencia de
cruce de , con input rn. y en la posicion [r[ . tenga longitud mayor que
:d esta acotada superiormente por
1
n
. Sea 1
.
el conjunto de secuencias
de cruce de longitud acotada por :d y tales que el ultimo estado de la
secuencia pertenece a . Denimos 1
1
de manera analoga como el con-
junto de las secuencias de cruce de longitud a lo mas :d para las cuales el
ultimo estado de la secuencia pertenece a 1 . Dado que la maquina es
standard se tiene que
G(rn. [r[ . 1
.
) +G(rn. [r[ . 1
.
) _ 1
1
:
Y dado que G(rn. [r[ . 1
.
) _ 1 (rn) se tiene que
G(rn. [r[ . 1
.
) _ (rn)
1
:
[cc.1]
Por otro lado, el lema anterior implica que
G(rn. [r[ . 1
.
) G(rn. [r[ . 1
.
) =

c1
A
H
|c|
(r. o)

G
|c|
(n. o) G
|c|
(n. o)

[cc. 2]
donde H
|c|
(r. o) denota la signatura derecha de r determinada por o y
G
|c|
(.. o) denota la signatura izquierda de . determinada por o.
Tenemos entonces que
G(rn. [r[ . 1
.
) G(rn. [r[ . 1
.
) =

c1
A
:c
jj
(u,c)
r
d
2
I
md
H
|c|
(r. o)

G
|c|
(n. o) G
|c|
(n. o)

c1
A
:c
jj
(u,c)`
r
d
2
I
md
H
|c|
(r. o)

G
|c|
(n. o) G
|c|
(n. o)

5.4 Otros modelos: la tesis de Church fuerte lxix


Note que el valor absoluto del primer sumando esta acotado por
[1
o
[
r
J
2
1
nJ
_ 2r
nJ
r
J
2
1
nJ
= 2r
(n
3
J
3
J
2
nJ)
Y note tambien que el valor absoluto del segundo sumando esta acotado
por

c1
A
:c
jj
(u,c)`
r
d
2
I
md
H
|c|
(r. o)
1
1
nJ
_

c1
A
:c
jj
(u,c)`
r
d
2
I
md
H
|c|
(r. o)
1
r
J
2
G
|c|
(n. o) _ G(rn. [r[ . 1
.
)
1
r
J
2
De la ecuacion 2 tenemos que
G(rn. [r[ . 1
.
) G(rn. [r[ . 1
.
) _
2r
(n
3
J
3
J
2
nJ)
r
J
2
G(rn. [r[ . 1
.
) G(rn. [r[ . 1
.
) _

1 r
J
2

G(rn. [r[ . 1
.
) 2r
(n
3
J
3
J
2
nJ)
Finalmente de la desigualdad anterior y de la desigualdad 1 tenemos que
(rn) _ G(rn. [r[ . 1
.
) _

1 r
J
2

(rn)
1
:

2r
(n
3
J
3
J
2
nJ)
Corolario 78 Dadas r. n. n
+
y dado d _ 10. si | (rn. [r[) d,
(rn) _
9
10
y las palabras n y n tiene el mismo 2d-patron, entonces
(rn) _
1
5
.
Lema 79 Ya estamos listos para enunciar y probar el teorema central de
esta subseccion.
Teorema 80 Si es una maquina de Turing probabilistica que reconoce
el lenguaje 1a| con error -

0.
1
2

. existe entonces c 0 tal que para


innitos : se tiene que T
'
(:) _ c:log (:) .
Proof. Supondremos ` =
1
10
(si `

1
10
.
1
2

podemos usar alguna tecnica


standard para amplicar probabilidades). Dado : N denimos el lenguaje
1
n
como
1
n
nn1
n
: n
n

El cual es un subconjunto de 1a|. Mostraremos que para todo i


2: + 1. .... 3: + 1 y para la mayoria de los n
n
. el valor esperado de
la longitud de la secuencia de cruce en i es (log (:)) . lo cual implica que
existe 1
n
tal que T
'
() (:log (:)) .
lxx 5. Una introduccion a la complejidad computacional
Dados :. , N con , _ 4: + 1 denimos
1
n,,
(d) =

1
n
: | (. ,) _ d

Armacion. Para todo 2: + 1 _ , _ 3: + 1 se tiene que [1


n,,
(d)[ _
exp

32d
3
r
4J
ln(r)

.
(prueba de la armacion) Dada 1
n
podemos escribir como
+

++
con [
+
[ = ,. Dado n 1
n
. si = n se tiene que
+
n
++
1a|. Si
la armacion fuera falsa tendriamos que [1
n,,
(d)[ exp

32d
3
r
4J
ln(r)

y
entonces, como consecuencia del lema 76, tendriamos que existen = n dos
palabras en 1
n
tales que n
++
y
++
tienen el mismo 2d-patron. El corolario
anterior implica que (
+
n
++
) _
1
5
contradiciendo el que
+
n
++
1a| y el
que supuestamente reconoce 1a| con error
1
10

1
5
.
Sea d =
log n
10
|. dado : sucientemente grande se tiene que
[1
n
1
n,,
(d)[ _ 2
n
exp

32d
3
r
4J
ln(r)

_
2
n
2
=
[1
n
[
2
Tenemos entonces que para todo 2: + 1 _ , _ 3: + 1

uJn
| (. ,) _
d [1
n
[
2
Por lo que
max
uJn

T
'
()

_
1
[1
n
[

uJn
T
'
() _
1
[1
n
[

uJn

2n+1<,<3n+1
| (. ,) =
1
[1
n
[

2n+1<,<3n+1

uJn
| (. ,)
Y esto implica que
max
uJn

T
'
()

_
1
[1
n
[

2n+1<,<3n+1
d [1
n
[
2
=
d (: + 1)
2
(:log (:))
5.4.2 Maquinas cuanticas
Las maquinas cuanticas son el analogo cuantico de las maquinas de Turing.
Mientras las maquinas de Turing pueden ser consideradas dispositivos cla-
sicos de computo (en el sentido de que su mecanismo esta controlado por
las leyes de la mecanica clasica), las maquinas cuanticas solo pueden ser
consideradas como dispositivos cuanticos de computo, dado que las leyes
que controlan su mecanismo son las leyes de la mecanica cuantica. En
5.5 Ejercicios capitulo 5 lxxi
particular las maquinas cuanticas explotan la posibilidad de superponer
informacion en un estado cuantico, y esto les permite a estas maquinas
realizar una gran cantidad (una cantidad exponencial) de computaciones
simultaneamente en paralelo. Esta habilidad de las maquinas cuanticas ha
permitido desarrollar algoritmos cuanticos (algoritmos que solo pueden ser
efectivamente implementados en maquinas cuanticas) que resuelven proble-
mas aparentemente diciles en tiempo polinomial. El ejemplo mas famoso
es el algoritmo cuantico de Shor [9], el cual permite encontrar la descom-
posicion prima de un entero : en tiempo O

[:[
16

. (donde [:[ denota el


tamao del input : el cual es igual a log (:)). El algoritmo de Shor es
entonces un algoritmo de tiempo polinomial que resuelve el problema de la
factorizacion de enteros. No existe una prueba de tal hecho, pero es una
hipotesis ampliamente aceptada que el problema de la factorizacion entera
no puede ser resuelto clasicamente en tiempo polinomial. Si este fuera el
caso, sucederian dos cosas muy interesantes:
1. La tesis fuerte de church seria falsa.
2. Los protocolos criptogracos del tipo 1o. serian seguros desde el
punto de vista clasico (esto es, no se podrian romper en tiempo poli-
nomial usando algoritmos clasico).
Estudiar el modelo de maquinas cuanticas esta fuera del alcance de este
libro, y preferimos por tanto cerrar en este punto esta brevisima seccion.
5.5 Ejercicios capitulo 5
1. Pruebe todas aquellas armaciones que en este capitulo se presen-
taron sin prueba y que usted considere no evidentes.
2. nose
3. nose
4. nose
5. nose
6. nose
7. no se
lxxii 5. Una introduccion a la complejidad computacional
This is page lxxiii
Printer: Opaque this
6
Aplicaciones
En este el ultimo capitulo de libro estudiaremos algunas aplicaciones. Las
aplicaciones que estudiaremos pertencen a lo que suele llamarse el re-
conocimiento de patrones. Estudiaremos, especicamente, el problema de
listar todos los palindromos que aparecen como subpalabras de una palabra
grande. La palabra grande puede ser una secuencia genomica, las cuales
tipicamente son cadenas constituidas por millones e incluso millardos de
caracteres. El que los inputs tipicos en las aplicaciones (por ejemplo en
Bioinformatica) sean palabras inmensas implica que, cuando intentemos
analizar estas palabras (para por ejemplo decidir si ellas son palindromos,
o para listar todos sus subpalindromos) debemos usar algoritmos tan e-
cientes como sea posible, es por ello que en este capitulo estudiaremos el
algoritmo de Galil de tiempo real y algoritmos paralelos de tiempo sublin-
eal.
6.1 Reconocimiento de patrones: Listado de
palindromos aproximados
El algoritmo de Galil
Algoritmos paralelos
lxxiv 6. Aplicaciones
This is page lxxv
Printer: Opaque this
References
[1] A. Apostolico, D Breslauer, Z. Galil. Parallel Detection of all the Palin-
dromes in a String. Theoretical Computer Science 141(1&2):163-173
(1995)..(cesar-fabian)
[2] T. Biedl, J. Buss, E. Demaine, M. Demaine, M. Hajiaghayi, M. Vinar.
Palindrome Recognition Using a Multidimensional Tape. Theoretical
Computer science 302(1-3): 475-480 (2003).
[3] R. Freivalds. Fast computation by probabilistic Turing machines.
Theory of Algorithms and Programs, Latvian State University 2:201-
205 (1975).
[4] Z. Galil. Palindrome Recognition in Real Time. Journal of Computers
and Systems Sciences 16(2):140-157 (1978). (juan ricardo)
[5] F. Hennie. Crossing Sequences and O-line Turing Machines. FOCS
1965:168-172.
[6] J. Hopcroft, J. Ullman. Introduction to Automata Theory, Languages,
and Computation. Addison-Wesley 1979.
[7] R. Kolpakov, G. Kucherov. Searching for Gapped Palindromes. CPM
2008:18-30. (emilio,sergio)
[8] C. Papadimitriou. Computational Complexity. Addison Wesley,
1994.
lxxvi References
[9] P. Shor. Polynomial-Time Algorithms for Prime Factorization and
Discrete Logarithms on a Quantum Computer. SIAM Journal on.
Computing. 26(5): 1484-1509 (1997).
[10] M. Sipser. Introduction to the Theory of Computation. Course Tech-
nology, 2005.
[11] A. Yao. A Lower Bound for Palindrome Recognition by Probabilis-
tic Turing Machines. Technical report #77-647, Standford University
1977.

You might also like