Sie sind auf Seite 1von 118

I

Introduccin
Este libro deberia poder leerse tanto de la primera a la ultima pagina, como
de la ultima a la primera de las paginas. Desafortunadamente no fue posible
redactar este texto de manera tal que el mismo, en cuanto cadena de caracteres,
resultara ser un palindromo.
El objetivo de este escrito es multiple: estudiaremos, con un cierto nivel
de profundidad, la teoria de automatas y modelos uniformes de computacion;
estudiaremos la nocion de tiempo real, y por ultimo revisaremos, de manera casi
exhaustiva
1
, los trabajos referentes a la complejidad computacional de reconocer
palindromos sobre modelos secuenciales de computacion, haciendo enfasis en la
recognizabiliad en tiempo real de este lenguaje.
Hemos elegido el problema de reconocer palindromos como una drosophila
(leit motiv) que nos permita evaluar y estudiar conceptos, metodos y modelos
propios de la teoria de la computacion y de la teoria de la complejidad computa-
cional.
La complejidad computacional intenta clasicar los problemas algoritmicos
de acuerdo a su dicultad intrinseca, esto es: de acuerdo a la cantidad de recur-
sos computacionales que es necesario emplear para resolverlos. Al analizar un
problema los practicantes de la teoria intentan establecer cotas superiores (tal
cantidad de recursos es suciente) y cotas inferiores (tal cantidad de recursos es
insuciente) que permitan estimar la complejidad intrinseca del problema, tal
estimacion sera posible si las cotas son ajustadas, esto es: si la brecha existente
entre estas cotas es negligible o, en el mejor de los casos, nula.
La historia de la complejidad computacional, en sus casi 40 aos (en el ao
2011 se cumplieron 40 aos de la publicacion del historico articulo de Cook [8] y
la denicion de la clase 1), es la historia de una elusiva busqueda de cotas in-
feriores. Puede conjeturarse que la mayor parte de las cotas superiores obtenidas
hasta el momento son ajustadas y que son nuestras debiles cotas inferiores las
responsables de la gigantesca brecha existente entre las cotas obtenidas hasta
el momento. Son muy pocos los problemas para los cuales, la complejidad com-
putacional puede brindar un clara estimacion-cuanticacion de su complejidad
intrinseca, uno de estos pocos problemas es el reconocimento de palindromos que
denotaremos con el simbolo 1a|.
Sea 1 un problema de decision, diremos que 1 es no trivial si y solo si dada r
una instancia de 1, existen palabras j y . tales que rj es una instancia negativa
de 1 (rj , 1) y r. es una instancia positiva de 1 (r. 1). Intutivamente,
un problema 1 es no trivial si al procesar una instancia r es necesario leer la
palabra r en su totalidad, (cada uno de sus caracteres), antes de poder tomar una
decision. Un problema 1 requiere, como minimo, tiempo real para ser resuelto
sobre un modelo secuencial de computacion.
Dado 1 un problema no trivial y dado /un algoritmo que resuelve 1 diremos
que / es un algoritmo de tiempo real (la nocion de tiempo real fue introducida
1
Desde Poincare, el ultimo de los matematicos en saberlo todo, ya no es posible ser
exhaustivo.
II
hace ya 50 aos por H. Yamada [56]) si y solo si al procesar una instancia r el
algoritmo / emplea [r[ unidades de tiempo (realiza [r[ transiciones). Tiempo
real es una cota inferior para todo problema no trivial (for free). Note que si
jamos un modelo uniforme y secuencial de computacion, digamos (, y logramos
probar la (-computabilidad en tiempo real del problema 1a|, habremos entonces
logrado establecer un par de cotas ajustadas: la cota inferior (tiempo real) y la
cota superior (tiempo real) cazan perfectamente.
El problema 1a| es un modelo de juguete de la stringologia y la complejidad
computacional: para este problema, a diferencia de para la mayoria de problemas
algoritmicos no triviales, las cotas inferiores y superiores sobre (casi) cualquier
modelo uniforme de computacion cazan perfectamente. Esta caracteristica del
problema 1a| nos impulsa a creer que este es un problema particularmente
adecuado en terminos pedagogicos, dado que nos permite recorrer un amplio
espectro de modelos de computacion exhibiendo de manera explicita el objetivo
que quisieramos alcanzar al analizar cualquier problema sobre un modelo de
computacion especico: establecer cotas inferiores y superiores ajustadas.
Hemos hecho referencia en los parrafos anteriores a la nocion de modelo uni-
forme y secuencial de computacion. Los modelos no uniformes (clases de circuitos
[40], redes neuronales articiales) no corresponden a la nocion de algoritmo y
por ello no son interesantes cuando lo que se pretende es analizar un problema
concreto (son interesantes desde el punto de vista estructural, cuando se com-
paran clases no uniformes con clases uniformes). Adicionalnente el problema
1a| es trivial desde el punto de vista no uniforme (1a| C
0
: 1a| puede ser
reconocido usando una familia uniforme de circuitos de profundidad acotada
[47]). En los paragrafos anteriores tambien hemos mencionado el termino mod-
elo no secuencial para referirnos a los modelos de computacion paralela. En
estos ultimos, una red de procesadores cuyo tamao escala con el tamao de
los inputs, se encarga de procesar las intancias del problema. La habilidad que
tienen estas redes de partir el input en pequeos fragmentos, y de analizar estos
fragmentos de manera simultanea usando diferentes procesadores dentro de la
red, permite que algunos problemas no triviales puedan ser resueltos en tiempo
sublineal, e incluso (poly)logaritmico. Aunque puede ser muy interesante analizar
la complejidad paralela de 1a| y sus relativos no lo haremos en detalle en este
escrito. Algunos trabajos importantes en esta area son las referencias [32], [4].
Al nal del texto, hemos incuido a manera de apendice, una breve incursion en
el terrreno de los algoritmos paralelos, aplicados, claro esta, al reconocimiento
de palindromos y problemas relacionados. Por otro lado estudiaremos la com-
plejidad de 1a| desde el punto de vista de los automatas celulares los cuales,
pese a ser considerados modelos de paralelismo masivo, pueden ser entendidos
como modelos secuenciales en los que cada procesador recibe un numero nito
de bits por unidad de tiempo, las seales se transmiten de manera secuencial,
y no existen ni procesadores centrales ni dispositivos de entrada especiales a los
que cada uno de los procesadores en el arreglo puede acceder en una unidad de
tiempo a cualquiera de sus registros: un automata celular es una secuencia de
procesadores (automatas regulares) y no una red de procesadores.
III
El reconocimiento de palindromos es un problema que, pese a su aparente
sencillez, tiene importantes aplicaciones, por ejemplo en algoritmos de compre-
sion de texto (por ejemplo en el algoritmo de Lempel-Ziv [34]) o en clasicacion
de secuencias genomicas [5]. Entendemos que, en terminos de las posibles apli-
caciones, la computacion en paralelo es de vital importancia, aun asi hemos
escogido no estudiar en profundidad este tema en este libro porque el tema cen-
tral del libro es computaciones de tiempo real usando maquinas secuenciales, asi
como el estudio de metodos que permiten probar cotas inferiores (resultados de
imposibilidad) sobre este tipo de modelos. El reconocimiento de palindromos, lo
repetimos, es nuestra drosophila y no el tema central de estas notas.
Organizacion del escrito.
El escrito esta organizado de la siguiente manera, en los primeros capitulos
estudiaremos seis tipos diferentes de automatas: regulares, regulares no deter-
ministicos, regulares de doble via, de pila, de pila no deterministicos y de pila
bidireccionales. Estudiremos la computabilidad, y la computabilidad en tiempo
real, del problema 1a| sobre cada uno de estos modelos. A continuacion intro-
duciremos el modelo de maquinas de Turing de una sola cinta, mostraremos que
este modelo es incapaz de resolver 1a| en tiempo lineal y que (Teorema de Hen-
nie [27]) toda maquina de una sola cinta capaz de resolver 1a| requiere tiempo
cuadratico. En este capitulo tambien introducimos introducimos el modelo de
maquinas de Turing con una sola cinta bidimensional y demostramos una ver-
sion bidimensional del teorema de Hennie (1a| requiere tiempo !
_
n
2
log(n)
_
), adi-
cionalmente exhibimos una maquina de Turing bidimensional (ingeniosamente
diseada) que reconoce el lenguaje de los palindromos en tiempo O
_
n
2
log(n)
_
,
obteniendo con ello cotas ajustadas sobre este modelo de computacion. En este
punto es importante comentar que existe una maquina de Turing unidimensi-
nal que reconoce 1a| en tiempo cuadratico, por lo que podemos armar que
la cota inferior obtenida via el teorema de Hennie es ajustada. A continuacion
introduciremos el modelo de maquinas probabilisticas de una sola cinta, estudi-
amos el algoritmo de Pippenger que permite reconocee palindromos en tiempo
O(:log (:)) , adicionalmente comentamos un teorema de Yao [57] quien prueba
que toda maquina de Turing probabilistica de una sola cinta que reconozca palin-
dromos requiere tiempo !(:log (:)) , obteniendo con ello, una vez mas, un par
de cotas ajustadas.
Cerramos la primera parte de este escrito (maquinas de una sola cinta) estu-
diando algunos modelos no standard de maquinas de una sola cinta: automatas
celulares uni-dimensionales y automatas cuanticos de estado nito.
En la segunda parte del escrito introducimos el modelo de maquinas de Turing
con varias cintas, Modelo en el cual la nocion de tiempo real es particularmente
interesante y robusta, y probamos el teorema de Galil-Slisenko: el lenguaje 1a|
puede ser reconocido en tiempo real usando una maquina de Turing con varias
cintas.
Hemos incluido dos capitulos adicionales, en el primero estudiamos algunos
problemas algoritmicos, relacionados con palindromos, que no son problemas de
reconocimiento: incluimos un problema de conteo, un problema de enumeracion
IV
y uno de optimizacion. Y, para cada uno de estos problemas, exhibimos algorit-
mos de tiempo lineal que los resuelven, (los algoritmos ingenuos para enfrentar
estos problemas son cuadraticos). En el ultimo capitulo estudiamos, de manera
supercial y apelando a la pura intuicion, algunos conceptos y metodos de la
computacion en paralelo, que usamos luego para construir algoritmos de tiempo
sublineal que permiten resolver algunos problemas relacionados con palindromos.
Remark 1. Es importante aclarar en este punto, que hemos decidido incluir a los
automatas de pila dentro de la clase de las maquinas de una sola cinta dado que
la pila con todas sus limitaciones no es una cinta adicional, esto es: un automata
de pila es una maquina con una sola cinta y una pila.
Sobre la importancia de los problemas impertinentes.
El lector puede pensar, al iniciar la lectura de este libro, que el lenguaje de
los palindromos es un lenguaje trivial sin interes practico acerca del cual la teoria
de la computacion tiene muy poco por decir. Una de los objetivos de este escrito
es acabar con este prejuicio.
Una de las razones por las cuales hemos elegido el lenguaje de los palindro-
mos es el rol singular que este ha desempeado dentro de la teoria de lenguajes
formales. El lenguaje de los palindromos ha sido estudiado desde casi todos los
modelos de automatas y maquinas secuenciales porque su equilibrada combina-
cion de simpleza y complejidad le ha permitido ser un elemento fundamental en
la mayoria de las pruebas de separacion entre clases de automatas.
Cuando se quiere probar que un cierto tipo de automata es mas potente
que un segundo tipo de maquinas, es necesario exhibir un lenguaje que pueda
ser reconocido usando el primer tipo de dispositivos pero que no pueda serlo
usando el segundo. Es necesario entonces contar con un candidato para tal n.
El lenguaje de los palindromos siempre sera un candidato a tener en cuenta. El
lenguaje de los palindromos, o alguno de sus relativos, ha desempeado un rol
signicativo en casi todas las pruebas de separacion del tipo antes discutido.
Esta caracteristica del lenguaje 1a| nos permite, sin abandonar nuestro leit
motiv, recorrer casi en su totalidad el amplio espectro de modelos de automatas
introducidos en la literatura hasta el dia de hoy.
Finalmente es importante sealar que el lenguaje de los palindromos es im-
portante en algunas aplicaciones, el juega un papel importante en los algoritmos
de compresion (Lempel-Ziv por ejemplo [34]), y la tarea consistente en recono-
cer palindromos presentes en cadenas largas es una tarea que ha mostrado ser
importante en bioinformatica dado que, entre otras cosas, la presencia de palin-
dromos largos en cadenas de DNA esta asociada al surgimiento de canceres en
humanos [51].
Objetivos y alcances del texto. El texto fue diseado pensando en un
curso introductorio a la teoria de los lenguajes formales y modelos de computa-
cion. Es posible escribir un tal texto desde multiples perspectivas, dependiendo
la eleccion de una tal perspectiva, del area de expertisia de sus autores. Nosotros
como practicantes de la teoria de la complejidad computacional hemos escrito
V
un texto cesgado en esta direccion, es por ello que creemos que el texto puede
ser usado, idealmente, como texto guia en un curso de teoria de la computacion
que anteceda a cursos en Complejidad Computacional, Stringologia y Bioinfor-
matica.
El libro es menos apropiado para ser usado en cursos de teoria de la com-
putacion que antecedan a cursos en teoria de lenguajes de programacion, parsing,
compiladores, linguistica computacional etc.
Por su brevedad el libro puede ser cubierto en un curso de 16 semanas,
creemos que cubrir la totalidad del libro puede brindar al estudiante un panorama
amplio de las ciencias de la computacion.
Agradecimientos. Este libro esta dedicado a Hijodimitriou. Los autores
quisieran agradecer a todos sus estudiantes quienes de una forma u otra hicieron
posible la realizacion de este trabajo. Agradecimientos especiales a Joerg Flum,
Anahi Gajardo, Moritz Mueller, DAAD, DFG, VIE-UIS y Universidad Nacional
de Colombia.
Carolina Mejia, J. Andres Montoya
Bogota, mes ao
VI
Notacion
Usaremos las letras n, , n para denotar palabras (strings) y el simbolo `
para denotar el alfabeto.
Dada n = n
1
...n
n
una palabra, su longitud, denotada por [n[,es igual a :.
La unica palabra de longitud cero es la palabra vacia denotada por c.
Dada n, un factor de n es una palabra de la forma n
I
...n

con i _ , _ :.
Usaremos el simbolo n[i...,] para denotar este factor. Si i = 1 diremos que el
factor es un prejo y si , = : diremos que el factor es un sujo. Si n es un prejo
de n usaremos el simbolo n @ n para denotar este hecho.
Dadas n = n
1
...n
n
y n = n
1
...n
n
el simbolo nn denotara la palabra
n
1
...n
n
n
1
...n
n
a la que llamaremos la concatenacion de n y n.
Proviso. A todo lo largo del libro, a menos que se especique lo contrario,
el simbolo ` denotara el alfabeto 0, 1 . De igual manera, a todo lo largo del
libro (a menos que se especique lo contrario) asumiremos que el alfabeto de la
maquina, o lenguaje, bajo estudio es el alfabeto binario 0, 1 .
Notacion asintotica. Usualmente los simbolos ) y q denotaran funciones
de N 0 en N 0. Estas funciones seran, la mayor parte del tiempo, funciones
de tiempo de computo asociadas a diferentes maquinas y(o) algoritmos. Dadas
), q : N 0 N 0 usaremos el simbolo ) O(q) para indicar que existe
C tal que para todo : _ 1 vale la desigualdad ) (:) _ Cq (:) . Por otro lado,
usaremos el simbolo ) !(q) para indicar que existe C tal que q (:) _ ) (:)
Automatas de estado nito
Iniciaremos nuestro recorrido por el universo de las maquinas de una sola cinta
introduciendo la nocion de automata regular (automata de estado nito).
1 Automatas nitos y lenguajes regulares
Los automatas regulares pueden ser considerados como el modelo uniforme
de computacion de menor poder. Un automata regular / es un quintupla
(Q,
0
, `, 1, c) , donde:
1. Q es un conjunto nito, el conjunto de estados del automata /.
2.
0
Q, es un elemento distinguido de Q que sera llamado el estado inicial
del automata /.
3. ` es un conjunto nito, el alfabeto del automata.
4. 1 _ Q es el conjunto de estado nales o estados de aceptacion del automata
/.
5. c, la funcion de transicion, es una funcion de ` Q en Q.
Dado / un automata regular supondremos que / posee una cinta semi-
innita 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 capacidad 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. Supondremos que al comienzo de la computacion
el input n = n
1
n
2
...n
n
se encuentra ubicado en el extremo izquierdo de la cinta
ocupando los primeros : caracteres. Tambien supondremos que al comienzo de
la computacion la cabeza lectora de la maquina se encuentra ubicada sobre la
primera celda leyendo el caracter n
1
y que el estado de la maquina es el estado
interno inicial
0
. Al comenzar la computacion la cabeza lectora de la maquina
se desplaza a la derecha de celda en celda leyendo cada 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 Q. Si 1, la maquina acepta el input, en caso contrario lo rechaza.
1.1 El lema de bombeo para lenguajes regulares
Empezaremos esta seccion introduciendo la denicion de lenguaje regular
Denition 1. (lenguajes regulares)
VIII
1. 1(/) = n `
+
: / acepta n . 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(/) .
Dada n una palabra, usaremos el simbolo [n[ para denotar la longitud de n.
Exercise 1. Pruebe que el lenguaje
n `
+
: [i _ [n[ : r
I
= 1[ = 1 (mod2)
es un lenguaje regular.
Denition 2. Dada / una maquina y dado 1 un lenguaje diremos que /
reconoce 1 en tiempo real si y solo si el numero de transiciones realizadas por
/ al procesar un input n esta acotado por [n[ .
Note que todo automata regular / reconoce el lenguaje 1(/) en tiempo
real.
Denition 3. Dada n = n
1
...n
n
una palabra, un factor de n es un fragmento
n
I
...n

con 1 _ i _ , _ :. A lo largo del libro usaremos el simbolo n[i...,] para


denotar el factor n
I
...n

de n.
como probar que un lenguaje dado no es regular? El lema de bombeo es una
herramienta poderosa que puede ser usada para tal n.
Theorem 1. (lema de bombeo para lenguajes regulares)
Dado 1 un lenguaje regular, existe 1 N tal que si n 1 y [n[ _ 1, existen
entonces n, , : `
+
para las cuales se satisface lo siguiente
1. r = n:.
2. [[ 0 y [n[ _ 1
3. Para todo : N se tiene que n
n
: 1.
Proof. Sea / = (Q,
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 , j \ (G[/]) y dado a ` existe una arista de a j con etiqueta
a si y solo si c ((a, )) = j.
Note que una computacion de / es simplemente un camino nito en G[/]
con origen en
0
. Note tambien que todo camino nito con origen en
0
es una
computacion de /, y que las computaciones aceptantes estan en corresponden-
cia 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 lema, 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.
IX
1. Fragmento inicial, que va de
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 n 1, si [n[ _ [Q[+1 el camino determinado por n, al que denotaremos
`
u
, puede partirse en tres fragmentos: el inicio, el bucle y el nal. Estos tres
fragmentos corresponden a factores de n, digamos n, y :. Dado : N, el
camino determinado por la palabra n
n
: tiene la siguiente estructura.
1. El inicio es identico al inicio del camino `
u
.
2. El fragmento intermedio corresponde a recorrer : veces el fragmento inter-
medio de `
u
(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 n (o mejor, del camino
determinado por r)
Si n 1 el vertice nal de `
u
pertenece a 1. Note que el vertice nal del
camino `
uu
n
s
es identico al vertice nal del camino `
u
, por lo que la computacion
de / con input n
n
: es tambien una computacion aceptante y esto implica
que n
n
: 1. Note nalmente que es posible tomar n y de tal forma que
[n[ _ 1, esto es asi dado que todo fragmento inicial, del camino `
u
, que tenga
una longitud mayor o igual que [Q[ + 1 debe contener un bucle
A continuacion probaremos que 1a| no es regular.
Corollary 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 n = 1
1+1
01
1+1
. El lema de bombeo arma que existen
palabras n, , y n tales que n = n:, [n[ _ 1 y tales que dado i _ 2 la palabra
n
I
: 1a|. Note que la desigualdad [n[ _ 1 implica que esta totalmente
contenido en el factor izquierdo de n constituido por 1 + 1 unos. Tenemos
entonces que n
I
: = 1
1+]u]I]u]
01
1
que no es un palindromo dado que [[ _ 1 e
i _ 2
Este ultimo resultado es una cota inferior para 1a|. Esto es asi dado que
el resultado en cuestion arma lo siguiente: 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 au-
tomata regular. Note que en la denicion de automata regular hemos impuesto
demasiadas limitaciones al poder de computo de este tipo de dispositivos, algu-
nas de las mas prominentes limitaciones son:
La cabeza lectora puede moverse unicamente en una direccion, esto es de
izquierda a derecha.
X
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) eliminando
una o varias de estas (y otras) limitaciones.
Exercise 2. Sea 1a|
1
el lenguaje de los palindromos marcados denidos por
1a|
1
=
_
nrn
1
: n 0, 1
+
y r es un caracter diferente de 1 y 0
_
Pruebe, sin usar el lema de bombeo, que el lenguaje 1a|
1
no es regular.
2 Automatas regulares no deterministicos
En esta seccion estudiaremos un segundo modelo de computacion, obtenido a
partir del modelo basico, adicionando a este una habilidad: transiciones no de-
terministicas.
Un automata regular no deterministico es un automata / = (Q,
0
, `, 1, c)
para el cual la relacion de transicion c no necesariamente es funcional, esto es: el
automata / esta constituido por un conjunto de estados Q, un estado inicial
0
,
un 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 puedan llegar a ser mas potentes que las deter-
ministicas (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 pregunta: es 1 diferente de 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 (una cantidad exponencial) de computaciones.
Es claro que desde cualquiera de las dos perpectivas anteriores el no-determinismo
aparece como una habilidad adicional (un recurso computacional) que puede (y
debe) incrementar el poder de nuestras maquinas.
Sea / = (Q,
0
, `, 1, c) un automata no deterministico.
Denition 4. Dado n = n
1
...n
n
un input de /, una computacion de / con
input n es una secuencia
0

1
...
n
de elementos de Q tal que para todo i _ : se
tiene que (n
I
,
I1
,
I
) c.
XI
Una computacion es entonces una secuencia nita y ordenada de cong-
uraciones que adicionalemente satisface la siguiente condicion: dos congura-
ciones consecutivas en esta secuencia estan conectadas por una transicion de la
maquina.
La nocion de conguracion depende del modelo de computacion. Intuitiva-
mente, una conguracion es una descripcion completa del estado de la computa-
cion en un instante dado. En el caso de los automatas regulares 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 instante es identico al contenido de la cinta en el
instante 0. Esto implica que el unico parametro que nosotros podriamos descono-
cer 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).
Denition 5. Dado / un automata regular no deterministico y dado n `
+
,
diremos que / acepta n si y solo si existe una computacion de /, con input
n, que termina en un estado de aceptacion.
En esta seccion probaremos que los automatas regulares no deterministicos y
los automatas regulares deterministicos tienen exactamente el mismo poder de
computo.
Theorem 2. Todo automata regular no deterministico puede ser simulado por
un automata regular.
Proof. Sea 1 un lenguaje reconocible mediante un automata regular no deter-
ministico y sea / = (Q,
0
, `, 1, c) un automata no deterministico que reconoce
a 1. Considere el automata regular /
det
=
_
Q
det
,
det
0
, `, 1
det
, c
det
_
denido
por:
1. Q
det
= T (Q) .
2.
det
0
=
0
.
3. 1
det
= Q : 1 ,= ? .
4. La funcion c
det
es denida por
c
det
((a, )) = Q : j ((a, j, ) c = )
Es facil vericar que 1(/) = 1
_
/
det
_
.
El siguiente corolario es una consecuencia inmediata de los dos teoremas
anteriores
Corollary 2. No existe un automata regular no deterministico que pueda re-
conocer el lenguaje 1a|.
Podemos probar que la clase de los lenguajes regulares es cerrado para las
operaciones booleanas, el concepto de automata no deterministico es de gran
utilidad en estas pruebas.
XII
Exercise 3. La clase de los lenguajes regulares es cerrado para las operaciones
booleanas, el concepto de automata no deterministico resulta de gran utilidad al
momento de probar estos hechos. Pruebe que si 1
1
y 1
2
son lenguajes regulares,
entonces los lenguajes
1
1
' 1
2
, 1
1
1
2
y co 1
1
son regulares. Pruebe ademas que los lenguajes
1
1
1
2
= n : n 1
1
1
2
(n = n)
j
1
+
1
= n : :
1
, ...,
n
1
1
(n =
1
...
n
)
tambien son regulares. Dado 1 un lenguaje, el lenguaje 1
+
es llamado la
estrella de Kleene de 1.
3 Automatas regulares de doble via
En esta seccion introduciremos una clase de maquinas aparentemente mas po-
tentes que los automatas regulares, a esta clase de maquinas las llamaremos
automatas regulares de doble via (2-way nite automata). Los automatas regu-
lares 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 natural suponer que este
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 _ [n[ , el caracter i-esimo y el caracter ([n[ i + 1)-esimo coinciden. El
problema es que la maquina posee una memoria nita (uniformemente acotada)
y no puede marcar las celdas visitadas con anterioridad. El teorema principal de
esta seccion arma que los automatas regulares de doble via tienen exactamente
el mismo poder de computo que los automatas regulares (y en consecuencia los
automatas regulares de doble via son incapaces de reconocer el lenguaje 1a|).
Denition 6. Un automata regular de doble via es una sextupla
/ = (Q,
0
, `, 1, , c)
tal que Q es un conjunto nito de estados,
0
Q es el estado inicial, _ 1 Q
y c es una funcion de ` ' Q en Q, .
Dado a ` y Q, si la maquina se encuentra leyendo el caracter a en el
estado y c (a, ) = (, j) , entonces la cabeza de la maquina se desplaza una
posicion a la derecha y el estado interno de la maquina cambia de a j. Por el
contrario si c (a, ) = (, j) , la cabeza de la maquina se mueve una posicion a
XIII
la izquierda. Dado que la cabeza de la maquina podria llegar al extremo derecho
de la cinta y devolverse a la izquierda (o podria no llegar nunca al extremo
derecho), nada nos garantiza que la computacion de la maquina terminara en
algun momento, es por ello que en la denicion de los automatas regulares de
doble via hemos agregado el parametro 1. La idea es que si el estado interno de
la maquina pertenece a 1 la maquina para. En particular, si la maquina accede
a un estado en , la maquina para y acepta el input, mientras que si accede a
un estado en 1 para y rechaza el input.
3.1 El teorema de Myhill-Nerode
El teorema de Myhill-Nerode puede ser entendido como una caracterizacion al-
gebraica de los lenguajes regulares. Caracterizaciones de este tipo siempre son
utiles en Matematicas y como lo veremos mas adelante, podemos usar el teorema
de Myhill-Nerode para probar algunos hechos importantes.
Denition 7. Dado 1 `
+
, podemos denir una relacion de equivalencia sobre
`
+
asociada a 1. La relacion 1
J
_ `
+
`
+
se dene por
r1
J
j si y solo si \n(rn 1 = jn 1)
Theorem 3. (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,


0
, `, 1, c) el automata regular denido por:
Q =
z

1
L
.

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.
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, podemos denir una
funcion
/
: `
+
Q de la siguiente manera:

/
(n) es igual al estado nal al que accede /, al procesar el input n,
empezando en el estado inicial
0
.
Es facil probar que si
/
(r) =
/
(j) entonces r1
J
j. Tenemos entonces
que

1
L

_ [Q[ .
XIV
Prueba de la equivalencia En esta subseccion probaremos que la clase de
los lenguajes regulares coincide con la clase de los lenguajes aceptados por au-
tomatas regulares de doble via, esto es: probaremos que todo automata regular
de doble via puede ser simulado por un automata regular.
Theorem 4. (Rabin-Scott-Sheperdson)
Dado /, un automata regular de doble via, existe un automata regular /
tal que 1(/) = 1
_
/
_
.
Proof. Lo que nosotros probaremos es que dado / = (Q,
0
, `, 1, , c) un au-
tomata regular 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 n `
+
, denimos una funcion
u
/
: Q 0, 1 Q 0, 1, 2 de la
siguiente manera:

1
(
u
/
(, 1)) es igual al estado al que accede /, cuando iniciando en el
estado , y con la cabeza ubicada en la celda 1, procesa el input n. El estado
al que accede el automata es el estado al que llega /o bien cuando para (i.e.

2
(
u
/
(, 1)) = 2) o bien cuando sale por la derecha (i.e.
2
(
u
/
(, 1)) = 1)
o bien cuando sale por la izquierda (i.e.
2
(
u
/
(, 1)) = 0).

1
(
u
/
(, 1)) es igual al estado al que accede /, cuando iniciando en el
estado , y con la cabeza ubicada en la celda [n[ procesa en input n. Nueva-
mente, el estado al que accede el automata es el estado al que llega /
o bien cuando para (i.e.
2
(
u
/
(, 1)) = 2) o bien cuando sale por la
derecha (i.e.
2
(
u
/
(, 1)) = 1) o bien cuando sale por la izquierda (i.e.

2
(
u
/
(, 1)) = 0).
Armacion. Dadas r, j `
+
, se tiene que
r
/
=

/
implica r =
J(/)
j.
Note que si : = [Q[ , la armacion anterior implica entonces que la relacion
de equivalencia =
J(/)
esta constituida por a lo mas (3:)
2n
clases. En este punto
podemos invocar el teorema de Myhill-Nerode para armar que 1(/) es regular.
Corollary 3. Ningun automata regular 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 computacionales
necesarios para reconocer el lenguaje 1a|?
Remark 2. Hemos probado que si / = (Q,
0
, `, 1, , c) es un automata reg-
ular de doble via entonces / es incapaz de reconocer 1a|, aun si la funcion
tiempo de computo de /, que denotaremos con el simbolo t
/
, es no acotada o
no puede ser acotada linealmente. Esto implica, en particular, que los automatas
regulares de doble via son incapaces de reconocer 1a| en tiempo real. El mismo
comentario puede hacerse respecto a los automatas regulares no deterministi-
cos, si introdujeramos la nocion de transicion en vacio podriamos considerar
XV
automatas regulares no deterministicos cuyo tiempo de computo no puede ser
acotado linealmente, como las transiciones en vacio pueden elimininarse [29] es-
tos automatas no son mas poderosos que los automatas regulares y por lo tanto
son incapaces de reconocer 1a|, i.e. los automatas regulares no deterministicos
no pueden reconocer 1a| ni en tiempo real ni en algun otro regimen temporal.
4 Taller comprension de lectura: expresiones regulares
Sea 1 un lenguaje regular, el lenguaje 1 puede ser descrito de muchas y diferentes
maneras. Dado / un automata nito que reconoce 1 este automata es una
descripcion de 1. Recuerde que 1 = n : / acepta n .
Los lenguajes regulares tambien pueden ser descritos por expresiones reg-
ulares, las cuales denimos a continuacion. Para empezar jamos un alfabeto
nito, digamos `. En lo que sigue solo consideraremos, a menos que se especi-
que la contrario, lenguajes regulares sobre el alfabeto `.
Denition 8. (Expresiones regulares)
La denicion que presentamos a continuacion es una denicion recursiva
1. c es una expresion regular.
2. Si a ` entonces a es una expresion regular. Diremos que tanto c como a
son expresiones basicas
3. Si n
1
, n
2
son expresiones regulares, entonces (n
1
' n
2
), (n
1
n
2
) y (n
1
)
+
tambien son expresiones regulares.
4. Toda expresion regular puede ser obtenida de esta manera, empezando con
las expresiones basicas y aplicando los operadores ', y
+
.
La denicion anterior es una tipica denicion recursiva. Las deniciones re-
cursivas pueden parecer, a primera vista, circulares: note que en el item 3 de la
denicion anterior se denen nuevas expresiones regulares en terminos de otras
expresiones regulares ya construidas (se dene X en terminos de X). Las deni-
ciones recursivas, en cuanto esten bien formuladas, no son circulares.
Problema 1. Explique porque la denicion anterior no es circular.
Cada expresion regular describe, o denota, un lenguaje regular. Dada c,una
expresion regular, usaremos el simbolo 1(c) para denotar el lenguaje repre-
sentado por la expresion c. A continuacion deniremos, de manera recursiva el
mapeo c 1(c) .
1. Si c = c entonces 1(c) es el lenguaje vacio.
2. Si c ` entonces 1(c) = c .
3. Si c = (, ' ) entonces 1(c) = 1(,) ' 1() .
4. Si c = (, ) entonces 1(c) = 1(,) 1()
5. Si c = (,)
+
entonces 1(c) = 1(,)
+
Recuerde que el simbolo denota la operacion de concatenacion de lenguajes,
mientras que el simbolo
+
denota la operacion estrella de Kleene.
XVI
Con la denicion anterior hemos probado que a toda expresion regular c le
corresponde un lenguaje regular, el lenguaje 1(c) . Es importante anotar que
el reciproco vale, esto es: dado 1 un lenguaje regular existe una expresion c tal
que 1 = 1(c) . El lector interesado en una prueba del teorema puede consultar
la excelente referencia [47].
Ilustremos, con un par de ejemplos, el contenido de los teoremas discutidos
en el paragrafo anterior:
Problema 2. Encuentre una expresion regular que denote el lenguaje
_
n 0, 1
+
: n ,= c
_
Problema 3. Determine el lenguaje regular descrito por la expresion
_
((0 ' 1) (0 0)) (0 ' 1)
+
_
Las expresiones regulares y los automatas regulares pueden ser usados para
describir conjuntos de expresiones en lenguajes de programacion. Cuando se con-
struye un lenguaje de programacion debe denirse cuales de las expresiones en
el lenguaje denotan constantes numericas, cuales funciones, cuales operaciones.
Si alguno de estos conjuntos de expresiones es un lenguaje regular podemos em-
plear o bien una expresion regular o bien un automata regular para describirlo
(declararlo). Dado un lenguaje regular 1 puede ocurrir, y ocurre, que la expre-
sion regular mas corta que describe a 1 sea mucha mas pequea (suscinta) que
el automata mas pequeo que reconoce 1. Existe secuencia (1
|
)
|1
de lenguajes
regulares y una constante C tal que para todo / la expresion regular mas corta
que describe 1
|
, llamemosla c
|
, tiene una longitud acotada por C/, mientras
que el automata mas pequeo que reconce a 1
|
tiene al menos 2
|
estados los au-
tomatas regulares pueden ser exponencialmente mas grandes, (menos ecientes,
menos suscintos), que las expresiones regulares!
Considere la secuencia (1
|
)
|1
denida por
1
|
=
_
n 0, 1
+
: n[[n[ / + 1] = 1
_
Problema 4. Encuentre una constante C, y para todo / encuentre una
expresion regular c
|
tal que 1
|
= 1(c
|
) y [c
|
[ _ C/.
Veamos ahora que, para todo / _ 1, un automata regular que reconozca el
lenguaje 1
|
requiere cuanto menos 2
|
estados, pero antes
Problema 5. Sea / _ 1, disee un automata regular que reconozca el
lenguaje 1
|
.
Que el automata diseado como solucion al problema anterior tenga, cuanto
menos, 2
|
estados no podemos considerarlo como una prueba de que efectiva-
mente se requiere un numero exponencial de estados. Esto es asi dado que el
automata diseado no necesarimente es minimal, i.e. no necesariemente es un
automata con el minimo numero de estdos posibles. Como son los automatas
minimales para 1
|
? O mas generalmente como son, como reconocer, como con-
struir los automatas minimales que reconocen un lenguaje regular? El teorema
XVII
de Myhill-Nerode, o mejor: la prueba de este teorema, nos da la clave para
responder esta pregunta. Dado 1 se dene la relacion 1
J
`
+
`
+
como
n1
J
n si y solo si \ (n 1 = n 1)
Note que si A =(Q
+
,
+
0
, `, 1
+
, c
+
) es nn automata nito que reconoce 1
entonces [Q
+
[ _

1
L

. Suponga que (n, n) , 1


J
y sea
r
el estado al que accede
el automata A al procesar el input r. Si
u
=
u
se tiene que, para todo r `
+
,
el automata A acepta nr si y solo si A acpeta nr. Tenemos entonces que el
numero de clases de equivalencia determinadas por la relacion 1
J
esta acotado
por

1
L

. Por otro lado, podemos usar la relacion 1


J
para construir un automata
regular /
J
= (Q,
0
, `, 1, c) , como en la prueba del teorema 3, recuerde que Q
es igual a
z

1
L
. Esto es: el automata /
J
es minimal y 1 no puede ser reconocido
usando un automata con menos que

1
L

estados.
Ahora, de retorno a la sucesion 1
|

|1
, tenemos que

]0,1]

1
L
k

es una cota
inferior en el numero de estados requeridos para reconocer el lenguaje 1
|
. Que
forma tiene la relacion 1
J
k
?
Problema 6. Dadas n, n 0, 1
+
, que condiciones deben satisfacer n y n
para que se tenga que n1
J
k
n?
Problema 7. Use la respuesta dada al problema 6 para calcular

]0,1]

1
L
k

. Use
este computo para concluir que 1
|
requiere un numero exponencial de estados.
Automatas de pila
En este capitulo introduciremos un segundo modelo de computacion: los au-
tomatas de pila. Los automatas de pila se diferencian de los automatas regulares
en que estos 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 reg-
ulares, sean capaces de reconocer el lenguaje 1a|.
Un automata de pila deterministico es una septupla
/ = (Q,
0
, `, 1, 1, #, c)
tal que
1. Q es un conjunto nito, el conjunto de estados de /.
2. ` es un conjunto nito, el alfabeto de entrada del automata /.
3. 1 es un conjunto nito, el alfabeto de la pila.
4.
0
Q es el estado inicial de /.
5. 1 _ Q es el conjunto de estados de aceptacion.
6. # es un elemento distinguido de 1 que se usa para indicar el inicio de la pila,
es decir: si el automata / se encuentra leyendo el caracter #, el automata
sabe que la pila se encuentra vacia.
7. La funcion de transicion c es una funcion de ` (1 Q) en 1 n, d
(Q' c), los simbolos n y d son simbolos especiales que usamos para indicar
lo siguiente
Dados a `, / 1 y Q, si c (a, /, ) = (c, c, j) la maquina cambia
su estado interno de a j y escribe c en la pila.
Dados a `, / 1 y Q, si c (a, /, ) = (c, d, j) la maquina cambia
su estado interno de a j y si / ,= # la maquina borra este caracter
de la pila, el cual es precisamente el ultimo caracter guardado en este
registro. Si / = # la maquina para y rechaza el input.
Un automata de pila deterministico es como un automata regular al que se
le ha adicionado un dispositivo externo de memoria: la pila. En cada transicion
el automata de pila deterministico puede: o agregar un caracter a la derecha de
la palabra contenida en la pila, o borrar el ultimo caracter de esta palabra. 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 carac-
ter del contenido de la pila. La nocion de conguracion para automatas de pila
deterministicos es un poco mas compleja que la nocion de conguracion para au-
tomatas regulares. Recuerde que una conguracion es una descripcion completa
del estado de la maquina en un 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 un automata de pila deterministico no
XIX
puede: escribir caracteres, borrar caracteres o marcar caracteres en la cinta de
entrada; el contenido de la cinta de entrada es invariante, (identico al contenido
de esta cinta en el instante cero). Esto implica que no necesitamos incluir en
nuestra nocion de conguracion informacion referente al contenido de la cinta de
entrada. 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 t-esima de la cinta de entrada. Tenemos entonces que lo unico que
no conocemos apriori, respecto al estado de la maquina, es su estado interno y
el contenido de la pila.
Denition 9. Dado / = (Q,
0
, `, 1, 1, #, c) un automata de pila determin-
istico, una conguracion de / es un par (n, ) 1
+
Q.
Dado n = n
1
...n
n
`
+
, la computacion de /, con input n, es una secuen-
cia ordenada y nita de conguraciones (c,
0
) , (n
1
, j
1
) ..., (n
n
, j
n
) que satisface
lo siguiente:
1. Si c
_
n
I
, (n
I1
)
]ui1]
, j
I1
_
= (a, c, j
I
) , entonces n
I
= n
I1
a.
2. Si c
_
n
I
, (n
I1
)
]ui1]
, j
I1
_
= (a, d, j
I
) , entonces
n
I
= (n
I1
)
1
... (n
I1
)
]ui1]1
3. No existen opciones diferentes a las tres listadas anteriormente.
Denition 10. Dado / = (Q, 1,
0
, 1, c) un automata de pila deterministico,
dado n = n
1
...n
n
`
+
y dada
(c,
0
) , (n
1
, j
1
) , ..., (n
n
, j
n
)
la computacion de /, en el input n, diremos que / acepta n si y solo si
j
n
1.
El teorema 5 a continuacion indica que el poder de computo de los automatas
de pila no es suciente para reconocer el lenguaje 1a|. Esto quiere decir que no
es suciente con una unidad externa de memoria de acceso restringido (solo se
puede leer el ultimo caracter, solo se puede escribir al nal de la pila) para
reconocer palindromos.
En adelante usaremos el simbolo T(T/ para denotar la coleccion de los
lenguajes libres de contexto deterministas, esto es: T(T/ denota la coleccion de
los lenguajes que pueden ser reconocidos usando un automata de pila determin-
istico.
Theorem 5. 1a| , T(T/.
Proof. (Esbozo de la prueba
2
) Supondremos que el lenguaje 1a| es libre de
contexto deterministico e intentaremos derivar una contradiccion.
2
El esbozo presentado explica convenientemente el porque Pal no puede ser recono-
cido por un automata de pila deterministico. Debe ser claro que aun es necesario
XX
Sea / = (Q,
0
, `, 1, 1, #, c) un automata de pila deterministico que re-
conoce el lenguaje 1a|. Dada n 0, 1
+
usaremos el simbolo c
/
(n) para
denotar la conguracion a la que accede / tras procesar el input n (esta es
una denicion con sentido, dado que / es un automata de pila deterministico).
Note que c
/
(n) es un elemento de Q1
n
, y que para todo : _ 1, la funcion
c
/
: 0, 1
n
Q 1
n
es inyectiva (si existieran n, 0, 1
n
tal que n ,=
y c
/
(n) = c
/
() entonces / aceptaria el input n). Dado :, usaremos el
simbolo / (:) para denotar la cantidad max
u]0,1]
n [
2
(c
/
(n))[ . Tenemos
entonces que
2
n
_
[1[
|(n)+1
1
[1[ 1
[Q[
Y entonces
2
n
_ [1[
|(n)+1
[Q[
Por lo tanto
/ (:) + 1 _
: log ([Q[)
log ([1[)
Y si suponemos : sucientemente grande podemos armar que
/ (:) _
:
2 log ([1[)
Dado sucientemente grande, y dado : _ , existe n
n
0, 1
n
tal que
[
2
(c
/
(n
n
))[ _
n
2 log(]J])
. La intuicion es que los modos de codicacion del
automata / no permiten describir (codicar) la palabra n
n
usando menos que
n
2 log(]J])
bits.
Dado i _ : denimos n
n,I
de la siguiente manera
(n
n,I
)

=
_
(n
n
)

si , ,= i
__
(n
n
)

+ 1
_
mod2
_
si , = i
esto es: n
n,I
se dene como la palabra que solo diere de n
n
en la i-esima posicion.
Es claro que:
1. / acepta las palabras n
n
n
n
y n
n,I
n
n,I
(para todo i _ :)
2. / rechaza las palabras n
n
n
n,I
y n
n,I
n
n
(para todo i _ :).
Lo anterior implica que al procesar el input n
n
n
n,I
, el automata /debe usar
el contenido de la pila para vericar que la mitad derecha del input es igual a n
n,I
y diferente de n
n
(para que pueda rechazar el input n
n
n
n,I
), y esto para todo
formalizar algunas de las armaciones hechas en la prueba. Una tal formalizacion,
aunque posible, resulta tan dicil que los detalles tecnicos pueden oscurecer las
ideas principales, es por ello que, siguiendo a Hopcroft-Ullman-Motwani [29] hemos
preferido presentar solo la estructura basica de la prueba. Por otro lado es posible
obtener este resultado como corolario del teorema 7, que estudiaremos en la ultima
de las secciones que dedicaremos a estudiar los automatas de pila.
XXI
i _ :. Se tiene entonces que / tiene que guardar informacion, en el contenido
de la pila, acerca de cada uno de los caracteres de n
n
. La informacion referente al
primer caracter del input no necesariamente esta connada al primer caracter de
la pila, pero lo que si debe ser cierto es que existen posiciones al inicio del input
tales que toda la informacion referente a ellas, en la pila, ocurre al inicio de la
pila. La intuicion es la siguiente: al procesar el input n
n
n
n,I
n
n,I
n
n
el automata
/debe borrar casi todo el contenido de la pila antes de terminar de leer la mitad
izquierda, por lo que al iniciar la lectura de la mitad derecha no tiene informacion
suciente para decidir si esta segunda mitad es el reverso de la primera.
Note que un caracter de la pila permite describir a lo mas log ([1[) posiciones
del input, por lo que un segmento de la pila de longitud 1 permitira describir a lo
sumo 1 log ([1[) bits (posiciones del input). Lo anterior implica que el segmento
nal de la pila de longitud
n
2 log(]J])
describe a lo mas
n
2
posiciones, y que en
consecuencia existe un , : tal que, si se quiere usar el contenido de la pila
para determinar n

es necesario borrar al menos


n
2 log(]J])
caracteres de la pila
(de caracteres que se borren de la pila se podran recuperar a lo mas log ([Q[)!).
Sea , una tal posicion y analizemos la computacion de / en los inputs n
n
n

,
n
n
n

n
n,
n
n,|
(con / _ :
n
2 log(]J])
) y n
n
n

n
n,
n
n
. Para empezar es claro que
en los primeros
n
2 log(]J])
+ 1 casos el automata / rechaza el imput y solo en
el ultimo caso lo acepta. Por otro lado, al procesar el input n
n
n

el automata
/ borra al menos
n
2 log(]J])
caracteres de los / (:) caracteres escritos en la pila
durante la lectura de n
n
, en particular / borra toda la informacion referente
a los ultimos
n
2 log(]J])
caracteres de n
n
. La computacion continua cuando /
procesa los inputs n
n
n

n
n,
n
n,|
y n
n
n

n
n,
n
n
, en unos casos rechaza el input
y solo en el ultimo caso lo acepta, como puede / distinguir entre estos casos?
Unicamente, usando la informacion que haya guardado en la pila acerca de los
ultimos
n
2 log(]J])
caracteres de n
n
, pero como ya lo hemos sealado, acerca de
estos caracteres y en este instante de la computacion el automata / no tiene
informacion guardada.
Corollary 4. Ningun automata de pila deterministico puede reconocer el lenguaje
1a|.
Aunque los automatas de pila deterministicos son incapaces de reconocer 1a|,
es facil probar que los automatas de pila deterministicos son estrictamente mas
potentes que los automatas regulares. Note primero que todo automata regular
es un automata de pila deterministico que no usa la pila. Por otro lado es facil
vericar que el lenguaje 1a|
1
, el lenguaje de los palindormos marcados, puede
ser reconocido por un automata de pila deterministico. Recuerde que 1a|
1
no
es regular.
Exercise 4. Disee un automata de pila deterministico que reconozca el lenguaje
1a|
1
.
XXII
5 Automatas de pila no deterministicos y lenguajes libres
de contexto
En esta seccion estudiaremos los automatas de pila no deterministicos (o sim-
plemente automatas de pila). A diferencia de lo que sucede en el caso regular, el
no-determinismo incrementa estrictamente el poder de computo de los automatas
de pila: el lenguaje 1a|, como veremos mas adelante, puede ser reconocido por
un automata de pila no deterministico.
Un automata de pila es una septupla / = (Q,
0
, `, 1, 1, #, c) tal que
1. Q es un conjunto nito, el conjunto de estados de /.
2. ` es un conjunto nito, el alfabeto de entrada del automata /.
3. 1 es un conjunto nito, el alfabeto de la pila, tal que ` ' _ 1.
4.
0
Q es el estado inicial de /.
5. 1 _ Q es el conjunto de estados de aceptacion.
6. # es el simbolo de 1 que indica el inicio de la pila
7. La relacion de transicion c es un subconjunto de
((` ' ) 1 Q) (c, d 1 Q)
Note que en la denicion de la relacion c estamos permitiendo que los au-
tomatas de pila no deterministicos tengan la capacidad de realizar transi-
ciones en vacio, esto es: transiciones en las cuales la cabeza de la cinta de
entrada no se desplaza a la derecha. Una transicion en vacio es una tupla
(, a, , r, /, j) c. Si tal transicion ocurre, la maquina, (sin desplazar la
cabeza lectora de la cinta de entrada), cambia de estado y transforma el
contenido de la pila: si r es igual a c la maquina escribe / en la pila, si r = d
la maquina borra el ultimo caracter de la pila.
Las nociones de conguracion, computacion y aceptacion se denen de man-
era similar a como se denieron en el caso deterministico.
Proviso. En adelante usaremos el termino automatas de pila para referirnos
a los automatas de pila no deterministicos.
Denition 11. Dado 1 `
+
diremos que 1 es libre de contexto si y solo si
existe un automata de pila que reconoce 1.
Theorem 6. 1a| es libre de contexto.
Proof. Considere el automata de pila / = (Q,
0
, `, 1, 1, #, c) denido por:
1. Q =
t
,
b
,
:
,
o

2. 1 = `.
3.
0
=
t
.
4. 1 =
o

5. c es la multifuncion de `1 Q en c, d1 Q (este automata no realiza


transiciones en vacio y por lo tanto es un automata de tiempo real) denida
por
XXIII
(a) Dados a ` y r 1
c (a, r,
t
) = (c, a,
t
) , (c, a,
b
) , (c, ,
b
)
(b) Dados a ` y r 1
c (a, r,
b
) = (d, r,
b
)
(c) Sea # el caracter que marca el inicio de la pila y supongamos que / ha
encontrado la primera celda vacia, se tiene que
c (, #,
b
) = (n, ,
o
)
(d) Suponga que a `
c (a, #,
b
) = (c, ,
:
)
(e) Suponga que r ,= #, en este caso se tiene que
c (, r,
b
) = (c, ,
:
)
(f) Si a = o r = # se tiene que
c (a, r,
t
) = (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 computables y
que los lenguajes libres de contexto son computables. Tampoco debemos pensar
que todo lenguje computable es libre de contexto. Sea oQl11o el lenguaje
nn : n `
+
. Es facil probar que este lenguaje, estrechamente relacionado con
1a|, no es libre de contexto (probar este hecho es una facil aplicacion de lema
de Ogden, lema 3, que es una version fuerte del lema de bombeo para lenguajes
libres de contexto).
6 Automatas de pila de doble via.
Un automata de pila de doble via es un automata de pila en el cual la cabeza
lectora de la cinta de entrada puede moverse en la dos direcciones o permanecer
estatica. Ya hemos visto que en el caso de los automatas regulares la bidirec-
cionalidad de la cabeza lectora no aporta poder de computo, es posible que esto
mismo ocurra en el caso de los automatas de pila aporta poder de computo
a los automatas de pila la bidireccionalidad de la cabeza lectora de la cinta de
entrada? El lector debe recordar que en el caso de los automatas regulares el
nodeterminismo no aporta poder de computo pero que, pr el contrario, el node-
terminismo si le aporta poder de computo a los automatas de pila que ocurre
con la bidireccionalidad de la cabeza lectora?
Un automata de pila deterministico y de doble via es una septupla
/ = (Q,
0
, `, 1, 1, #, c)
tal que
XXIV
1. Q es un conjunto nito, el conjunto de estados de /.
2. ` es un conjunto nito, el alfabeto de entrada del automata /.
3. 1 es un conjunto nito, el alfabeto de la pila.
4.
0
Q es el estado inicial de /.
5. 1 _ Q es el conjunto de estados de aceptacion.
6. # es un elemento distinguido de 1 que se usa para indicar el inicio de la pila,
es decir: si el automata / se encuentra leyendo el caracter #, el automata
sabe que la pila se encuentra vacia.
7. La funcion de transicion c es una funcion de `(1 Q) en 1 n, d, :
(Q' c) , , , los simbolos c, d y : son simbolos especiales que
usamos para indicar lo siguiente
Dados a `, / 1 y Q, si c (a, /, ) = (c, c, j, r) la maquina cambia
su estado interno de a j, escribe c en la pila y desplaza su cabeza
lectora de acuerdo a r , ,
Sean a `, / 1 y Q y suponga que c (a, /, ) = (c, d, j) . Si / ,= #
la maquina borra el ultimo caracter del contenido de la pila. Por otro
lado si / = # la maquina para y rechaza el input.
Dados a `, / 1 y Q, si c (a, /, ) = (c, :, j) la maquina cambia
su estado interno de a j y deja invariante el contenido de la pila.
Sea 2-T(T/ el conjunto de todos los lenguajes que pueden ser reconocidos
por un automata de pila deterministico y de doble via. Note que el tiempo de
computo de un automata de pila de doble via no tiene porque estar acotado
superiormente. Lo anterior nos permite introducir una segunda denicion.
Denition 12. 2-/T(T/ es el conjunto de todos los lenguajes que pueden ser
reconocidos en tiempo lineal por un automata de pila deterministico y de doble
via.
Lemma 1. 1a| 2-/T(T/.
Proof. Es facil disear un automata de pila deterministico y de doble via que
reconozca 1a| en tiempo lineal. A continuacion presentaremos una descripcion
esquematica de un tal automata, al que denotaremos con el simbolo /.
Sea n un input de /, la computacion de / en el input n esta dividida en
tres fases.
En la fase 1 el automata / lee el input y lo copia en la pila.
En la fase 2 el automata / desplaza la cabeza lectora de la cinta de entrada
al extremo izquierdo de la misma.
En la fase 3 el automata / mueve de manera simultanea la cabeza de la
cinta de entrada (de izquierda a derecha) y la cabeza de la pila (desde el
techo de la pila hasta la base de la misma). Durante esta etapa el automata
compara los caracteres leidos en la cinta y en la pila.
Es claro que un tal automata es capaz de reconocer el lenguaje 1a| y tambien
debe ser claro que el tiempo de computo empleado por /, al procesar el input
n, esta acotado por 3 [n[ + 3.
XXV
Corollary 5. T(T/ 2-/T(T/ _2-T(T/.
El corolario anterior muestra que la bidireccionalidad de la cabeza lectora
si aporta poder de computo: un lenguaje que no puede ser reconocido usando
automatas de pila deterministicos, puede serlo usando automatas de pila de-
terministicos y de doble via. En este punto es natural preguntarse si la clase
2-/T(T/ esta contenida en la clase (T/. Sorprendentemente la respuesta es
no.
Sea oQl11o el lenguaje denido por
_
n : existe n 0, 1
+
tal que n = nn
_
El lenguaje oQl11o, curiosamente cercano a 1a|, es un ejemplo de un
lenguaje de baja complejidad (es muy facil imaginar un algoritmo que, con pocos
recursos computacionales, reconozca este lenguaje) que no es libre de contexto
(vea ejercicio 7).
Lemma 2. oQl11o 2-/T(T/.
Proof. Es facil disear un automata de pila deterministico y de doble via que
reconozca oQl11o en tiempo lineal (Recuerde que oQl11o no es un
lenguaje libre de contexto). A continuacion presentaremos una descripcion es-
quematica de un tal automata, al que denotaremos con el simbolo /.
Sea n un input de /, la computacion de / en el input n esta dividida en
4 fases.
En la fase 1 el automata / determina si [n[ es un numero par, si [n[ es par
el automata pasa a la fase 2, en caso contrario el automata rechaza el input.
Para calcular la paridad de [n[ el automata simplemente lee a n alternando
entre dos estados
0
y
1
, si al terminar la lectura de n el automata se
encuentra en el estado
0
se tiene que [n[ es par, en caso contrario [n[ es
impar. Durante esta fase el automata copia el input en la pila.
En la fase 2 desplazamos las cabezas, la de la cinta de lectura de derecha a
izquierda, la de la pila desde el techo hacia la base de la pila, la cabeza de la
cinta se mueva dos veces mas rapido que la cabeza de la pila. Si n es igual
a n
1
...n
2n
, al terminar esta fase el contenido de la pila es n
1
...n
n
.
En la fase 3 la cabeza de la cinta de entrada se desplaza hasta la celda que
contiene el ultimo caracter de n.
En la fase 4 las dos cabezas de desplazan de manera simultanea comparando
los caracteres leidos.
Es claro que un tal automata es capaz de reconocer el lenguaje oQl11o y
tambien debe ser claro que el tiempo de computo empleado por /, al procesar
el input n, esta acotado por 4 [n[ + 4.
Tenemos entonces que la bidireccionalidad de la cabeza le aporta tanto poder
de computo a los automatas de pila, que este poder puede llegar a superar el
poder de computo aportado por el nodeterminismo. La armacion anterior seria
XXVI
completamente cierta si pudieramos probar la contenencia (T/ _2-/T(T/.
Hasta donde sabemos este sigue siendo, despues de 37 aos [39], un problema
abierto en teoria de automatas. Un caso particular del problema abierto antes
mencionado es el siguiente problema (presumiblemente abierto) relacionado con
palindromos.
Exercise 5. Pruebe o refute lo siguiente: 1a|
+
2-/T(T/. Recuerde que 1a|
+
es el lenguaje libre de contexto denido por
n : :n
1
...n
n
(n = n
1
...n
n
& n
1
, ..., n
n
1a|)
Cerraremos esta breve seccion comentado dos hechos importantes relaciona-
dos con los automatas de pila deterministicos y de doble via.
1. Los automatas de pila deterministicos y de doble via son incapaces de re-
conocer el lenguaje 1a| en tiempo real. Note que todo automata de pila
deterministico de doble via y de tiempo real es un automata de pila deter-
ministico, esto es: si 2 T(T/ es la coleccion de todos los lenguajes que
pueden ser reconocidos en tiempo real por un automata de pila determinis-
tico y de doble via, se tiene que
2 T(T/ = T(T/
2. Un importante resultado de Cook [9] arma que todo automata de pila
deterministico y de doble via puede ser simulado en tiempo lineal por una
maquina de Turing, esto es: si /JA es la coleccion de todos los problemas
que pueden ser resueltos en tiempo lineal, se tiene que
2 T(T/ _ /JA
7 Taller de comprension de lectura: Gramaticas libres de
contexto
Los lenguajes libres de contexto pueden ser caracterizados de dos maneras difer-
entes: bien como la coleccion de los lenguajes que pueden ser reconocidos por
automatas de pila
3
; o bien como la coleccion de los lenguajes que pueden ser
generados por gramaticas libres de contexto [29].
Denition 13. Una gramatica libre de contexto es un tupla ( =(T, , o, 1) ,
donde:
T es un conjunto nito de caracteres: el conjunto de los simbolos terminales
de (.
3
Los lenguajes que pueden ser reconocidos usando automatas de pila deterministicos
constituyen una subclase de la clase de los lenguajes libre de contexto, a saber: la
clase de los lenguajes libres de contexto deterministas
XXVII
es un conjunto nito de caracteres: el conjunto de los simbolos no termi-
nales de (.
o es el simbolo inicial.
1 es un conjunto nito, el conjunto de reglas de produccion. Un elemento de
1 es una expresion de la forma c, donde y c (T ' )
+
.
Las reglas de produccion de una gramatica libre de contexto pueden ser en-
tendidas como las reglas de inferencia de un sistema formal. Dada c (T ' )
+
diremos que c es un teorema de ( (c es (-derivable) si y solo si existe una
secuencia nita c
1
, ..., c

(T ' )
+
tal que:
1. c
1
= o.
2. c

= c.
3. Para todo 2 _ i _ se tiene que c
I
puede ser obtenida a partir de c
I1
aplicando alguna de las reglas de produccion del sistema al primer simbolo
no terminal (a la izquierda) que ocurre en c
I1
.
Considere la gramatica (
1
= (T, , o, 1) denida por:
1. T = 0, 1 .
2. = o, .
3. 1 = o c,0,1,0o0,1o1 .
Una (
1
-derivacion de la palabra 1001001 es la secuencia
o, 1o1, 10o01, 100o001, 1001001
Note que: el primer elemento de la secuencia es o (el unico axioma del sis-
tema), el ultimo elemento de la secuencia es 1001001 (el teorema), y todos los
elementos de la secuencia pueden ser obtenidos aplicando una de las reglas de
produccion al elemento anterior:
1. o
S1S1
1o1.
2. 1o1
S0S0
10o01.
3. 10o01
S0S0
100o001.
4. 100o001
S1
1001001.
Dada ( una gramatica, el conjunto de (-teoremas es el conjunto
c T
+
: c es (-derivable
Usaremos el simbolo 1(() para denotar al conjunto de (-teoremas, y dado
c (T ' )
+
usaremos el simbolo ( c para indicar que c es (-derivable.
Problema 1. Pruebe que 1((
1
) = 1a|.
Una (-derivacion es una derivacion a izquierda si cada vez que se aplica una
regla de produccion esta se aplica sobre la variable que ocurre mas a la izquierda
en la cadena sobre la que se ejecuta la regla
XXVIII
Denition 14. Dada ( = (T, , o, 1) una gramatica libre de contexto y dado
n T
+
el simbolo #

(n) denotara el numero de (-derivaciones izquierdas de


la palabra n.
Denition 15. Dado 1 un lenguaje libre de contexto, diremos que 1 es no
ambiguo si y solo si existe una gramatica ( tal que 1 = 1(() y para todo n 1
se tiene que #

(n) = 1.
Problema 2. Pruebe que 1a| es no ambiguo.
Note que el automata no deterministico / que reconoce 1a| (estudiado en
este capitulo) tiene la siguiente propiedad:
Si n 1a| existe una unica computacion aceptante de / en el input n.
Si n , 1a| no existe computaciones aceptantes de / en el input n.
Esto es: el automata / es no ambiguo. Asi las cosas el lenguaje 1a| es no
ambiguo en el sentido de la denicion 15 y en el sentido siguiente: existe un
automata no ambiguo que la reconoce. Existe alguna relacion entre estas dos
nociones de ambiguedad?
Problema 3. Pruebe o refute la siguiente armacion: 1 es un lenguaje libre
de contexto no ambiguo si y solo si existe un automata de pila no ambiguo que
lo reconoce.
Problema 4. Pruebe que todo lenguaje libre de contexto determinista es no
ambiguo.
Existen lenguajes libres de contexto que son esencialmente ambiguos, i.e. que
no existe una gramatica no ambigua capaz de generarlos.
Problema 5. Pruebe que el copy-language 1a| 1a| (que denotaremos con
el simbolo 1a|
2
) es esencialmente ambiguo.
Sea (T/ la coleccion de los lenguajes libres de contexto y sea |(T/ la
coleccion de los lenguajes libres de contexto no ambiguos. Se tiene que
T(T/ _ |(T/ _ (T/
Y por otro lado se tiene que estas contenencias son estrictas dado que 1a|
(|(T/ T(T/) y 1a| 1a| ((T/ |(T/) .
8 A manera de apendice: Pal requiere (n)
pushdown-nodeterminismo
En esta seccion estudiaremos un teorema de Goldstine et al [20] quienes prue-
ban que todo automata de pila que reconozca el lenguaje 1a| debe emplear
el maximo posible de no determinismo. Un automata de pila que reconozca
1a| debe adivinar cual es la celda (o linea) media de su input, lo que implica
adivinar J(log (:)) bits. En principio esta es la cantidad de nodeterminismo re-
querida para reconocer 1a|. Contradiciendo esta intuicion probaremos que todo
automata de pila que reconozca 1a| debe emplear una cantidad lineal de no
XXIX
determinismo, el problema es que un automata de pila no puede adivinar la
posicion de la celda media al comienzo de la computacion y guardar esta infor-
macion en algun lugar: el automata de pila no cuenta con una unidad de memoria
que le permita guardar esta informacion. Un automata de pila que reconozca 1a|
debe ser capaz de realizar movimientos no deterministicos en cada instante de la
computacion, no necesariamente al procesar cualquier input pero si al procesar
los inputs que pertenecen a un conjunto innito. C. Kintala, quien junto con P.
Fischer inicio el estudio del rol que puede desempear el no determinismo en las
computaciones de tiempo real [15], conjeturo en [30] que todo automata de pila
que reconozca el lenguaje 1a| requiere una cantidad lineal de no determinismo,
(de acuerdo a una medida que el mismo introdujo en el articulo anteriormente
citado). Una cantidad lineal de no determinismo es la maxima cantidad posible
de no determinismo que, de acuerdo a la medida de Kintala, un automata de
pila puede emplear.
Sea / = (Q,
0
, `, 1, 1, #, c) un automata de pila. La relacion c es una
relacion que supondremos incluida en el conjunto
((` ' ) 1 Q) (n, d 1
+
Q)
Un elemento de c, digamos (a, 1, , r, C, j) , es llamado una transicion, y sera
una transicion no deterministica si
[(j, 1, t) : (a, 1, , j, 1, t)[ _ 2
Remark 3. Las transiciones en vacio son un tipo muy especial de transiciones no
deterministicas. En esta seccion queremos cuanticar el minimo numero de tran-
siciones no deterministicas que debe realizar un automata de pila que reconozca
el lenguaje 1a|.Es por ello que hemos escogido distinguir las transiciones en
vacio de las transiciones no deterministicas autenticas, y esta es la razon por
la cual hemos decidido denir, en esta seccion, el concepto de transicion de la
manera en que lo hemos denido, note que el quinto factor de
((` ' ) 1 Q) (n, d 1
+
Q)
es 1
+
y no 1, esto es: hemos decidido cada secuencia (posiblemente larga) de
transiciones en vacio como si fuera una unica transicion.
Una conguracion de / sera una tripla (, A, n) , donde representa el
estado de / en un instante de la computacion, A el contenido de la pila en ese
instante y n el segmento de input que queda por leer. Una computacion es una
secuencia de conguraciones, digamos c
1
...c
n
tal que para todo i _ : la pareja
(c
I
, c
I+1
) es compatible, es decir:
Si c
I
= (, A
1
...A
n
, n
1
...n
n
) y c
I+1
= (j, 1
1
...1
:
, n
1
...n
|
) se satisface lo sigu-
iente
Si n
1
...n
n
= n
1
...n
|
existe una transicion en vacio de /, digamos c, tal
que c = (c, A
n
, , j, 1, j) y tal que
1
1
...1
:
=
_
A
1
...A
n
1 si j = n
A
1
...A
n1
si j = d
XXX
Si n
1
...n
n
,= n
1
...n
|
, entonces n
1
...n
|
= n[2...:] y existe una transicion de
/, digamos c, tal que c = (n
1
, A
n
, , j, 1, j) y tal que
1
1
...1
:
=
_
A
1
...A
n
1 si j = n
A
1
...A
n1
si j = d
Lo anterior dene una relacion de compatibilidad (derivabilidad) entre con-
guraciones que denotaremos con el simbolo
/
.
Denition 16. (La medida de Kintala)
1. Dado c = (a, 1, , r, C, j) un movimiento
i(c) = [(j, 1, t) : (a, 1, , j, 1, t)[
2. Dada c = (, A, n) una conguracion
i(c) = [d : (c, d)
/
[
3. Dada = c
1
...c
n
una computacion
i() =

In
/ (c
I
)
4. Dada n 1(/) se dene i
/
(n) como
mini() : es una computacion de / que acepta w
5. Dado : _ 1 se dene
i
/
(:) = max i
/
(n) : n `
n

6.
/
(:) = log (i
/
(:)) .
La funcion
/
es la medida de no determinismo de Kintala asociada a /.
Note que para todo /se satisface
/
(:) O(:) , note tambien que si /es de-
terministico entonces
/
es la funcion constante 1. En lo que sigue probaremos
que si / es un automata de pila que reconoce 1a| entonces
/
(:) !(:) ,
de este teorema obtendremos como corolario que todo automata de pila que
reconozca 1a| es no deterministico (i.c. 1a| , T(T/), y mas aun que todo
automata de pila que reconozca 1a| usa la mayor cantidad posible de no deter-
minismo. Antes de enunciar y probar el teorema necesitamos enunciar el lema
de Ogden, el cual es una version fuerte del lema de bombeo para lenguajes libres
de contexto.
Lemma 3. (Lema de Ogden)
Dado 1 un lenguaje libre de contexto existe j sucientemente grande (la
constante de Ogden del lenguaje 1) tal que para toda n 1 si [n[ _ j y si se
marcan al menos j caracteres de n, existen entonces
1
, ...,
5
que satisfacen lo
siguiente:
XXXI
1. n =
1
...
5
.
2. O
1
,
2
y
3
contienen, cada una, al menos un caracter marcado, o
3
,
4
y
5
contienen, cada una, al menos un caracter marcado.
3.
2

4
contiene a lo mas j caracteres marcados.
4. Para todo i _ 0 la palabra
1

I
2

I
4

5
pertenece a 1.
La prueba de este lema se deja como ejercicio, el lector interesado puede
consultar la referencia [29]. El lema de Ogden es una herramienta poderosa para
probar que ciertos lengujes no son libres de contexto. Es un excelente ejercicio
para el lector usar el lema para probar que el lenguaje
oQl11o = nn : n `
+

no es libre de contexto.
Es posible establecer un lema analogo para gramaticas libres de contexto que
llamaremos Lema de Ogden para gramaticas.
Lemma 4. (Lema de Ogden para gramaticas)
Dada G una gramatica libre de contexto existe j N, que llamaremos la
constante de Ogden de la gramatica G, tal que si n 1(G) es una palabra de
longitud mayor o igual que j y si escojemos al menos j posiciones de n, existe
A \ y derivaciones
o
c

1
A
5

c

1

2
A
4

5

c

1

5
tales que:
n =
1

5
.
O
1
,
2
y
3
, cada uno, contienen transiciones distinguidas.
O
3
,
4
y
5
, cada uno, contienen transiciones distinguidas.
Para todo , _ 0 se tiene que
1

5
1(G) .
Estamo listos para probar el resultado principal de esta seccion.
Theorem 7. Si /es un automata de pila que reconoce 1a| se tiene que
/
(:)
!(:) .
Proof. Sea / = (Q,
0
, `, 1, 1, #, c) un automata de pila que reconoce 1a| y
sea G = (\, T, o, 1) la gramatica libre de contexto denida por:
1. \ = [7j] : , j Q y 7 1 ' [7] : Q y 7 1
Una variable [7j] representa las transiciones de / que inician en el estado
terminan en el estado j y consumen el caracter 7 de la pila, las variables
[7] representan las transiciones que empiezan en y consumen el simbolo
7.
2. T = j : j es una transicion de / .
3. o = [
#
] .
4. Dada j = (a, 1, , r, 7
1
...7
n
, j) una transicion el conjunto 1 contiene reglas
XXXII
[7] - si 1.
[7] j si
1
1.
[7] j[
1
7
1

2
] [
2
7
2

3
] ... [
I
7
I

I+1
] [
I+1
7
I+1
]
con i : y
1
, ...,
I+1
Q.
[7] j[
1
7
1

2
] [
2
7
2

3
] ... [
I
7
I

I+1
] [
I+1
7
n+1
] con
1
, ...,
I+1
Q.
Note que cada una de las variables en G generan computaciones parciales de
/ que no disminuyen la altura de la pila por debajo de su altura inicial, excepto
quizas en el ultimo movimiento. Es facil probar que 1(G) es igual al conjunto
de computaciones aceptantes de /.
Sea j la constante de Ogden asociada a la gramatica G y sea / = (j [Q[ [1[)+
1. Dado : _ 1 el simbolo
n
denota la palabra (001

)
|n+2
/ y el simbolo n
n
denota la palabra
n

n
. Sea
n
una computacion aceptante de n
n
.
Armacion.
/
(
n
) _ :.
Note que, en este punto, probar la armacion implica probar el teorema. En
lo que sigue presentaremos una prueba de la armacion.
Escojamos uno de los 1

-terminos de n
n
y escojamos como caracteres dis-
tinguidos de
n
las j transiciones que consumen los j unos de este 1

-termino.
El lema de Ogden implica que existe A \ y derivaciones
o
c

1
A
5

c

1

2
A
4

5

c

1

5
tales que:

n
=
1

5
.
O
1
,
2
y
3
, cada uno, contienen transiciones distinguidas.
O
3
,
4
y
5
, cada uno, contienen transiciones distinguidas.
Para todo , _ 0 se tiene que
1

5
1(G) .
De la anterior tenemos que o
2
o
4
tienen como input un termino de la
forma 1
I
contenido en el 1

-termino escogido. Por otro lado como para todo


, _ 0 la computacion

es aceptante, el input de
2
es un termino 1
I
contenido
en
n
y el input de
3
es un termino identico contenido en
n
. Ahora, dado
que A
/

2

4
y las variables de G generan computaciones parciales que
no disminuyen la altura de la pila por debajo de su altura inicial, se tiene que
en la computacion parcial
2

4
, en la que se procesa la subpalabra de n
n
comprendida entre el inicio del termino leido por
2
y el n del termino leido
por
4
, la altura de la pila nunca es inferior a la altura en el instante inicial.
Podemos factorizar a como o
1
o
2
...o
|n+2
de manera tal que si i _ 2 la com-
putacion parcial o
I
inicia en el punto del i-esimo 1

-termino en el que la altura de


la pila alcanza su menor valor. Sea t
I
el numero de unos del i-esimo 1

-termino
que no han sido leidos cuando la computacion parcial o
I
inicia. Suponga que
existe 1 _ , _ : tal que la computacion parcial o
|(1)+2
...o
|+1
no contiene
transiciones deterministicas. Note que existen a lo mas j [Q[ [1[ triplas distintas
de la forma (t
I
,
I
, 7
I
) y, por la manera en como hemos escogido /, se tiene que
XXXIII
j [Q[ [1[ /. Existen entonces numeros r y : tales que
/ (, 1) + 2 _ r : _ /, + 1
y
(t
:
,
:
, 7
:
) = (t
s
,
s
, 7
s
)
Sea t igual a o
:
...o
s
. Durante la computacion t la altura de la pila nunca es
menor que su valor inicial, se tiene entonces que
_
, 1

(001

)
s:1
001
|
, 7
_

r
(, -, 7j)
para algun j 1
+
, y como no ocurren transiciones no deterministicas du-
rante la computacion parcial t, el automata / esta condenado a repetir la
computacion parcial t hasta consumir el input. Esto implica que es un prejo
de o
1
...o
:1
t
l
(con | sucientemente grande). Como termina en un estado de
aceptacion, t debe pasar por un estado de aceptacion. Podemos entonces fac-
torizar como c,, donde c termina en un punto ubicado entre la lectura del
primer caracter procesado por o
:
y la lectura del ultimo caracter procesado por
o
s
en el que el automata accede a un estado de aceptacion. Podemos usar el
lema de Ogden nuevamente para probar que existen factorizaciones c = c
1
c
2
c
3
y , = ,
1
,
2
,
3
tales que:
c
2
procesa un termino de la forma 1
I
(con i 0) contenido en el primer
1

-termino de
n
.
,
2
procesa un termino de la forma 1
I
contenido en el primer 1

-termino de

n
.
c
1
c
2
2
c
3
,
1
,
2
2
,
3
es una computacion aceptante de /.
Ahora, como c
1
c
2
c
3
es en si misma una computacion aceptante de / se
tiene que c
1
c
2
2
c
3
es una computacion aceptante de /, pero esto es imposible
dado que el primer 1
+
-termino del input de c
1
c
2
2
c
3
es 1
+I
mientras que todos los
otros 1
+
-terminos contenidos en el input (existen al menos dos de estos terminos)
de c
1
c
2
2
c
3
tienen la forma 1

y j j +i, esto es: el input de c


1
c
2
2
c
3
no es un
palindromo.
Exercise 6. Pruebe el lema de Ogden para lenguajes libres de contexto (consulte
la referencia [29]).
Exercise 7. Use el lema de Ogden para probar que el lenguaje
_
nn : n 0, 1
+
_
no es libre de contexto.
Exercise 8. Pruebe todas las armaciones, lemas y teoremas que se dejaron sin
probar en este capitulo y que usted considere no evidentes.
Exercise 9. Pruebe que un lenguaje libre de contexto es lineal si y solo si puede
ser reconocido por un automata de pila de un solo giro.
XXXIV
Un automata de cola (queque automata) es un automata con una unidad
externa de memoria llamada cola. En los automatas de cola la cabeza de la
unidad externa de memoria esta ubicada, a lo largo de toda la computacion, al
inicio (en la primera celda ocupada) y no al nal (como en los automatas de
pila), mientras que la informacion que entra en la cola se ubicara el nal de la
misma (como en los automatas de pila). Investigue la nocion de automata de
cola (consulte referencia [29], consulte wiki).
Los automatas de cola son universales, esto es: pueden reconocer cualquier
lenguaje Turing computable.
Exercise 10. Disee un automata de cola que reconozca 1a|.
Los automatas de cola no son automatas de tiempo real, cual es el tiempo
de computo requerido por un automata de cola para reconocer 1a|?
Exercise 11. Pruebe que si /es un automata de cola que reconoce 1a|, entonces
t
/
(:) !
_
n
4
3
log(n)
_
, (ayuda: consulte la referencia [36]).
Maquinas de Turing de una cinta
En ese capitulo introducimos 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 y borrar. Dado que una maquina de
Turing puede escribir en la cinta de entrada, una tal maquina puede usar tal cinta
como un dispositivo externo de memoria. Las maquinas de Turing son maquinas
que combinan las habilidades de los automatas de pila (dispositivo externo de
memoria sobre-escribible) y de los automatas de doble via (bidireccionalidad),
es de esperar que esta combinacion de habilidades de como resultado un tipo de
automata mas poderoso.
Remark 4. Note que en realidad las maquinas de Turing son mas habiles que los
automatas de pila bidireccionales dado que la cabeza de la cinta sobre-escribible,
la cinta de entrada, puede moverse sin restricciones sobre esta cinta a diferencia
de la cabeza de la pila que nunca puede estar en una celda diferente a la ultima
celda no vacia.
Denition 17. Una maquina de Turing es una sextupla
/ =(Q, 1,
0
, 1, c, )
tal que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. 1 es un conjunto nito, el alfabeto de la maquina que satisface la contene-
nencia
` ' _ 1
3.
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 1 Q en 1 Q, , .
6. 1 Q y si el estado interno de la maquina pertenece a la maquina
para y acepta el input.
Dados a, / 1; , j Q y / , , , si c (a, ) = (/, j, /), cada vez
que la maquina se encuentre en el estado leyendo el caracter a, la maquina
borrara a, escribe en su lugar el caracter / (reemplazara a por /), pasa del
estado al estado j y se mueve a la derecha, a la izquierda o permanece 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).
A continuacion deniremos la nocion de conguracion para maquinas de Tur-
ing, la nocion de conguracion nos permitira, a su vez, denir la nocion de com-
putacion para este tipo de maquinas.
XXXVI
Denition 18. Una conguracion de / = (Q, 1,
0
, 1, c, ) es una tripla (n, , i)
tal que
1. n 1
+
(es el contenido de la cinta)
2. Q (es el estado interno de la maquina).
3. i _ [n[ (es la posicion de la cabeza lectora).
Una maquina de Turing no esta obligada a parar al procesar cada uno de sus
posibles inputs. Sea / =(Q, 1,
0
, 1, c, ) una maquina de Turing y sea n un
input de /. Supondremos que / para al procesar el input n.
Notacion. Dada n una palabra y dado i _ [n[ el simbolo (n)
I
denotara el
i-esimo caracter de n.
Denition 19. La computacion de /, en el input n, es una secuencia
(n
1
,
1
, i
1
) ... (n
n
,
n
, i
n
)
de conguraciones tal que:
1. n
1
= n,
1
=
0
, i
1
= 1 y
n
1.
2. Para todo , _ : se tiene que [i

i
1
[ _ 1.
3. Para todo , _ : se tiene que
c
_
(n
1
)
Ij1
,
1
, i
1
_
=
_
(n

)
Ij1
,

, r

_
donde r , , y se tiene que
i

=
_
_
_
i
1
1 si r =
i
1
si r =
i
1
+ 1 en otro caso
4. Para todo , _ : se tiene que si / ,= i
1
entonces (n
1
)
|
= (n

)
|
.
Dado n un input de / y dada (n
1
,
1
, i
1
) ... (n
n
,
n
, i
n
) la computacion de
/ en el simbolo n, diremos que / acepta n si y solo si
n
. Usaremos el
simbolo 1(/) para denotar el lenguaje aceptado por /, esto es:
1(/) = n : / acepta n
Denition 20. Diremos que 1 _ `
+
es Turing-computable si y solo si existe
una maquina de Turing que reconoce 1.
Recuerde que el lenguaje oQl11o no es libre de contexto. Por otro lado es
muy facil disear una maquina de Turing que reconozca el lenguaje oQl11o.
Exercise 12. Disee una maquina de Turing que reconozca el lenguaje oQl11o.
Exercise 13. Es posible disear, como solucion del ejercicio anterior, una maquina
de Turing / con la siguiente propiedad: al procesar un input de longitud : la
maquina / unicamente emplea las primeras : celdas de su cinta.
XXXVII
Un automata linealmente acotado es una maquina de Turing similar a la
maquina / del ejercicio anterior, esto es: un automata linealmente acotado
es una maquina de Turing de una sola cinta que emplea una cantidad lineal
de espacio de trabajo. Los automatas linealmente acotados caracterizan a los
lenguajes sensitivos al contexto [29]. oQl11o es un ejemplo de un lenguaje
que es sensitivo al contexto y no es libre de contexto.
9 Complejidad computacional y reconocimiento de
palindromos
La complejidad computacional (o la teoria de la complejidad computacional)
intenta dar respuestas al siguiente tipo de pregunta: dado 1 un lenguaje com-
putable, cuales son los recursos computacionales requeridos para resolver el prob-
lema 1? La complejidad computacional parte del hecho de que todo problema
tiene un grado de dicultad intrinseco y que por lo tanto toda solucion computa-
cional de un problema algoritmico requiere tener acceso a una cantidad minima
de recursos computacionales. El concepto de recurso computacional es un con-
cepto informal y multifacetico. Recursos computacionales pueden ser: tiempo
de computo, espacio de memoria, habilidades del hardware, recursos aleatorios
(bits aleatorios) etc. En los capitulos anteriores hemos iniciado el analisis de la
complejidad computacional (esto es: la dicultad intrinseca) del problema con-
sistente en reconocer el lenguaje 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 tipo pila).
3. No es posible resolver 1a| usando automatas de doble via (una cabeza bidi-
reccional).
Reciprocamente, hemos establecido cotas superiores tales como:
1. Es posible resolver 1a| usando un automata de pila no deterministico (cabeza
lectora unidireccional + dispositivo externo tipo pila + no-determinismo).
2. Es posible reconocer 1a| usando un 2djda (cabeza lectora bidireccional+dispositivo
externo tipo pila)
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 simplemente 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 precisamente en probar que cierta cantidad
de recursos (usados inteligentemente), son sucientes para resolver 1. Por otro
lado establecer cotas inferiores (tal cantidad de recursos es insuciente, por lo
XXXVIII
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 obtenerse por dos caminos diferentes
Como corolarios de resultados generales concernientes al modelo de com-
putacion (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 regulares no deterministicos
y de los automatas de doble via.
Via argumentos combinatorios ad hoc, tales como el argumento de secuencias
de cruce que usaremos en este capitulo para probar que 1a| requiere tiempo
cuadratico cuando se emplean maquinas de Turing de una cinta (teorema 8).
Cuando entramos en el terreno de las maquinas de Turing debemos tener en
cuenta que estas constituyen un modelo universal de computacion, esto es: todo
problema computable puede ser resuelto usando una maquina de este tipo. Ten-
emos entonces que los recursos de hardware que le son propios a las maquinas
de Turing son sucientes para resolver todo problema computable. Es por ello,
que al entrar en el terreno de las maquinas de Turing, lo que nos interesa es cuan-
ticar la cantidad de recursos adicionales que deben ser empleados para resolver
un problema dado. Cuando hablamos de recursos adicionales nos referimos a
recursos tales como: tiempo de computo, espacio de trabajo, bits aleatorios etc.
La mayor parte de los analisis de complejidad computacional sobre el modelo de
maquinas de Turing centran su atencion en el tiempo de computo que denimos
a continuacion.
Denition 21. Dada /, dado n, un input de /, y dada
(n
1
,
1
, i
1
) ... (n
n
,
n
, i
n
)
la computacion de / en el input n, el tiempo de computo de / en n es igual
a :. Usaremos el simbolo t
/
(n) para denotar esta cantidad. Dado : _ 1 den-
imos el tiempo de computo de / en los inputs de tamao : como
t
/
(:) = max
u:]u]=n
t
/
(n)
El lector interesado en profundizar en las ideas basicas y en la historia de la
complejidad computacional puede consultar la excelente referencia [40].
10 Una cota inferior para Pal: el teorema de Hennie
En esta seccion probaremos una cota inferior para 1a|. Probaremos que toda
maquina de Turing de una sola cinta y capaz de reconocer el lenguaje 1a| tiene
un tiempo de computo por lo menos cuadratico. La prueba es un argumento
combinatorio elemental que se basa en la nocion de secuencia de cruce, nocion
que ha sido utilizada con exito para obtener otras cotas inferiores (vea [7], [57]).
XXXIX
Theorem 8. (Teorema de Hennie)
1a| requiere tiempo !
_
:
2
_
sobre maquinas de Turing de una sola cinta
Proof. Sea / una maquina de Turing de una sola cinta que reconoce el lenguaje
1a|. Considere el subconjunto J de 1a| denido por
_
n1
2]u]
n : n `
+
_
Dado n1
2]u]
n `
+
y dado i _ 4 [n[ , denimos C
/
I
(n) , la i-esima secuencia
de cruce (crossing sequence) asociada a n y a /, de la siguiente manera: C
/
I
(n)
es la secuencia ordenada de estados a los que accede /cada vez que, procesando
el input n1
2]u]
n, la cabeza lectora accede a la celda i-esima Dado n `
+
,
denimos C
/
(n) como
_
C
/
I
(n) : [n[ _ i _ 3 [n[
_
La observacion fundamental es que dados n, n `
n
, si n ,= n entonces
C
/
(n) C
/
(n) = ?. Suponga que existen i, , :, : + 1, ..., 3: tal que
C
/
I
(n) = C
/

(n) , sea . el prejo de longitud i de la palabra n1


2]u]
n y sea
el sujo de longitud 4: , de la palabra n1
2]u]
n. Es facil convencerse de los
siguientes hechos
1. . , 1a|
2. / acepta la palabra .n
Lo anterior implica que / no puede reconocer el lenguaje 1a|, contradi-
ciendo con ello la hipotesis inicial.
Dado n `
+
el simbolo t
u
denotara la cantidad min
I]]u],...,3]u]]
_

C
/
I
(n)

_
y dado : N el simbolo t
n
denotara la cantidad max
uz
n t
u
.
Armacion. t
n
!(:) .
Note primero que la armacion implica que el tiempo de computo de / es
!
_
:
2
_
. Para terminar la prueba es suciente entonces 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 n, n `
n
se tiene que C
/
(n)C
/
(n) =
?. Se tiene entonces que
[Q
/
[
|n+1
1
[Q
/
[ 1
_ 2
n
Esta ultima desigualdad implica que t
n
!(:) , dado que Q
/
es una can-
tidad constante que no depende de :.
Es muy facil vericar que existe una maquina de Turing de una sola cinta
capaz de reconocer el lenguaje 1a| en tiempo O
_
:
2
_
.
XL
Lemma 5. Existe una maquina de Turing de una sola cinta que reconoce 1a|
en tiempo O
_
:
2
_
.
Remark 5. El teorema de Hennnie implica que toda maquina de Turing de una
sola cinta que reconozca 1a| debe realizar, al procesar un input de longitud
:, una cantidad !(:) de zig zags de amplitud !(:) , esto es: toda maquina de
Turing de una sola cinta es esencialmente la maquina ingenua que recorre la cinta
n
2
veces, vericando en la i-esima travesia que el caracter i-esimo y el (: i)-
esimo coinciden. Este resultado no es del todo sorprendente, toda maquina de
Turing de una sola cinta debe realizar un numero no acotado de zig zags de gran
amplitud (lo zig zags de amplitud acotada son inocuos, pueden ser eliminados
agregando un numero sucientemente grande de estados) para poder reconocer
un lenguaje no regular. Hennie probo en [28] que si / es una maquina de
una sola cinta cuyo tiempo de computo T
/
satisface T
/
(:) O(:) , entonces
1(/) , el lenguaje reconocido por /, es regular. Trachtenbrot extendio en [52]
este resultado de Hennie probando que si / es una maquina de Turing de
una sola cinta que satisface T
/
(:) o (:log (:)) (i.e. lim
no
_
T
M
(n)
nlog(n)
_
= 0),
entonces 1(/) es un lenguaje regular. Esto es: el reconocimiento de lenguajes
no regulares implica realizar una cantidad al menos logaritmica de zig zags de
amplitud no acotada.
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 coinciden, o lo que es lo mismo las
cotas son ajustadas (tight).
11 Maquinas multidimensionales
En esta seccion estudiaremos un modelo de computacion que extiende el modelo
de maquina de Turing.
Denition 22. Una maquina de Turing bidimensional (para mayor brevedad,
simplemente maquina bidimensional) es una sextupla (Q, 1,
0
, 1, c, ) tal que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. 1 es un conjunto nito, el alfabeto de la maquina que satisface `' _ 1.
3.
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 1Q en 1Q, , , , | .
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 puede ser vista como un semiplano (el semi-
plano nororiental) particionado en celdas. Adicionalmente la maquina cuenta
XLI
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 conjunto
, , , , | , incluye cinco parametros: movimientos a derecha, a izquierda,
hacia arriba, hacia abajo y permanecer sobre la celda que se acaba de leer.
Dada / una maquina bidimensional y dado r un input de / supondremos
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 bidimen-
sional 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 ultima
hipotesis podria ser chequeada a la luz de lo que sucede con el lenguje 1a|.
Es posibe reconocer 1a| en tiempo menos que cuadratico usando una maquina
bidimensional? Antes de lanzarnos a estudiar la pregunta anterior, enunciaremos
un teorema que arma que toda maquina bidimensional puede ser efectivamente
simulada por una maquina unidimensional, y adicionalmente que el tiempo de
computo de la maquina unidimensional esta acotado por un polinomio en el
tiempo de computo de la maquina bidimensional.
Theorem 9. Suponga que / es una maquina bidimensional que decide 1. Ex-
iste una maquina unidimensional /
1
que decide el lenguaje 1 y tal que para
todo : N se satisface la desigualdad
T
/1
(:) _ 2
__
T
/
(:)
2
+: + 4
__
2
El lector interesado en la prueba del teorema puede consultar la referencia
[40].
11.1 Una cota inferior
En esta seccion probaremos que toda maquina de Turing bidimensional que
acepte 1a| tiene un tiempo de computo !
_
n
2
log(n)
_
. El argumento es una adapta-
cion del argumento de secuencias de cruce usado en el caso unidimensional. Dada
/una maquina bidimensional asumimos 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
(n) 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
(n) contiene infor-
macion acerca del estado en que estaba la maquina al cruzar la linea que separa
XLII
las columnas i-esima e i + 1-esima, ademas de la columna usada al realizar este
cruce (la altura a la cual se realizo este cruce). Adicionalmente pedimos que
exista una correspondencia entre la secuencia C
/
I
(n) 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 (8).
Lemma 6. Suponga que / acepta n y rj, suponga ademas que [r[ = i, [n[ = ,
y que C
/
I
(rj) = C
/

(n) Tenemos entonces que / acepta la palabra r.


Dada n `
+
el simbolo n
+
denotara el palindromo n0
]u]
n. Dado : _ 1,
el simbolo 1
n
denotara el conjunto n
+
: [n[ = : .
Lemma 7. Dadas n ,= n dos palabras de longitud :, y dados i, , :+ 1, ..., 2:
se tiene que C
/
I
(n
+
) ,= C
/

(n
+
) .
De los lemas anteriores es facil obtener la prueba del siguiente teorema
Theorem 10. 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 correspon-
den a computaciones de / de duracion acotada por :
2
esta acotado superior-
mente por
_
[Q[ :
2
_
l
, donde [Q[ es el numero de estados de la maquina /. Dada
n `
n
denimos
t
u
= min
n+1I2n
_

C
/
I
(n
+
)

_
donde el simbolo

C
/
I
(n
+
)

denota la longitud de la secuencia C


/
I
(n
+
) . Podemos
denir una funcion c de 1
n
en el conjunto de las posibles secuencias de cruce
de la siguiente manera:
Dada n `
n
escogemos i
u
tal que t
u
=

C
/
Iw
(n
+
)

y denimos c (n) como


C
/
Ix
(n
+
) .
Note que la funcion c es inyectiva. Por lo tanto el conjunto 1
n
(que tiene
exactamente 2
n
elementos) determina 2
n
secuencias de cruce distintas dos a
dos, (las secuencias (c (n))
rz
m).
Suponga que | es una cota en la longitud de las secuencias (c (r))
rz
m .
Tenemos que
_
[Q[ :
2
_
l
_ 2
n
; y esto implica que
| _ log
]Q]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:)
XLIII
Remark 6. El argumento usado en la prueba anterior puede ser facilmente adap-
tado al caso /-dimensional (con / _ 3) para obtener la siguiente cota inferior:
si / es una maquina de Turing /-dimensional que reconoce el lenguaje 1a|, se
tiene que t
/
(:) !
_
n
2
log
k1
(n)
_
.
11.2 Una cota superior
En esta seccion probaremos que existe una maquina de Turing bidimensional 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 una descripcion detallada del algoritmo bidi-
mensional de Biedl et al [7] que permite reconocer el lenguaje 1a| en tiempo
O
_
n
2
log(n)
_
.
Asumiremos que la cinta de la maquina tiene un marcador en el origen. Adi-
cionalemente asumiremos que el input esta escrito en la primera la empezando
en la celda justo a la derecha del origen.
Algoritmo bidimensional Biedl et al
Sea n una instancia de 1a| de longitud :.
1. (fase de inicializacion)
Calcule log (:)| y escriba el resultado en unario en la segunda la, util-
ice ceros para tal n. (Es posible calcular log (:)| en tiempo O(:log (:))
de la siguiente manera: recorra el input marcando posiciones alternati-
vamente, 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.
Calcule j = log (:) log (log (:)) . Borre los contenidos de la segunda y
tercera la. Escriba j 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

, copie repeti-
damente 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

. Al nalizar este proceso la maquina ha escrito todos los


numeros entre 0 y 2

1, en orden ascendente en las las 2, 3, ..., 2

+1.
XLIV
Lea n
1
, el primer caracter de n, recorra la primera columna entre las
las 2 y 2

+ 1. En cada celda verique si el caracter es igual a n


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 j-esima.
Lea los contenidos de las las 2 a 2

+ 1. Si una de estas las contiene


un simbolo |, reemplaze el contenido de esta la por #

. Al nalizar
el proceso una unica la contiene la palabra

mientras que todas las


demas contienen la palabra #

. 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 escriba 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 n. En caso contrario con-
tinue. 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 fragmento obtenido
al suprimir de n los bloques ya analizados) es un palindromo. Note que
este fragmento tiene una longitud acotada por 2j _ 2 log (:) . Para ver-
icar que el bloque restante es un palindromo podemos usar el algoritmo
estandard para maquinas unidimensionales, lo cual requiere O
_
log
2
(:)
_
unidades de tiempo.
Theorem 11. El lenguaje 1a| puede ser reconocido en tiempo O
_
n
2
log(n)
_
us-
ando una maquina bidimensional de una sola cinta.
Proof. Para probar el teorema es suciente probar que el tiempo de computo del
algoritmo bidimensional de Biedl et al es O
_
n
2
log(n)
_
. Dado i 1, 2 usaremos
el simbolo t
I
(:) para denotar el tiempo de ejecucion del paso i en inputs de
tamao :. Es claro que t
1
(:) O(:log (:)) . Es suciente entonces probar que
t
2
(:) O
_
n
2
log(n)
_
.
Sea n un input de tamao :. En la segunda fase debemos comparar un total
de
n
2(log(n)log(log(n)))
parejas de factores de n, cada uno de longitud log (:)
log (log (:)) . Veamos entonces cuanto nos cuesta realizar cada una de estas com-
paraciones.
Sea j = log (:)log (log (:)) y sea (n, ) la pareja de factores que necesitamos
comparar.
Empezamos trabajando con el factor n, y lo primero que hacemos es generar
una tabla de altura 2

y ancho j, que contenga (en orden ascendente) los numeros


0, 1, ..., 2

1. La tabla la generamos la por la. La primera la, que contiene la


palabra 0

, la generamos en tiempo O(j) , generar la la i +1 a partir de la la i


nos cuesta tiempo O(j) . Tenemos entonces que generar toda la tabla nos cuesta
XLV
O(j2

) . Una vez generada la tabla debemos encontrar la la cuyo contenido es


igual a n, esto podemos hacerlo leyendo la tabla columna por columna, el tiempo
de computo requerido para este trabajo es O(j2

) .
Debemos realizar el mismo trabajo con el factor , invirtiendo el sentido de
lectura.
Construir las tablas asociadas a estos dos factores e identicar las las (al-
turas) que les corresponden nos toma O(j2

) unidades de tiempo. Lo unico que


queda por vericar es que las dos las calculadas esten ubicadas a la misma
altura. Es claro que esto podemos hacerlo en tiempo O(:) .
De todo lo anterior tenemos que t
2
(:) O
_
n

j2

_
, note que O
_
n

j2

_
es
igual a
O
_
:
j
j2

_
= O(:2

) = O
_
:
_
2
log(n)log log(n)
__
= O
_
:
_
:
log (:)
__
Tenemos entonces que el tiempo de computo del algoritmo de Biedl et al es
O
_
n
2
log(n)
_
Remark 7. De que manera explota la bidimensionalidad de la cinta el algoritmo
de Biedl et al? Sea n una palabra de longitud :, sea n su prejo de longitud .
y sea su sujo de longitud .. Comparar los bloques n y usando una cinta
unidimensional implica recorrer la cinta !(.) veces. El algoritmo de Biedl et al
le asigna a cada bloque de n una altura (un caracter de un alfabeto innito)
que lo caracteriza, comparar dos bloques se reduce entonces a comparar dos
alturas lo cual puede hacerse recorriendo la cinta una unica vez. Un algoritmo
que optimiza el reconocimiento de palindromos es un algoritmo que minimiza
los recorridos a lo largo de las cinta de entrada. Biedl et al logran reducir j
recorridos a un unico recorrido, pero para que tal reduccion sea de utilidad es
necesario que el calculo de las alturas (que asignamos a los bloques) tome poco
tiempo, es alli donde la eleccion del j es crucial.
Exercise 14. Sea / _ 3, el teorema anterior implica que es posible reconocer
1a| en tiempo O
_
n
2
log(n)
_
usando una maquina /-dimensional. Podemos hac-
erlo mejor? La mejor cota inferior para el reconocimiento de palindromos so-
bre este tipo de maquinas es !
_
n
2
log
k1
(n)
_
podemos reconocer 1a| en tiempo
O
_
n
2
log
k1
(n)
_
usando maquinas /-dimensionales? podemos explotar la /-dimensionalidad
de la maquina?
12 Maquinas de Turing probabilisticas
Hasta el momento hemos estudiado modelos convencionales de computacion: au-
tomatas de estado nito, automatas de pila y maquinas de Turing de una cinta.
En lo que queda de este capitulo iniciaremos el estudio de modelos alternativos,
XLVI
empezando por los ya clasicos modelos probabilistas: maquinas de Turing prob-
abilistas y automatas nitos probabilistas
Una maquina de Turing probabilistica es una maquina de Turing de una sola
cinta equipada con un generador de bits aleatorios.
Denition 23. Una maquina de Turing probabilistica es una sextupla
/ =(Q,
0
, , 1, 1, , c)
tal que
1.
0
Q es el estado inicial de la maquina.
2. 1 es el alfabeto de la maquina, del cual supondremos que ` ' _ 1.
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 Q1 0, 1 en Q1 , , .
Dada / una maquina de Turing probabilistica supondremos que / cuenta
con dos cintas, la cinta de entrada y una cinta de solo lectura en la que se
escribe la secuencia de bits aleatorios generada por la maquina en el instante
cero. Dado r un input de la maquina supondremos que en el instante cero la
segunda cinta se llena magicamente con una secuencia aleatoria de longitud
innita. Al iniciar la computacion la cabeza de la segunda cinta se desplaza una
celda a la derecha por unidad de tiempo. Durante la computacion la maquina
trabaja deteministicamente como si procesara dos fragmentos, de un unico input,
escritos en cintas diferentes.
Una maquina de Turing probabilistica es un tipo especial de maquina no de-
terministica, esto implica que dado un input r, la maquina puede realizar muchos
computos distintos en el input r (estos computos dependen (estan determinados)
por la secuencia aleatoria generada en el instante cero de la computacion).
Sea r un input de /. Cada secuencia o 0, 1
+
genera una unica computa-
cion de / en el input r, a esta computacion la llamaremos la o-computacion
de / en r.
Denition 24. Sea / una maquina probabilistica.
1. Dado `
+
se dene
, () = Pr
c
[la o-computacion de / con input es aceptante]
2. Dado 0 - 1, diremos que / reconoce 1 con error - si y solo si para
todo `
+
se tiene que
Si 1 entonces , () = 1.
Si , 1 entonces , () _ -.
XLVII
12.1 Una cota superior: el algoritmo de Pippenger
En esta seccion presentaremos un algoritmo debido a Pippenger [41] que reconoce
1a| en tiempo O(:log (:)) . Existe un interesante algoritmo alternativo debido
a Freivalds [16] que reconoce 1a| y cuyo tiempo de computo es O
_
:log
2
(:)
_
Los algoritmos probabilisticos tienen una larga historia dentro de la teoria de
la computacion, ellos presentan desventajas respecto a los algoritmos determin-
istas dado que pueden cometer errores, pero presentan a su vez una gran ventaja:
suelen ser mas ecientes. Existe una larga lista de algoritmos probabilisticos que
son mas ecientes que todos sus competidores deterministicos. Una pequeisima
lista parcial es la siguiente:
1. El algoritmo de Schwartz-Zippel (consulte la referencia [40]) para determinar
si un polinomio en varias variables, sobre un campo nito dado, es no nulo.
2. El algoritmo de Freivalds para multiplicar matrices [16].
3. El algoritmo de Pippenger para reconocer 1a|.
4. Los algoritmos de Strassen-Solovay y de Rabin-Scott para reconocer primos
[40].
Es importante anotar que todo algoritmo probabilistico puede ser convertido
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 algunos hechos fundamentales, y ampliamente cono-
cidos, de la teoria de la probabilidad y la teoria de numeros elementales.
Theorem 12. (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
Lemma 8. Existe tal que dado : _ y dado c (0, 1] , si se escogen al azar
2 log(n)
t
numeros en el intervalo 1, ..., : , la probabilidad de que al menos uno
de ellos sea primo es mayor o igual a 1 c.
Proof. El teorema de los numeros primos asegura que si (:) es igual a
[i _ : : i es primo[
entonces lim
no
_
t(n)
n
log(n)
_
= 1. Esto implica la existencia de un tal que
para todo : _
1
2 log (:)
_ Pr
In
[i es primo] _
2
log (:)
Fijamos : _ y consideramos (N
+
, j
n
) el espacio de probabilidad cuyo
universo es el conjunto de los naturales no nulos y cuya funcion de distribucion
es la funcion j
n
denida por
j(:) =
_
1
(:)
:
_
n1
(:)
:
XLVIII
Sea A : N
+
R
+
la variable aleatoria denida por: A (:) = : para todo
: _ 1. El valor esperado de A corresponde a la cantidad esperada de numeros
que deberiamos elegir del intervalo 1, ..., : antes de elegir el primer primo. Se
tiene que 1 [A] =
n
t(n)
_ 2 log (:) Dado c (0, 1] se tiene que
Pr
n1,...,n
2 log(n)

]1,...,n]
[Para todo i _ 2 log (:) , el numero :
I
es compuesto] _
Pr
_
A _
1 [A]
c
_
_ c
Tenemos entonces que si : _ y c (0, 1] , la probabilidad de escoger al
menos un numero primo, al escoger
2 log(n)
t
numeros del intervalo 1, ..., :, es
mayor o igual que 1 c.
Sean r, j dos numeros en el intervalo 1, ..., 2
n
. Cual es la probabilidad de
que al escoger un numero primo en el intervalo
_
1, ..., :
4
_
, se escoja un primo j
que satisfaga rmodj ,= j modj?
Lemma 9. Sea = j
1
, ..., j
n
un conjunto de numeros primos, y sean r, j
numeros naturales tales que:
r ,= j.
Para todo j se tiene que rmodj = j modj.
Se tiene entonces que [r j[ _

In
j
I
.
Proof. Suponga que para todo j se satisface la ecuacion rmodj = j modj,
se tiene entonces
rmod

In
j
I
= j mod

In
j
I
Pero esto implica quesi r ,= j se satisface entonces la desigualdad [r j[ _

In
j
I
.
Pretendemos usar el lema anterior para probar que dados r y j dos nu-
meros diferentes en el intervalo 1, ..., 2
n
, el conjunto de primos en el intervalo
_
1, ..., :
4
_
para los cuales r y j son congruentes, es un conjunto pequeo. A
continuacion enunciaremos un lema, cuya prueba el lector podra encontrar en la
referencia [24].
Dado :, denimos 1 (:) como el conjunto i _ : : i es primo
Lemma 10. Dado : _ 150, se tiene que

o1(n
2
)
a _ :!2
n
.
Lemma 11. Sea
n
un subconjunto de 1
_
:
4
_
de tamao
t(n
4
)
2
, se tiene que

o.n
a 2
n
XLIX
Proof. Sea 1 el conjunto de los primeros
t(n
4
)
2
primos. Dado
n
como en la
hipotesis del lema se satisface la desigualdad

o.n
a _

o1
a. Por lo tanto es
suciente probar que

o1
a _ 2
n
. Como 1
_
:
4
_
1 se tiene lo siguiente

o.n
a _

o1
a _

1(n
4
)
a _ :!2
n
2
n
Corollary 6. Dados r, j 1, ..., 2
n
y dado

r
=
_
j 1
_
:
4
_
: rmodj = j modj
_
se tiene que si r ,= j, se satisface entonces la desigualdad [
r
[ _
t(n
4
)
2
.
Proof. Suponga que [
r
[
t(n
4
)
2
, de los lemas anteriores tenemos que
[r j[ _

.xy
j 2
n
.
Pero esto claramente es imposible dado que r, j 1, ..., 2
n

Lemma 12. Dado : _ y dados r, j 1, ..., 2


n
, se tiene que
Pr
1(n
4
)
[rmodj ,= j modj] _
1
2
Proof. Del lema anterior tenemos que [
r
[ _
t(n
4
)
2
, y esto implica que
1
2
_ Pr
1(n
4
)
[j ,
r
] = Pr
1(n
4
)
[rmodj ,= j modj]
Estamos listos para presentar el algoritmo de Pippenger. Sea T el algoritmo
denido a continuacion.
Algoritmo de Pippenger
El algoritmo T trabaja, en el input r = r
1
...r
n
, de la siguiente manera
(suponemos : _ )
1. Calcule r y log ([r[) .
2. Sea A
1
A
2
.... el contenido de la cinta aleatoria, mientras / _ 64 log (:) y 7
sea un numero compuesto haga lo siguiente.
k k + 1.
L
7 A
|4 log(]u])+1
...A
(|+1)4 log(]u])
. (Note que esto es equivalente a generar
un numero aleatorio en el intervalo
_
0, ..., [n[
4
_
.
Use un algoritmo deterministico de tiempo polinomial para decidir si 7
es un numero primo.
3. Dado 7 = A
|4 log(]u])+1
...A
(|+1)4 log(]u])
el output del paso dos calcule =
rmod7 y 1 = rmod7.
4. Decida si y 1 son iguales, en caso de serlo imprima r es un palindromo,
en caso contrario imprima r no es un palindromo.
De lo hecho en los paragrafos anteriores podemos obtener una prueba del
siguiente teorema.
Theorem 13. (Teorema de Pippenger)
1. Si r 1a|, la maquina T acepta r con probabilidad 1.
2. Si r , 1a|, la maquina T rechaza r con probabilidad al menos
7
16
.
Proof. El item 1 es trivial, probaremos el item 2. Sea r el input de T y suponga
que r no es un palindromo. Dena

u
= j _ 4 log (n) : j es primo y nmodj ,= nmodj
La probabilidad de que T rechaze a r esta acotada inferiormente por la
probabilidad de que en el paso 2 se genere un elemento de
u
. En el paso 2 se
realizan hasta 64 log (:) experimentos, por lo que la probabilidad de generar,
en este paso, un numero primo en el intervalo 2, ..., 4 log ([n[)esta acotada
inferiormente por 1
1
32
. Por otro lado la probabilidad de que el primo generado
en el paso 2 (si se genera un primo en este paso) pertenezca al conjunto
u
esta
acotada inferiormente por
1
2
. De lo anterior tenemos que
Pr [T rechaze n] _
31
64
_
7
16
Hemos demostrado que el algoritmo de Pippenger es un algoritmo aleato-
rio que reconoce 1a| con una probabilidad de error que esta acotada infe-
riormente por
9
16
. Veamos ahora que este algoritmo puede ser implementado
por una maquina probabilistica de una sola cinta cuyo tiempo de computo es
O(:log (:)) .
Lemma 13. Existe una maquina de Turing de una sola cinta, llamemosla /,
que dado : _ 1, dado r 1, ..., 2
n
y dado j
_
1, ..., :
4
_
calcula rmodj en
tiempo O(:log (:)) .
Proof. Supondremos que al comienzo de la computacion la cinta de la maquina
contiene el input jr. Supondremos ademas que el alfabeto de la maquina es
un alfabeto enriquecido que permite multiplicar la capacidad de cada celda por
una constante adecuada. Podemos imaginar que cada celda tiene un numero
LI
/ de las, la primera de ellas ocupada por el caracter del input que corre-
sponde a la celda, las demas vacias al comienzo de la computacion. Usaremos
que multiplicar por dos, dividir por dos, sumar y restar numeros de longitud
r puede hacerse en tiempo O(r) usando r celdas de trabajo. Sea r = j
1
...j
n
,
podemos escribir a r como .
1
....
m
4 log(m)
donde cada .
I
es un bloque de longi-
tud 4 log (:) (excepto el primero posiblemente mas corto). Identicar el bloque
.
m
4 log(m)
puede hacerse en tiempo O
_
log
2
(:)
_
, que es lo que cuesta escribir j
debajo de .
m
log(m)
, usando el espacio adicional disponible en las celdas. Identicar
el siguiente bloque a la izquierda puede hacerse de la misma manera. Note que
r =
m
log(m)
1

I=0
2
(I1) log(n)
.
m
log(m)
I
, por lo que rmodj es igual a
_
_
m
log(m)
1

I=0
__
_
2
I1
modj
_
_
.
m
log(m)
I
modj
___
modj
_
_
modj [o1]
Dado . tal que [.[ = 4 log (:) podemos calcular . modj en tiempo O(log (:))
usando log (:) celdas de trabajo de la siguiente manera:
1. Decidimos si . es menor que j, en este caso . modj es igual a .. En caso
contrario pasamos al item 2.
2. Note primero que dado . tal que [.[ _ 4 log (:) podemos calcular en tiempo
O(log (:)) , usando busqueda binaria, el minimo / tal que /j es mayor que
.. Calculamos / y calculamos . (/ 1) j.
Una vez calculado .
m
4 log(m)
modj escribimos j justo debajo del siguiente
bloque a la izquierda, calculamos en tiempo O
_
log (:)
2
_
el termino 2
log(n)
modj
y guardamos este valor.debajo de j.(tenemos / 3 lineas disponibles en cada
bloque). Finalmente calculamos
_
_
2
I1
modj
_
_
.
m
log(m)
I
modj
__
modj usando
las 4 log (:) celdas disponibles. Al nalizar este proceso habremos calculado
en tiempo O
_
log
2
(:)
_
el segundo sumando de la sumatoria o1. Si continu-
amos trabajando de esta manera podemos calcular todos los sumandos de o1 en
tiempo O(:log (:)) , al nal del proceso el sumando i-esimo estara escrito en las
4 log (:) celdas del bloque i-esimo y la cabeza lecto-escritora estara al comienzo
de la cinta en el extremo izquierdo. Solo nos falta calcular la suma (modulo
log (:)) de los bloques. Desplazamos el primer bloque debajo del segundo y
sumamos, esto nos toma tiempo O
_
log (:)
2
_
, continuamos de esta manera:
desplazando el resultado obtenido en el bloque a la izquierda y sumando, esto
toma tiempo O(:log (:)) . Al nal del proceso la cantidad buscada, (el termino
rmodj), estara escrito en el ultimo bloque a la izquierda. El tiempo de computo
de este algoritmo es O(:log (:)) .
Theorem 14. Existe una maquina de una sola cinta que implementa el algo-
ritmo de Pippenger y cuyo tiempo de computo es O(:log (:)) .
LII
Proof. Simplemente debemos vericar que los 4 pasos del algoritmo antes de-
scrito pueden ser implementados por maquinas de una sola cinta con un tiempo
de computo adecuado. Sea r = r
1
...r
n
un input de T.
1. Es claro que podemos calcular r y log (:) en tiempo O(:log (:))
2. Podemos suponer que al nal del paso 1 hemos marcado todas las celdas
contenidas en el intervalo de longitud 4 log (:) ubicado justo a la derecha
del input, este intervalo puede ser usado como patron para extraer de la
secuencia de bits aleatorios los numeros de longitud 4 log (:) que se generan
en el paso 2 del algoritmo. Generar un numero de longitud 4 log (:), usando la
cinta aleatoria y el patron, nos cuesta O(log (:) +r) , donde r es la longitud
del segmento de la cinta aleatoria que ya ha sido empleado. Note que r _
256 log (:) , por lo que generar cada uno de los numeros del paso 2 nos cuesta
O
_
log
2
(:)
_
. Dado 7 tal que [7[ _ 4 log (:) , chequear la primalidad de 7 nos
cuesta O
_
log
1
(:)
_
unidades de tiempo, donde 1 es una constante adecuada
mayor o igual que 2. En el peor de los casos debemos generar 64 log (:)
numeros en el paso 2, generar y procesar cada uno de estos numeros nos
cuesta O
_
log
1
(:)
_
unidades de tiempo, por lo que el tiempo de computo
empleado en ejecutar el paso 2 esta acotado por O
_
log
1+1
(:)
_
.
3. Dado 7 el output del paso 2, el paso 3 se reduce a calcular = rmod7 y
1 = rmod7 lo cual puede hacerse en tiempo O(:log (:)).
4. Decidir si y 1 son iguales puede hacerse en tiempo O
_
log
2
(:)
_
dado que
[[ , [1[ _ 4 log (:) .
Remark 8. Hemos diseado un algoritmo que reconoce 1a| con error acotado
por
9
16
, usando tecnicas estandard de amplicacion de probabilidades (consulte
referencia [40]) es posible, para todo c 0, derivar un algoritmo que reconozca
1a| con error acotado por c.
Remark 9. Es posible establecer una cota inferior para el reconocimiento de
palindromos mediante maquinas probabilisticas, que como ya es costumbre con
el lenguaje 1a|, coincide con la cota superior ya establecida. Yao prueba que
reconocer el lenguaje 1a| usando maquinas probabilisticas de una cinta requiere
tiempo !(:log (:)) [57], la prueba de Yao se basa en un argumento tipo secuen-
cias de cruce, adaptado al contexto de las maquinas probabilisticas.
13 Taller de compresion de lectura: Maquinas de Turing
no deterministicas
Una maquina de Turing no deterministica es una maquina de Turing cuyo
relacion de transicion no es funcional. Las maquinas de Turing no determin-
isticas, como las maquinas no deterministicas estudiadas en capitulos anteri-
ores, son capaces de realizar adivinanzas afortunadas. Es importante anotar
que las maquinas no deterministicas son un modelo de computacion esencial-
mente teorico, (con esto queremos decir que no es un modelo suceptible de ser
LIII
implementado en la practica de manera eciente). Toda maquina de Turing
no deterministica puede ser simulada por una maquina de Turing determinis-
tica pero las simulaciones conocidas tienen un costo exponencial: dada / una
maquina de Turing no deterministica cuyo tiempo de computo es igual a la fun-
cion T
/
, existe una maquina de Turing deterministica A tal que 1(/) = 1(A)
y T
A
!
_
2
T
M
_
.
La pregunta: podemos simular toda maquina de Turing no deterministica
con un sobrecosto a lo mas polinomial? Es el famoso problema: es 1 igual a
1? La hipotesis de la gran mayoria de los cienticos de la computacion es
que 1 es diferente de 1, (i.e. la mayoria de los investigadores creen que las
maquinas de Turing no deterministicas son un contraejemplo (debil) a la tesis
fuerte de Church). Es de esperar que el poder de realizar adivinanzas afortunadas
incremente la eciencia de nuestras maquinas.
Intentaremos ilustrar el poder del no-determinismo, (al menos en el diseo
de algoritmos), apelando nuevamente a nuestro leit-motiv, el lenguaje 1a|.
Una maquina de Turing con varias cintas es una maquina de Turing pro-
vista con una cinta de entrada sobre-escribible y bidireccional y algunas cintas
de trabajo adicionales dotadas con cabezas lecto-escritoras independientes. Es-
tas cintas adicionales pueden ser pilas, colas o cintas sobre-escribibles bidirec-
cionales. Estudiaremos con mucha mayor profundidad este tipo de maquinas en
el capitulo 5.
Disear una maquina con muchas cintas que reconozca 1a| en tiempo real
es posible (Galil, teorema 25), pero esta muy lejos de ser facil. Reconocer 1a|
en tiempo real usando una maquina deterministica con solo dos cintas parece no
ser posible
Conjecture 1. No existe una maquina de tiempo real con solo dos cintas que
reconozca el lenguaje 1a|.
Por otro lado resulta muy facil disear una maquina de Turing no deter-
ministica provista unicamente con dos cintas y que reconozca 1a| en tiempo
real.
Problema 1. Disee una maquina de Turing no deterministica provista con
dos cintas y que reconozca 1a| en tiempo real.
Problema 2. Disee una maquina de Turing no deterministica provista con
una sola cinta y que reconozca el lenguaje 1a| en tiempo O(:log (:)) .
Problema 3. Es posible hacerlo mejor? Es posible reconocer 1a| en
tiempo real usando una maquina no deterministica provista con una sola cinta?
Note que la pregunta antrior es una pregunta relacionada con la siguiente
problematica mucho mas general: el poder del no-determinismo es mayor que
el poder de la randomizacion?
Problema 4. Que puede decir respecto a la pregunta anterior?
Algunos lectores podran pensar que la conjetura 1 es trivialmente falsa, dado
que si es posible reconocer 1a| en tiempo real con un cierto numero de cintas,
es entonces posible reconocer 1a| con dos cintas.
El lector no debe despreciar el poder de computo que una o varias cintas
adicionales pueden aportar. Sea i _ 1 y dena T (i) como la coleccion de todos
LIV
los lenguajes que pueden ser reconocidos en tiempo real usando una maquina de
Turing con i cintas. Sea ahora ` = 0, 1, a, /, c, , y sean 1
1
y 1
2
los lenguajes
denidos por
1
1
=
_
ncn : n 0, 1
+
y a, /
+
_
1
2
=
_
n, : n 0, 1
+
y a, /
+
_
Rabin [42] prueba que el lenguaje 1 = 1
1
'1
2
pertenece a T (3) T (2)
tres cintas son mas poderosas que dos!
Dado : _ 1 podemos denir un lenguaje 1
n
de la siguiente manera
1
n
=
_
n
1
cn
2
c...n
n
c : n
1
, ..., n
n
, 0, 1
+
& i _ :(n
I
= )
_
Hartmanis y Stearns [26] probaron que 1
n
T (: + 1)T (:) , esto es: cada
cinta adicional puede aportar poder de computo. Note por otro lado que cada
uno de los lenguajes 1
n
puede ser reconocido en tiempo real con dos cintas y
no determinismo: dos cintas y no determinismo pueden ser mas poderosas que
: cintas.
Problema 5. Pruebe la armacion anterior.
La situacion puede ser incluso aun mas dramatica, considere el lenguaje
! =
_
n
1
cn
2
c...n
n
c : : _ 1 & n
1
, ..., n
n
, 0, 1
+
& i _ :(n
I
= )
_
Hartmanis y Stearns [26] probaron que ! no puede ser reconocido en tiempo
real con un numero nito de cintas, pero es facil probar que ! puede ser re-
conocido en tiempo real no-deterministico usando dos cintas, esto es: existen
lenguajes que no pueden ser resueltos en tiempo real usando un numero nito
de cintas pero que pueden ser nodeterministicamente resueltos en tiempo real
con solo dos cintas.
Problema 6. Pruebe que ! puede ser reconocido en tiempo real no-deterministico
usando dos cintas.
Becvar [6], en un survey ya clasico, se preguntaba si es posible reconocer !
en tiempo real usando una maquina con una sola cinta y varias cabezas, hoy
sabemos que esto no es posible (es una consecuencia del teorema de Leong-
Seiferas [35]): dos cintas y no determinismo pueden ser mas poderosas que un
numero ilimitado de cabezas
4
.
Es importante sealar que dado : _ 1 es suciente usar : pilas para reconocer
1
n
en tiempo real: : + 1 pilas pueden ser mas poderosas que : cintas. Por otro
lado es posible disear una maquina de Turing no deterministica con una cinta
de solo lectura y una pila que reconozca ! : una pila y no determinismo pueden
ser mas poderosos que un numero nito de cintas. Lo anterior implica que
4
Es posible denir una jeraquia similar a la jerarquia RT antes denida, usando como
parametro el numero de cabezas. Sea C tal jerarquia, Aanderaa [?] prueba que esta
jerararquia es estricta, el teorema de Seiferas implica que RT = C:
LV
Corollary 7. Existe un lenguaje libre de contexto que no puede ser reconocido
en tiempo real con un numero nito de pilas.
Proof. ! es libre de contexto dado que ! puede ser reconocido en tiempo real
usando no determinismo y una pila, i.e. con un automata de pila no determinis-
tico.
Lemma 14. Todo lenguaje libre de contexto puede ser reconocido en tiempo real
usando una maquina nodeterministica con dos cintas.
Proof. Todo automata de pila no deterministico es una maquina de Turing no
deterministica con dos cintas: la cinta de entrada y la pila. Por otro lado todo
automata de pila no deterministico puede ser transformado en un automata de
pila no deterministico de tiempo real: eliminando las transiciones en vacio.
14 A manera de apendice: Automatas nitos
probabilisticos
Las maquinas de Turing probabilisticas son maquinas de Turing con un criterio
de aceptacion probabilistico, de manera analoga los automatas nitos proba-
bilisticos son automatas nitos (de una o dos vias) con un criterio de acepta-
cion probabilistico. En esta seccion estudiaremos dos tipos de automatas nitos
probabilisticos y probaremos que estos automatas son incapaces de reconocer el
lenguaje 1a|.
Denition 25. Un automata regular probabilistico es una quintupla
/ =(Q,
0
, , c, .)
tal que:
1. La cuadrupla A = (Q,
0
, , c) es un automata regular no deterministico.
2. . es una funcion de c en R
+
que satisface la siguiente condicion: dado
(, a) Q` se tiene que

:(j,o,)o
(, a, j) = 1
El lector debe notar que la computacion de un automata probabilistico en
un input n es una cadena de Markov 1 (n) [44] cuyo conjunto de estados es el
conjunto
o = (, |) : Q y | 1, ..., :
y cuya matriz de transicion ' (n) = [t
u,u
]
u,uS
es la matriz
t
u,u
=
_
n(j, n
l+1
, ) si = (j, |) y n = (, | + 1)
0 en otro caso
Podemos identicar esta cadena de Markov con el digrafo etiquetado G(A, n) =
(o, 1
u
, c) denido por:
LVI
1. Dados (j, |) , (, r) o existe una arista de (j, |) a (, r) si y solo si r = | +1
y . (j, n
l+1
, ) 0.
2. Dada ((j, |) , (, | + 1)) 1
u
se tiene que c((j, |) , (, | + 1)) = . (j, n
l+1
, ) .
Dado = ((
0
, 0) , (
1
, 1)) ... ((
n1
, :1) , (
n
, :))
Denition 26. Sea = ((
0
, 0) , (
1
, 1)) ... ((
n1
, :1) , (
n
, :)) un camino
en G(A) , la probabilidad del camino , que denotaremos con el simbolo n() ,
es igual a

In1
n(
I
, n
I+1
,
I+1
) .
Denition 27. Dada n `
n
la probabilidad de aceptacion de n, que deno-
taremos j
/
(n) , es igual

~
n() , donde la suma es una sumatoria sobre el
conjunto de los caminos de longitud : que inician en
0
y terminan en .
Denition 28. Diremos que 1 es aceptado por / con error - si y solo si ocurre
lo siguiente:
Si r 1 se tiene que j
/
(n) = 1.
Si r , 1 se tiene j
/
(n) _ -.
Theorem 15. Dado 0 _ - 1 no existe un automata regular que reconozca el
lenguaje 1a| con error -.
Proof. Suponga que / es un automata regular probabilistico que acepta el
lenguaje 1a|, note que / es una maquina de Turing probabilistica de una cinta
y de tiempo real, esto implica que 1a| puede ser reconocido por una maquina
probabilistica en tiempo o (:log (:)) (i.e. existe una maquina probabilistica, dig-
amos A, que reconoce 1a| y tal que lim
no
_
T
N
(n)
nlog(n)
_
= 0), contradiciendo el
teorema de Yao.
En lo que sigue estudiaremos el modelo de automatas regulares probabilis-
ticos de doble via. Probaremos que estos automatas tampoco pueden reconocer
el lenguaje 1a|, probarlo sera un poco mas dicil, no podemos armar que este
hecho es un corolario del teorema de Yao dado que los automatas de doble via
pueden tener un tiempo de computo que no esta acotado por O(:log (:)) .
Denition 29. Un automata nito de doble via probabilistico (un 2j)a para
abreviar) es un tupla
/ =(Q, ,
0
,
occ
,
:t
, c, c)
tal que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. 1 = ` ' 1, 1 es el alfabeto de la maquina.
LVII
3.
0
,
occ
,
:t
Q son estados distinguidos,
0
es el estado inicial,
occ
y
:t
son estados de parada (si el automata accede a uno de estos dos estados la
computacion termina),
occ
es el estado de aceptacion y
:t
el de rechazo.
4. c _ 1 (Q
occ
,
:t
) Q, , es una relacion de transicion no
deterministica.
5. c es una funcion de peso que asigna probabilidades a cada una de las cuadru-
plas en c, la funcion c satisface las siguientes dos condiciones adicionales:
Para todo (a, , j, i) c se satisface que c((a, , j, i))
_
0,
1
2
_
.
Para todo (a, ) 1 (Q
occ
,
:t
) se tiene que

(o,j,,I)o
c((a, , j, i)) = 1.
Dado / un 2j)a y dada n `
+
un input de /, la computacion de /
en n inicia con el automata en el estado
0
y la cabeza lectora ubicada sobre
la celda 0 que contiene el simbolo 1, (el simbolo 1 es un simbolo especial que
indica el inicio del input, mientras que el simbolo 1 es otro simbolo especial
que se usa para indicar el nal del input). La dinamica de la cabeza lectora y la
dinamica de los estados internos de / son probabilisticas y estan controladas
por la relacion c. Dada n podemos asignar a n una probabilidad de aceptacion,
que denotaremos con el simbolo j
/
(n) , y que corresponde a la pobabilidad de
que el automata pare en el estado
occ
al procesar el input r, esta probabilidad
es calculada sobre las elecciones aleatorias de la maquina.
Denition 30. Dado 1 y dado un 2j)a / diremos que / acepta 1 con error
- si y solo si
Si n 1 se tiene que j
/
(n) = 1.
Si n , 1 se tiene que j
/
(n) _ -
Probaremos que no existe un 2j)a capaz de reconocer el lenguaje 1a|. Para
ello consideraremos una nocion un poco mas general de aceptacion, la nocion de
separacion. Sean , 1 `
+
tales que 1 = ? y sea 0 -
1
2
diremos que
/ separa de 1 con error - si y solo si ocurre lo siguiente:
Si n se tiene que j
/
(n) _ 1 -.
Si n 1 se tiene que j
/
(n) _ -.
Remark 10. Dado 1 un lenguaje y dado -, si no existe un 2j)a capaz de separar
1 y co-1 con error -, no existe entonces un 2j)a que reconozca 1 con error -
Dado n un input de / una condicion inicial es un par o = (, i) , donde
Q e i 1, 1 . El signicado de una condicion inicial (, i) es el siguiente:
La computacion de ', en el input n, inicia con el automata en el estado
interno y con la cabeza ubicada en la celda 0 (en el caso en que i = 1, si
i = 1 la cabeza esta ubicada, al inicio de la computacion, en la celda [n[ + 1)
LVIII
Una condicion nal t puede ser o un par t = (j, i) con j Q e i 1, 1 o
una expresion del tipo Acepta, Rechaza, Bucle. El signicado de un par t = (j, i)
es el siguiente:
la maquina accede al estado j con la cabeza ubicada en la celda 0 (si i = 1,
o con la cabeza ubicada en la celda [r[ + 1 si i = 1).
El signicado de la condicion nal Bucle es el siguiente:
la maquina entra en un bucle innito.
El signicado de las otras dos condiciones nales es el obvio.
La computacion de un 2j)a en un input n puede ser vista como una cadena
de Markov 1 (n) cuyo conjunto de estados o es el conjunto
(, |) : Q y | 0, ..., [n[ + 1
y cuya matrix de transicion ' (n) =
_
t
1
s|

s,|S
es la matrix denida por:
t
1
s|
=
_

_
c(j, n
l
, , i) si : = (j, |) , t = (, | + 1) e i =
c(j, n
l
, , i) si : = (j, |) , t = (, | 1) e i =
c(j, n
l
, , i) si : = (j, |) , t = (, |) e i =
0 en otro caso
Esta cadena de Markov es una cadena de Markov absorbente (i.e. dado : o
existe t o tal que t es accesible desde : y t
1
||
= 1, los estados t que satisfacen
la ecuacion t
1
||
= 1 son los estados absorbentes de la cadena de Markov). Para
todo i 0, ..., [n[ + 1 los estados (
occ
, i) y (
:t
, i) son absorbentes.
Dada 1 una cadena de Markov absorbente con conjunto de estados 1, ..., :
y dado : un estado absorbente, el simbolo a (1, :) denota la probabilidad de
absorcion en : que es igual a la probabilidad de que la cadena termine en el
estado absorbente : si inicia en el estado 1.
Dados a, / y , 0 diremos que a, / son ,-cercanos si y solo si o a = / = 0
o ,
1

o
b
,. Sean 1 y 1
+
dos cadenas de Markov cuyo conjunto de estados
es o, si para todo par :, t o se tiene t
1
s|
y t
1

s|
son ,-cercanos diremos que 1
y 1
+
son ,-cercanas.
Lemma 15. Sean 1 y 1
+
dos cadenas de Markov ,-cercanas con conjunto de
estados o = 1, ..., : , si : o es un estado absorbente en las dos cadenas,
entonces a (1, :) y a (1
+
, :) son ,
2n
-cercanos.
Una prueba de este lema puede ser consultada en la referencia [12].
Sea / un 2j)a, sea n un input de /, sea o una condicion inicial y sea
t una condicion nal, el simbolo j
/
(n, o, t) denote la probabilidad de que el
automata / acceda a la condicion nal t al procesar el input n cuando la
computacion inicia en la condicion inicial o.
Theorem 16. Sean , 1 `
+
tales que 1 = ?. Suponga que existe un
conjunto innito 1 _ Z tal que a cada : 1 podemos asignarle un conjunto
\
n
_ `
n
de manera tal que la secuencia \
n

n1
satisface:
1. Para todo / _ 1 existe :
|
tal que si : _ :
|
y : 1 entonces [\
n
[ _ :
|
.
LIX
2. Para todo : 1 y para todo par n, n \
n
con n ,= n existen palabras :, t
tales que: o (:nt y :nt 1) o (:nt 1 y :nt ) .
Se tiene entonces que para todo -
1
2
no puede existir un 2j)a que separe
y 1 con error -.
Proof. Sea ,
1
2
y suponga que existe un 2j)a, llamemoslo /, que separa los
conjuntos y 1 con error ,. Sea c el numero de estados de / y sea (
/
el
conjunto
(o, t) : oes una condicion inicial y t es una condicion nal
Note que d = [(
/
[ = 4c
2
+ 6c. Sea : _ 1, sea n \
n
y sea j (r) =
(j
/
(n, o, t))
(c,r)c
M
.
Armacion. Si j (n)
(c,r)
0 entonces j (n)
(c,r)
2
cn
.
(prueba de la armacion) Consideremos el caso especial en que t es una
condicion de la forma (j, [n[ + 1) , si j (n)
(c,r)
,= 0 existe un camino en 1 (n)
de probabilidad no nula, como 1 (n) tiene a lo mas c: estados no absorbentes
y las probabilidades de transicion no nulas son mayores o iguales que
1
2
existe
un camino de o en (j, [n[ + 1) cuya probabilidad es mayor o igual que 2
cn
.
Tenemos entonces que j (n)
(c,r)
2
cn
. Los otros casos son similares.
Fije : 1 y divida a \
n
en clases de equivalecia de acuerdo a la relacion
n = n si y solo si los vectores j (n) y j (n) tienen el mismo soporte
donde el soporte de un vector j (n) es el conjunto
_
(o, t) : j (n)
(c,r)
,= 0
_
que denotaremos con el simbolo ooj (n). Sea 1
n
la clase de equivalencia de
mayor tamao, se tiene que [1
n
[ _
]Vm]
2
d
. Sea d
+
el tamao del soporte de
los elementos en 1
n
. Dado n 1
n
usamos el simbolo 1 (n) para denotar la
restriccion de j (n) a los indices que pertenecen a ooj (n). Note que el vector
1 (n) pertenece a [2
cn
, 1]
J

. Si usamos el simbolo log (1 (n)) para denotar


el vector (log (1 (n)
I
))
ISo(u)
se tiene que log (1 (n)) [c:, 0]
J

. Divida
el intervalo [c:, 0] en subintervalos disyuntos de longitud j de manera que
[c:, 0]
J

es dividido en
_
cn

_
J

cajas de tamao j
J

. Como [\
n
[ crece mas
rapido que todo polinomio y d
+
es constante, existe :

tal que para todo : _ :

se satisface la desigualdad
_
c:
j
_
J

[\
n
[
2
J
_ [1
n
[
Fije j y suponga que : _ :

, existen n, n 1
n
tales que log (1 (n)) y
log (1 (n)) pertenecen a la misma caja, esto implica que si i ooj (n) entonces
j (n)
I
y j (n)
I
son 2

-cercanos. Sean : y t como en el enunciado del teorema


LX
y suponga que :nt y :nt 1, sean 1(n) y 1(n) las cadenas de Markov
denidas por:
Dado n, n la cadena de Markov 1() es una cadena de Markov con
conjunto de estados
o () = (, ,) : Q y , 1, 2, 3, 4 ' 1, cc, 1, 1
El signicado de tales estados esta dado por:
1. (, 1) signica que / esta en el estado leyendo el nal de :.
2. (, 2) signica que / esta en el estado leyendo el inicio de .
3. (, 3) signica que / esta en el estado leyendo el nal de .
4. (, 4) signica que / esta en el estado leyendo el inicio de t.
5. 1 signica que / esta en el estado
0
leyendo el caracter 1.
6. cc signica que / esta en el estado
occ
.
7. 1 signica que / esta en el estado
:t
.
8. 1 signica que / entro en un bucle innito.
Las probabilidades de transicion de 1() corresponden a las probabilidades
j (, o, t) con la interpretacion natural. Los estados cc, 1 y 1 son los estados
absorbentes. Sea | = 2 (4c + 4) y sea a () la probabilidad de que / acepte
la palabra :t, note que a () = a (1() , cc) . Como :nt se tiene que
a (n) _ 1 - y como 1(n) y 1(n) son 2

cercanos se tiene que


o(u)
o(u)
_ 2
l
y a (n) _ (1 -) 2
l
. Dado que -
1
2
y | es constante podemos elegir :
sucientemente grande y j sucientemente pequeo para que a (n)
1
2
. Tenemos
entonces que a (n) = j
/
(:nt)
1
2
y en consecuencia podemos armar que /
no separa de 1 con error -.
Corollary 8. Para todo -
1
2
no existe un 2j)a que reconozca 1a| con error
-
1
2
.
Proof. Sea = 1a|, 1 = co-1a|, 1 = Z y par todo : 1 sea \
n
= `
n
. Dado
: _ 1 y dados n, n \
n
podemos tomar : = c y t = n, es claro que :nt 1a|
y :nt co-1a|.
Remark 11. Dwork y Stockmeyer probaron en [12] un resultado un poco mas
general: no existe un protocolo interactivo que use bits aleatorios de conocimieto
publico y cuyo vericador sea un 2j)a capaz de reconocer el lenguaje 1a|. Por
otro lado Dwork y Stockmeyer probaron que si existe un protocolo interactivo
que usa bits privados y cuyo vericador es un 2j)a que usa bits privados capaz
de reconocer 1a|. Desafortunadamente estudiar estos modelos esta mas alla del
alcance de estas notas.
Modelos de computacion no convencionales
En este capitulo continuaremos y profundizaremos el estudio de modelos al-
ternativos de computacion. Estudiaremos en particular los siguientes modelos:
Automatas celulares, automatas cuanticos y redes neuronales articiales.
15 Automatas celulares
Los automatas celulares son los modelos mas simples de computacion en paralelo.
En esta seccion estudiaremos algunos modelos de automatas celulares. Em-
pezaremos estudiando el modelo de arreglos iterados (Iterative arrays).
Denition 31. Un arreglo iterado :-dimensional es una cudrupla A = (Q,
0
, `, , c)
tal que
1. Q es un conjunto nito (el conjunto de estados de A).
2. ` Q es el alfabeto de la maquina.
3.
0
Q es el estado inicial de la maquina.
4. _ Q es el conjunto de estados de aceptacion.
5. c : Q(Q)
3
n
1
Q es la funcion de transicion de la maquina.
Dado n Z
n
la vecindad de n es el conjunto

n
(n) =
_
Z
n
: max
In
[n
I

I
[ _ 1
_
Esta nocion de vecindad dene una topologia o, lo que es lo mismo, una estruc-
tura de grafo sobre Z
n
. Note que [
n
(n)[ = 3
n
. Supondremos que cada uno de
los conjuntos
n
(n) esta dotado de un orden para el cual el primer elemento
es n. A este grafo lo llamaremos el reticulo cubico de dimension :. Un arreglo
iterado :-dimensional esta constituido por el reticulo cubico Z
n
, y por un au-
tomata nito A. Sobre cada vertice de Z
n
tenemos ubicada una copia de A.
En el instante cero todos los vertices de Z
n
(celdas) se encuentran en el estado

0
, (donde
0
es el estado inicial de A). En el instante i la celda cero recibe el
caracter n
I
y pasa al estado c
_
n
I
, (
,I1
)
]2,...,3
n
]
_
, donde c es la funcion de
transicion de A y dado , 2, ..., 3
n
el estado
,I1
es el estado, en el instante
i 1, del vecino ,-esimo de cero. Dado n ,= 0, el estado de n en el instante i es
igual a c
_

1,I1
, (
,I1
)
]2,...,3
n
]
_
.
Denition 32. Dado A = (Q,
0
, `, , c) un arreglo :-dimensional, el lenguaje
reconocido por A es el conjunto de aquellas palabras n para las cuales el estado
de la celda cero en el instante [n[ , llamemoslo , satisface la condicion
1
()
.
LXII
Note que nuestra denicion de aceptacion implica que todo lenguaje aceptado
por un arreglo es aceptado en tiempo real.
Denition 33. Dados 1 y T dos lenguajes sobre el alfabeto ` el lenguaje 1 T
es el lenguaje denido por
1 T = n `
+
: n 1 T (n = n)
Lo que haremos a continuacion es mostrar que el lenguaje `
+
1a| no puede
ser reconocido por un arreglo iterado. Por otro lado es facil vericar que el
lenguaje 1a| si puede ser reconocido por un arreglo unidimensional, el lector
interesado puede consultar la referencia [10] o estudiar la prueba del teorema
19 la cual puede ser facilmente modicada para obtener un arreglo iterado que
reconozca el lenguaje 1a|.
Dado 1 `
+
y dado / _ 1 denimos una relacion de equivalencia =
J,|
sobre el conjunto `
+
de la siguiente manera
=
J,|
n si y solo si para todo c `
|
se tiene que (c 1 == nc 1)
Theorem 17. (Myhill-Nerode para arreglos)
Dado A = (Q,
0
, `, , c) un arreglo :-dimensional y dado / _ 1 se tiene
que la relacion =
J(A),|
contiene a lo mas [Q[
(2|+1)
n
clases de equivalencia.
Proof. Suponga que existe / tal que =
J(A),|
contiene al menos j = [Q[
(2|+1)
n
+1
clases de equivalencia diferentes. Sean C
1
, ..., C

clases de equivalencia diferentes


dos a dos y sean n
1
, ..., n

representantes de estas clases. Sea


n
_

0 , /
_
la
vecindad de

0 de radio /. Dado n un input de A, la /-conguracion determinada


por n en el instante i es la funcion
I,u
:
n
_

0 , /
_
Q. Note que si existen
dos palabras n y tales que la /-conguracion determinada por n en el instante
[n[ coincide con la /-conguracion determinada por en el instante [[ , entonces
para todo c `
|
se tiene que
nc 1(A) si y solo si c 1(A)
Note ahora que el tamao del conjunto de /-conguraciones esta acotado
por [Q[
(2|+1)
n
. Existen entonces i, , _ j tales que i ,= , y las palabras n
I
y n

determinan las mismas /-conguraciones. Tenemos entonces que n


I
=
J(A),|
n

.
Note que esto ultimo es una contradiccion dado que n
I
y n

son representantes
de =
J(A),|
-clases diferentes.
Theorem 18. `
+
1a| no puede ser reconocido en tiempo real por un arreglo
iterado.
Proof. Suponga que A = (Q,
0
, `, , c) es un arreglo iterado :-dimensional que
reconoce `
+
1a|. Escoja / tal que:
LXIII
/ es impar.
2
2

k3
2
!
[Q[
(2|+1)
n
.
Sea ) : `
+
`
+
el homomorsmo denido por la funcion
) (0) = 01 y ) (1) = 11
Sea A igual a
1) (n) 00 : n `
n

Dado 1 _ A denimos una palabra n


Y
de la siguiente manera:
1. Si 1 = ? entonces n
Y
= c.
2. Si 1 = n
1
, ..., n

, denimos n
Y
de manera inductiva
c
Y,0
= c.
c
Y,I+1
= (n
I+1
)
1
_
c
Y,I
_
1
c
Y,I
, para todo i _ j 1.
n
Y
= c
Y,
Es facil vericar lo siguiente
1. n
Y
n

`
+
1a|.
2. Para todo 1 _ A y para todo n A 1 se tiene que n
.
n , `
+
1a|.
3. Dados 1, 7 A dos subcojuntos de A diferentes, n
Y
y n
2
no son =
J(A),|
equivalentes.
El ultimo hecho en la lista anterior implica que la relacion =
J(A),|
contiene
al menos 2
2
(
k3
2
)
clases de equivalencia, pero esto es una contradiccion dado que
2
2

k3
2
!
[Q[
(2|+1)
n
.
A continuacion introduciremos el modelo de automatas celulares unidimen-
sionales de una sola via (1-OC). Un automata celular unidireccional es un
automata celular en el que la informacion solo puede uir en un sentido (en
nuestra denicion de izquierda a derecha, aunque podria ser tambien de derecha
a izquierda)
Denition 34. Un automata celular unidireccional (y unidimensional) es una
quintupla / = (Q, `, #, , c) tal que
1. Q es un conjunto nito (el conjunto de estados de /).
2. ` Q es el alfabeto de la maquina.
3. # (Q`) es un simbolo especial que se usa para determinar (marcar) el
inicio y el n del input.
4. _ Q es el conjunto de estados de aceptacion.
5. c : (Q' #) Q Q es la funcion de transicion de la maquina.
LXIV
Un automata celular / (unidimensional y unidireccional) cuenta con una
cinta semi-innita. La celda cero de la cinta (el extremo izquierdo) siempre esta
ocupado por el caracter # (siempre esta en el estado #). Dado n = n
1
...n
n
un
input de / y dado i _ :, al inicio de la computacion de / en el imput n la
celda i se encuentra en el estado n
I
y la celda :+1 se encuentra en el estado #.
Cada celda es una cabeza lecto-escritora que puede leer de manera simultanea
el caracter (estado) en el que se encuentran ella y su sucesor. La funcion de
transicion permite actualizar el estado de cada una de las celdas de manera
simultanea. La diferencias basicas entre arreglos iterados unidimensionales y 1-
OCs son esencialmente dos:
1. En los 1-OCs el input se encuentra escrito en la cinta antes de iniciar la
computacion mientras que en los arreglos el input es introducido caracter
por caracter una vez iniciada la computacion.
2. En los 1-OCs el ujo de informacion es unidireccional mientras que en los
arreglos es bidireccional
Podemos reconocer 1a| en tiempo real usando automatas celulares unidi-
reccionales? La respuesta es si, y la prueba de este hecho la obtendremos como
una facil consecuencia de un hecho mucho mas general que discutiremos a con-
tinuacion.
Denition 35. Una gramatica libre de contexto ( = (T, , o, 1) es lineal si y
solo si todas las reglas de produccion presentes en 1 son de la forma A a o
A 1 a o A a1, donde A, 1 y a T.
Denition 36. Un lenguaje libre de contexto 1 es lineal si y solo si existe una
gramatica lineal ( tal que 1 = 1(() .
Example 1. El lenguaje 1a| es lineal, sea ( =(0, 1 , , o, 1) la gramatica denida
por:
= o, A
0
, A
1
.
1 es el conjunto
o c,0,1,A
1
1,A
0
0; A
0
0o; A
1
1o
Remark 12. Lo anterior muestra que la clase /(T/ (de los lenguajes lineales)
no esta contenida en T(T/, no deberia sorprender a nadie que el testigo de este
hecho sea el lenguaje 1a|.
Theorem 19. Si 1 es un lenguaje lineal 1, puede ser reconocido por un au-
tomata celular unidireccional en tiempo real.
Proof. Sea ( = (T, , o, 1) una gramatica lineal y sea n = n
1
...n
n
`
+
. Dado
A , si A
+
a
I
...a

existe 1 tal que o (1


+
a
I
...a
1
y A 1 a

1)
o (1
+
a
I+1
...a

y A a
1
1 1), esta observacion es la base para disear un
automata celular unidireccional que reconozca 1(() .
Sean 1 _ i _ , _ :, denimos un conjunto (i, ,) _ de la siguiente
manera:
LXV
Para todo i _ : se dene
(i, i) = A : A n
I
1
(i, ,) =
1
(i, ,) '
2
(i, ,) .

1
(i, ,) = A : A 1 a

1 y 1 (i, , 1) .

2
(i, ,) = A : A a
I
1 1 y 1 (i + 1, ,) .
Note que n 1(() si y solo si o (1, :) . Sea / =(Q, T) el automata
unidireccional denido por:
1. Q =
_
T () `
2
_
' `.
2. El operador T esta denido por:
Al procesar el input n, el automata / hace lo siguiente
En el instante 1 y para todo i _ : la i-esima celda accede al estado
( (i, i) , (n
I
, n
I
))
Dado / _ 2 y para todo i _ : suponemos que el estado de la celda i-esima
justo antes de la /-esima iteracion es
( (i, i +/ 2) , (n
I
, n
I+|2
))
entonces si i +/ 1 _ : en el instante / la celda i-esima calcula
( (i, i +/ 1) , (n
I
, n
I+|1
))
usando su estado y el estado de su vecino a la derecha que es igual a
( (i + 1, i +/ 1) , (n
I+1
, n
I+|1
))
si i +/ 1 : la celda i-esima no cambia su estado.
Note que para el instante : la celda 1 ha calculado (1, :) . Sea (1, :) el
estado de la celda 1 en el instante :. Tenemos entonces que / acepta n si y
solo si o pertenece a
1
( (1, :)) si y solo si n 1(() .
Corollary 9. 1a| puede ser reconocido en tiempo real usando automatas celu-
lares unidireccionales.
Corollary 10. 1a| puede ser reconocido en tiempo real usando arreglos iterados
unidimensionales.
Denition 37. Un lenguaje 1 es 2-lineal si y solo si existe un lenguaje lineal
1 tal que 1 = 1 1.
Todo lenguaje lineal puede ser reconocido en tiempo real por un automata
celular unidireccional, es esto cierto de los lenguajes 2-lineales? La respuesta
es no, existen lenguajes 2-lineales que no pueden ser reconocidos por automatas
celulares unidireccionales [33]. Sea 1a|
(2)
el lenguaje 1a| 1a|, 1a|
(2)
puede
ser reconocido en tiempo real por un automata celular unidireccional?
Cerraremos esta seccion introduciendo (en aras de la completez) la denicion
de automata celular unidimesional y bidireccional (1-C para abreviar).
LXVI
Denition 38. Un automata celular es una quintupla / = (Q, `, #, , c) tal
que
1. Q es un conjunto nito (el conjunto de estados de /).
2. ` Q es el alfabeto de la maquina.
3. # (Q`) es un simbolo especial que se usa para determinar (marcar) el
inicio y el n del input.
4. _ Q es el conjunto de estados de aceptacion.
5. c : (Q' #)Q(Q' #) Q es la funcion de transicion de la maquina.
Todo 1-OC puede ser visto como un 1-C que no usa la bidireccionalidad
del ujo de informacion. Lo anterior implica que 1a| puede ser reconocido en
tiempo real por un 1-C.
15.1 La ubicacion de Pal en la jerarquia de Chomsky
Sea c( la coleccion de los lenguajes regulares, T(T/ la coleccion de los lengua-
jes libres de contexto deterministicos, |(T/ la coleccion de los lenguajes libres
de contexto no ambiguos, /(T/ la coleccion de los lenguajes lineales y (T/ la
coleccion de los lenguajes libres de contexto. Tenemos que:
1. c( $ T(T/ dado que 1a|
1
TT(/ c( y c( _ T(T/
2. c( $ /(T/ dado que 1a|
1
/T(/ c( y c( _ /(T/
3. T(T/ $ |(T/ dado que 1a| |(T/ T(T/ y T(T/ _ |(T/
4. /(T/ " T(T/ dado que 1a| /(T/T(T/.
5. T(T/, |(T/ " /(T/ dado que el lenguaje 1a|
1
1a|
1
es determinista (y
entonces no ambiguo) pero no es lineal.
6. Existen lenguajes que son a la vez lineales y ambiguos (i.e. /(T/ " |(T/).
Sea 1 el lenguaje regular denido por
1 =
_
n 0, 1
+
: [n[
1
= 1 (mod3) y [n[
0
= 2 (3)
_
donde [n[
I
denota el numero de ocurrencias del caracter i en la palabra n.
El lenguaje 1 1a| es lineal y es ambiguo.
Es interesante notar que en todas las separaciones discutidas en el paragrafo
anterior el lenguaje 1a| (y sus relativos) ha jugado un papel determinante.
Las separaciones 1 4 de la lista anterior han sido vericadas y discutidas
en profundidad en los capitulos anteriores, las separaciones 5 y 6 pueden ser
vericadas usando la caracterizacion de lenguajes lineales que introducimos a
continuacion.
Denition 39. Sea / un automata de pila y sea n un input de /. Si en el
instante t de una computacion de / en el input n, el automata / escribe en
la pila, pero en el instante t + 1 borra un caracter de la pila decimos que / ha
realizado un giro en esta computacion. Si en el instante t el automata borra en
la pila y en el instante t + 1 escribe en la pila decimos tambien que el automata
/ ha realizado un giro en esta computacion.
LXVII
Denition 40. Un automata de pila / es un automata de un giro (one-turn
pushdown automaton) si y solo si para todo n input de / y para toda computa-
cion de / en n, el automata / realiza a lo mas un giro.
Theorem 20. 1 es lineal si y solo si existe un automata de un giro que reconoce
a 1.
Sea (o/ la coleccion de lenguajes sensitivos al contexto (lenguajes que pueden
ser reconocidos mediante automatas linealmente acotados, esto es: usando maquinas
de Turing de una sola cinta y con la restriccion adicional de que las celdas que
pueden ser usadas durante la computacion son las celdas ocupadas por el input
al inicio de la la computacion) y sea T ( la coleccion de los lenguajes Turing
computables. La jerarquia de Chomsky es la jerarquia
c( ( T(T/ ( |(T/ ( (T/ ( (o/ ( T (
De todo el trabajo realizado hasta el momento es posible dar la ubicacion
exacta de 1a| en esta jerarquia:
1a| |(T/ /(T/(T(T/)
c
Hemos logrado caracterizar la complejidad intrinseca del problema 1a|? No
realmente, una tal caracterizacion requiere exhibir una clase de maquinas tal
que 1a| es el problema mas dicil de entre todos los problemas que pueden ser
resueltos por este tipo de maquinas, esto es: tal que 1a| es completo para la
clase de complejidad denida por este tipo de maquinas.
El lector desprevenido podra pensar que no existen problemas abiertos refer-
entes a las propiedades algoritmicas del lenguaje 1a|. El lector experimentado
sospechara que este no es el caso. Considere la siguientes preguntas: El lenguaje
1a| parece capturar lo especico de los lenguajes libres de contexto no deter-
mistas, no ambiguos y lineales? Es posible precisar la (muy vaga) armacion
anterior? La intuicion indica que 1a| es el lenguaje mas dicil entre aquellos
que pueden ser reconocidos usando automatas no ambiguos de un solo giro es
1a| completo para esta clase de lenguajes? Bajo que tipo de reduccion? Note
que 1a| 1 (i.e. 1a| puede ser resuelto usando espacio logaritmico). Lo ante-
rior implica que las reducciones que debemos considerar no son reducciones de
espacio logaritmico. Que tipo de reduccion, mas debil que espacio logaritmico,
podria ser util? En la literatura se han estudiado reducciones no uniformes de
profundidad acotada (constant depth reductions [47]), estas reducciones no pare-
cen ser de utilidad a la hora de estudiar la complejidad de 1a| dado que desde el
punto de vista no uniforme 1a| es trivial: el lenguaje 1a| puede ser reconocido
por una famila de circuitos de profundidad 2, i.e. 1a| C
0
[47].
Problema. Es 1a| completo para /(T/
sub(J)
, la clausura de /(T/ bajo
reducciones de espacio sublogaritmico?
16 Automatas cuanticos
Las maquinas cuanticas son maquinas de escala microcospica que intentan ex-
plotar la riqueza de los estados cuanticos (superposicion de estados). En esta
LXVIII
seccion nos limitaremos a estudiar el modelo de automatas cuanticos de estado
nito y de doble via (quantum two-way automata) los cuales, a diferencia de sus
analogos clasicos, pueden reconocer el lenguaje 1a|. Es importante sealar que
los automatas nitos de una sola via cuanticos solo pueden reconocer lenguajes
regulares por lo que son incapaces de reconocer el lenguaje 1a| [3].
Se sabe que los computadores cuanticos pueden ser exponencialmente mas
potentes que los computadores clasicos, esto es: se sabe que existen problemas,
los cuales pueden ser resueltos en tiempo polinomial con maquinas cuanticas
pero requieren tiempo exponencial sobre maquinas clasicas. Quizas el caso mas
conocido sea el del algoritmo cuantico de Simon [46], el cual permite resolver el
problema de subgrupo escondido (en el caso abeliano) en tiempo lineal. Se sabe
que este problema requiere tiempo !
_
2
n
2
_
en el caso clasico.
Por otro lado, el famoso algoritmo cuantico de Shor [45], el cual permite
factorizar enteros y calcular logaritmos discretos en tiempo polinomial (permite
romper los protocolos criptogracos mas conocidos!), evidencia que los com-
putadores cuanticos pueden llegar a tener importantes implicaciones practicas.
Recuerde que a la fecha todos los algoritmos clasicos conocidos que resuelven
estos problemas son de tiempo exponencial.
Recuerde que el no determinismo incrementa el poder de computo de los
automatas de pila, pero no lo hace en el caso de los automatas regulares, puede
lo cuantico incrementar el poder de computo al nivel de los automatas regulares?
Si y no, ya hemos mencionado que los automatas cuanticos de una via solo pueden
reconocer lenguajes regulares. Por otro lado, en esta seccion, estudiaremos el
modelo de automatas de doble via cuanticos y probaremos que estos si pueden
reconocer el lenguaje 1a|.
Sea Q un conjunto nito, una superposicion de Q-estados es un vector uni-
tario /
]Q]
, i.e. un vector [Q[-dimensional que satisface la ecuacion || = 1
(donde / es un campo adecuado que puede ser o R o C dependiendo de la
aplicacion en mente). Podemos identicar cada Q con un vector de la
base canonica de /
]Q]
, al vector asignado al elemento lo denotaremos con
el simbolo
j
, tenemos entonces que una superposicion es un vector

I]Q]
c
j

j
tal que

j]Q]
[c
j
[
2
= 1. Si el conjunto Q es el conjunto de estados de una
maquina cuantica, una superposicion de estados es una superposicion de los
estados posibles de la maquina, en el universo cuantico un objeto puede estar
simultaneamente en varios estados, en cada uno con diferentes amplitudes (no
probabilidades, las amplitudes pueden ser negativas o pueden ser complejas), la
unica condicion es que la suma de las normas de estas amplitudes sea igual a 1.
La evolucion de un sistema cuantico esta gobernada por un, o por un conjunto
de, operador(es) unitario(s). Recuerde que un operador unitario sobre /
]Q]
es un
endomorsmo lineal que preserva la norma. Es posible caracterizar los operadores
unitarios como los endomorsmos que satisfacen la ecuacion
l
1
= l
|
donde el superindice t denota la operacion de transposicion matricial.
LXIX
En el universo cuantico existen estados, operadores unitarios y mediciones.
Una medicion ortogonal es un conjunto 1
I

In
de operadores lineales que sat-
isface las condiciones:
1. 1
I
= 1
|
I
.
2. 1
2
I
= 1
I
.
3. 1
I
1

= 0, si i ,= ,.
4.

1
I
= 1.
Un conjunto 1
I

In
es una medicion ortogonal sobre el espacio /
]Q]
si y
solo si existe una descomposicion ortogonal de /
]Q]
, digamos \
1
... \
n
tal
que para todo i _ : se tiene que 1
I
es la proyeccion ortogonal de /
]Q]
en \
I
(medir es poyectar desde un espacio complejo, que no podemos visualizar, en un
espacio de baja complejidad).
Dada una supersposicion podemos aplicar a un operador unitario l y
obtener una nueva superposicion l o podemos aplicarle una medicion ortogonal
1
I

In
. El principio de incertidumbre de Heisenberg indica que una superposi-
cion cuantica no puede ser observada directamente, tan solo puede ser medida, y
al ser medida se transforma en una nueva superposicion que no podemos prede-
cir directamente. Al aplicar una medicion 1
I

In
a una superposicion , ocurre
lo siguiente:
1. Para cada i 1, ..., : el resultado de la medicion es i con probabilidad
|1
I
|
2
.
2. Si el resultado de la medicion es i, la superposicion se transforma en
1iu
]1iu]
.
Denition 41. Un automata cuantico de doble via es una tupla
/ = (Q, o,
0
, :
0
, 6, c, o
occ
, o
:t
)
tal que:
1. Q es un conjunto nito, el conjunto de estados cuanticos de /.
2. o es un conjunto nito, el conjunto de estados clasicos de /.
3.
0
Q es el estado cuantico inicial.
4. :
0
o es el estado clasico inicial.
5. o
occ
' o
:t
o es el conjunto de estados de parada. Si la maquina accede
a un estado de parada la computacion se detiene. o
occ
es el conjunto de
estados de aceptacion y o
:t
es el conjunto de estados de rechazo.
6. 6 determina la evolucion de los estados cuanticosde la maquina. En un
instante de la computacion el estado cuantico de la maquina es una super-
posicion

c
j

j
. Dada (:, o) (o (o
occ
' o
:t
)) ` una conguracion
clasica de la maquina 6(:, o) es o un operador unitario o una medicion or-
togonal que se aplica, en ambos casos, al estado cuantico

c
j

j
. Los estados
cuanticos son elementos de C
]Q]
y usamos el conjunto de simbolos
j

jQ
para denotar la base canonica de C
]Q]
.
LXX
7. c determina la evolucion de los estados clasicos y el movimiento de la cabeza.
Si 6(:, o) es un operador unitario, entonces c (:, o) es un elemento de o
, , , si 6(:, o) es una medicion entonces c (:, o) es una funcion del
conjunto de resultados posibles de la medicion en o , , (note que
c, al depender de las mediciones, es una funcion de transicion probabilista).
Dado n = n
1
...n
n
un input de /, la computacion de la maquina procede
de la siguiente manera. En el instante cero la cinta de la maquina contiene
la palabra 1n
1
...n
n
1 que ocupa las celdas 0, ..., : + 1 , los simbolos 1 y 1
son simbolos especiales que indican el inicio y el n del input. En este mismo
instante, el instante cero, la cabeza de la maquina esta en la celda cero, el estado
cuantico es
j0
y el estado clasico es :
0
. La cabeza de la maquina no puede
pasar a la izquierda de la celda ocupada por el simbolo 1 y no puede pasar a la
derecha de la celda ocupada por el simbolo 1. En cada transicion se transforma
primero el estado cuantico de acuerdo a 6, y dependiendo del resultado de esta
transformacion la funcion c determina la evolucion del estado clasico y de la
cabeza lectora.
Dado n, el simbolo Pr
/
(n) denota la probabilidad de que la maquina acceda
a un estado de aceptacion. Es posible que un automata de doble via no pare al
procesar un input, diremos que / es un automata correcto si y solo si para todo
n la probabilidad de que / pare, al procesar el input n, es igual a 1. Dado un
automata correcto de doble via cuantico, digamos /, diremos que / acepta el
lenguaje 1 con error - si y solo si ocurre lo siguiente
n 1 implica que Pr
/
(n) = 1.
n , 1 implica que Pr
/
(n) _ -.
En lo que sigue probaremos que dado - 0 existe un automata cuantico de
doble via / (y correcto) que reconoce el lenguaje 1a| con error -. El conjunto
de estados cuanticos del automata / es el conjunto
0
,
1
,
2
, la funcion 6
asociada a / depende de los operadores unitarios
l
0
=
_
_
4
5
3
5
0

3
5
4
5
0
0 0 1
_
_
y l
1
=
_
_
4
5
0
3
5
0 1 0

3
5
0
4
5
_
_
Y la medicion ortogonal es el conjunto
0
,
1
, donde
0
es la proyeccion
ortogonal sobre el espacio
j0
y
1
es la proyeccion ortogonal sobre el espacio

j1
,
j2
.
Sean A
0
y A
1
las matrices 5l
0
y 5l
1
(respectivamente), sea ) : Z
3
Z la
funcion
) (n) = 4n
1
+ 3n
2
+ 3n
3
y sea 1 Z
3
el conjunto
_
n Z
3
: n
1
mod5 ,= 0, ) (n) mod5 ,= 0 y n
2
n
3
mod5 = 0
_
El lema a continuacion es un excelente ejercicio de algebra lineal cuya prueba
dejaremos al lector (el lector interesado puede consultar la referencia [3]).
LXXI
Lemma 16. Sea n un elemento de Z
3
, se tiene lo siguiente
1. Si n 1 entonces A
0
n y A
1
n pertenecen a 1.
2. Si existen , n Z
3
tales que n = A
0
= A
1
n entonces n no pertenece a 1.
3. Si n = 1
1
1
...1
1
n
7
n
...7
1
c
1
y para todo i _ : se tiene que 1
I
, 7
I
A
0
, A
1
,
entonces
n
2
2
+n
2
3
=
_
0 si para todo i _ : se tiene que 1
I
= 7
I
25
n
en caso contrario
Theorem 21. Dado - 0 existe un automata cuantico de doble via cuantico y
correcto, llamemoslo /, que reconoce el lenguaje 1a| con error -.
Proof. El automata / esta denido de la siguiente manera.
1. La computacion de / en el input n = n
1
...n
n
inicia con el automata en el
estado cuantico
j0
= c
1
= (1, 0, 0) , el automata recorre la cinta de izquierda
a derecha hasta encontrar el simbolo 1. En esta etapa, al leer un simbolo r
I
,
el automata / aplica al estado cuantico actual el operador l
|(I)
denido
por
l
|(I)
=
_
l
0
si n
I
= 0
l
1
en caso contrario
Al encontrar el simbolo 1 la cabeza del automata se desplaza al extremo
izquierdo de la cinta de entrada.
2. En la segunda etapa, el automata recorre nuevamente la cinta de izquierda
a derecha, al leer el caracter n
I
aplica al estado cuantico actual el operador
l
1
|(I)
denido por
l
1
|(I)
=
_
l
1
0
si n
I
= 0
l
1
1
en caso contrario
Note que al nalizar la segunda etapa el estado cuantico es igual a
l
1
|(n)
...l
1
|(1)
l
|(n)
...l
|(1)
c
1
= 25
n
A
1
|(n)
...A
1
|(1)
A
|(n)
...A
|(1)
c
1
y note que para todo i _ : se tiene l
|(I)
= l
|(nI)
si y solo si r es un
palindromo, entonces de acuerdo al lema 16 se tiene que
|
1
()|
2
=
_
0 si n es un palindromo
25
2n
en caso contrario
3. Lo anterior sugiere que es un buen momento para aplicar una medicion, al
aplicar una medicion al estado se obtiene lo siguiente:
Si n es un palindromo el resultado de la medicion es 0 con probabilidad
1.
LXXII
Si n no es un palindromo, el resultado de la medicion es igual a 0 con
probabilidad |
1
()|
2
o igual a 1 con probabilidad |
2
()|
2
25
2n
.
En este punto, al terminar la primera ronda, el automata / ya dis-
tingue entre palindromos y no palindromos, a los palindromos los acepta
con probabilidad 1 y a los no palindromos los rechaza con probabilidad
mayor que 25
2n
, probabilidad que desafortunadamente es negligible
para : grande (la robabilidad de rechazo depende de la longitud del in-
put), que puede hacerse? La unica solucion a la vista es amplicar esta
probabilidad de rechazo.
Si el resultado de la medicion es 1, el automata para y rechaza el input. Si el
resultado de la medicion es 0, el estado cuantico, despues de la medicion, se
transforma en
t0(j)
]t0(j)]
= c
1
. Si el estado clasico de la maquina era igual a j,
el estado clasico se transforma despues de la medicion en (j, 0) (suponemos
que o = ' (0, 1) , donde es un conjunto nito adecuado).
4. La cabeza de la maquina se desplaza de derecha a izquierda hasta encontrar
el caracter 1, durante el proceso realiza lo siguiente:
Sea / _ max log (25) , log (-) , al leer cada uno de los caracteres la
maquina simula la generacion de / bits aleatorios: sea =
1
_
2
c
1
+
1
_
4
(c
2
+c
3
) ,
la maquina emplea la supersposicion como un estado cuantico auxiliar y
realiza / mediciones sobre , sea n
I
el resultado de la i-esima medicion, note
que
Pr [n
I
= 0] =
1
2
y Pr [n
I
= 1] =
1
2
Si al realizar la simulacion se obtiene al menos un 0, el estado clasico de la
maquina pasa a ser (j, 1) , en caso contrario el estado clasico se mantiene
igual a (j, 0) . Si al leer el caracter 1 el estado clasico es igual a (j, 0) la
maquina acepta el input, en caso contrario repite los pasos 1 a 4.
Suponga que n no es un palindromo, el estado cuantico de la maquina al
nal de una ronda es igual a (j, 0) (para algun j ) con probabilidad menor
o igual que 2
|(n)
- por lo que podemos asegurar que un no palindromo sera
aceptado con probabilidad menor que -, esto es: la maquina reconoce 1a| con
error -. Por otro lado, es imposible que la maquina rechaze un palindromo, y es
facil probar que si n es un palindromo la probabilidad de que la maquina pare
y acepte n es igual a 1, esto es: el automata / es correcto.
Theorem 22. No existe un automata cuantico de doble via que reconozca el
lenguaje 1a| en tiempo real.
Proof. Suponga que existe un automata cuantico de doble via que reconoce el
lenguaje 1a| en tiempo real, sea /un tal automata. Como 1a| es un lenguaje no
trivial, / debe leer la totalidad del input que se encuentre procesando. Ahora,
dado que / es un automata de tiempo real, / es un automata de una sola via.
Tenemos entonces que 1a| es regular, (todo lenguaje reconocido por automata
cuantico de una sola via es regular [3]), pero esto contradice el corolario 1.
LXXIII
Remark 13. Es importante notar que no es posible acotar el tiempo de computo
del automata /, lo mas que podemos decir es que / es un automata correcto
(para con probabilidad 1). Existe un automata cuantico de doble via que re-
conozca 1a|, que siempre pare y cuyo tiempo de computo este acotado por una
funcion recursiva? Existe uno de tiempo lineal?
17 Taller de comprension de lectura: redes neuronales
articiales
Las redes neuronales articiales son modelos de computacion inspirados en las re-
des neuronales biologicas (bioinspiradas). Las redes neuronales articiales estan
constituidas por neuronas (unidades basicas de computacion) conectadas entre
si por synapsis (arcos con pesos) determinando con ello una red (un digrafo
aciclico).
Las redes neuronales articiales pueden ser usadas para reconocer lenguajes,
aunque sus aplicaciones mas importantes (mas estudiadas) estan relacionadas
con el reconocimiento de patrones y el aprendizaje de maquinas (machine learn-
ing): si permitimos que los pesos asignados a las diferentes aristas (synapsis de
la red) se modiquen a lo largo de la computacion. La red, que es un algoritmo,
se transforma al adaptar sus pesos en una red (algoritmo) que representa mejor,
o que permite procesar de mejor manera, los datos recibidos. Nosotros no pro-
fundizaremos en este topico, limitandonos a estudiar las redes neuronales como
dispositivos computacionales que pueden ser usados para reconocer lenguajes.
Denition 42. Una red neuronal es una quintupla A = (G, T, (, J, O) tal que
1. G es un digrafo.
2. T es una coleccion )
u

u\ (c)
de funciones de R
1v
en R donde 1
u
es el
numero de ancestros de (i.e. el numero de nodos n para los cuales la pareja
(, n) pertenece a 1 (G) ,el conjunto de aristas de G).
3. C es un vector real
_
c
(u,u)
_
(u,u)J(c)
.
4. J \ (G) es la coleccion de los nodos de entrada, que son aquellos vertices
para los cuales se tiene que 1
u
= 0. Es importante notar que J puede ser
vacio.
5. O \ (G), es la coleccion de los vertices de salida, que son aquellos vertices
que no tienes sucesores (i.e. O si no existe n \ (G) tal que (n, )
1 (G)). Es importante sealar que el conjunto O tambien puede ser vacio.
En un instante dado de la computacion, cada uno de los vertices de G (cada
una de las neuronas de la red) esta en un estado determinado, el cual es un
numero real. Sea una neurona, sean
1
, ...,
|
sus ancestros y sean r, r
1
, ..., r
|
los estados, en el instante t, de las neuronas ,
1
, ..,
|1
y
|
respectivamente.
En el instante t+1 la neurona estara en el estado )
u
_
c
(u1,u)
r
1
+... +c
(u
k
,u)
r
|
_
.
Diremos que la red A = (G, T, (, J, O) es una red lineal si y solo si para
todo \ (G) existe un real T
u
tal que )
u
(r
1
, ..., r
|
) es igual a
:iq:
_
T
u
+c
(u1,u)
r
1
+... +c
(u
k
,u)
r
|
_
LXXIV
donde :iq:(A) es la funcion signo denida por
:iq:(A) =
_
1 si A _ 0
0 si A < 0
Si A = (G, T, (, J, O) es una red lineal, diremos que es un perceptron si y
solo si [O[ = 1 y el grafo G es un grafo estraticado, esto es: si podemos partir a
\ (G) en un numero nito de subconjuntos disyuntos 1
0
, ..., 1

, que llamaremos
estratos, y tales que: 1
0
= J, 1

= O y dado i < j si 1
I
y (, n) 1 (G)
entonces n 1
I+1
.
Dado A = (G, T, (, J, O) un perceptron, diremos que A tiene / entradas
si y solo si [J[ = /. Podemos usar un perceptron con / inputs para clasicar
cadenas de longitud /. Dada r = (r
1
, ..., r
|
) una cadena (de bits o de numeros
reales) podemos usar A, que tiene / inputs, para procesar el input r. Suponemos
que las / neuronas en J estan ordenadas, sea
1
, ...,
|
la lista ordenada de tales
neuronas. En el instante cero la neurona
I
, la i-esima neurona de entrada, esta
en el estado r
I
. Todas las otras neuronas son inicializadas en el estado 0. El
estado de una neurona de entrada no cambiara a lo largo de la computacion, en
tanto no recibe informacion, mientras que los estados de todas las otras neuronas
se iran modicando a medida que reciben informacion de sus ancestros.
Sea o el unico elemento de O. Diremos que el perceptron A acepta el input
r si y solo si el estado al que accede o, en el instante j, es igual a 1.
Denition 43. Una secuencia uniforme de perceptrones es una secuencia A
I

I1
tal que para todo i _ 1 se tiene que A
I
es un perceptron con exactamente / en-
tradas.
Denition 44. Dada

A = A
I

I1
una secuencia uniforme de perceptrones,
el lenguaje reconocido por

A, que denotaremos con el simbolo 1
_

A
_
, es el
lenguaje
_
n 0, 1
+
: A
]u]
acepta n
_
Sea Tc la coleccion de todos los lenguajes que pueden ser reconocidos
usando una secuencia uniforme de perceptrones, que forma tienen los lenguajes
en Tc?
Denition 45. Dada

A = A
I

I1
una secuencia uniforme de perceptrones,
diremos que esta secuencia tiene profundidad i si y solo si todas las redes en la
secuencia tienen a lo mas i + 1 estratos.
Dado i usaremos el simbolo Tc
I
para denotar la clase de los lenguajes
que pueden ser reconocidos usando una secuencia uniforme de perceptrones de
profundidad i.
Que forma tienen los lenguajes en Tc
I
? Que forma tienen los lenguajes
en Tc
1
?
LXXV
Denition 46. Diremos que un lenguaje 1 es linealmente separable si y solo si
para todo i _ 1 existe n
I
R
I
y existe c R tal que
n
_
1 0, 1
I
_
si y solo si n, n
I
+c 0
donde n, n
I
denota el producto punto de n
I
y n denido por n
I
[1] n[1] +
... +n
I
[i] n[i] .
Se sigue, inmediatamente de la denicion, que
Theorem 23. 1 Tc
1
si y solo si 1 es linealmente separable.
Por otro lado es posible probar (vea [2]) que dado un lenguaje 1 se tiene que
1 Tc
2
: todo lenguaje, incluso los no computables, puede ser reconocido
empleando un perceptron de profundidad 2! Este resultado, soprendente, no
trivializa la nocion de computabilidad, tenga en cuenta que en la denicion de
perceptron permitimos el uso de pesos y umbrales no computables.
El trabajo que nos corresponde desarrollar consiste en probar que 1a| ,
Tc
1
, para ello es suciente probar que 1a| no es linealmente separable. Con-
sidere los siguientes problemas
Problema 1. Pruebe que el lenguaje 1a| no es linealmente separable.
Problema 2. Sea 'a, el lenguaje denido por
_
n : [i _ [n[ : n[i] = 1[ _
[n[
2
_
pruebe que 'a, pertenece a Tc
1
.
Problema 3. Decida si el lenguaje 1aritj denido por
n : [i _ [n[ : n[i] = 1[ = 0 (mod2)
pertenece a la clase Tc
1
.
Problema 4. Decida si alguna de las inclusiones
c( _ Tc
1
o Tc
1
_ c(
es valida.
Maquinas de Turing multicinta: el teorema de
Galil
En esta seccion introduciremos el modelo de maquinas de Turing multicinta.
Dado / _ 2 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 us-
adas como espacio de trabajo. Adicionalmente la maquina cuenta con /-cabezas
lecto-escritoras (una por cada cinta) que se mueven de manera independiente.
Denition 47. Una maquina de Turing con / cintas es una sextupla
(Q, 1,
0
, 1, c, )
tal que:
1. Q es un conjunto nito, el conjunto de estados de la maquina.
2. 1 es un conjunto nito, el alfabeto de la maquina que satisface `' _ 1.
3.
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 (1)
|
Q en (1)
|
Q
, ,
|
.
6. 1 Q y si el estado interno de la maquina pertenece a la maquina
para.
Es posible establecer los siguientes resultados
Dada / una maquina con /-cintas, existe /
+
una maquina de una sola
cinta que simula /. Adicionalmente se tiene que para todo : N se sat-
isface la desigualdad T
/
(:) _ / (T
/
(:) +: + 2/)
2
(esto es: T
/
(:)
O
_
(T
/
(:))
2
_
)
El lenguaje 1a| puede ser decidido en tiempo lineal (incluso en tiempo real!)
por una maquina multicinta.
Tenemos entonces que la adicion de hardware (/1 cintas adicionales) incre-
menta el poder de computo pero de una manera modesta. Lo incrementa porque
permite decidir algunos lenguajes computables de manera mas eciente. El in-
cremento en poder de computo es modesto dado que las nuevas maquinas son
capaces de decidir exactamente los mismo lenguajes y ademas porque el incre-
mento en eciencia (aceleramiento, speed up) es de caracter polinomial, y mas
especicamente cuadratico.
Theorem 24. El lenguaje 1a| puede ser decidido en tiempo lineal por una
maquina multicinta.
LXXVII
Proof. Sea / la maquina de dos cintas denida por:
Al comienzo de la computacion, el input n aparece escrito en el extremo
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 n tiene longitud :. En la primera etapa del com-
puto las dos cabezas se desplazan : posiciones a la derecha. Mientras la
cabeza de la cinta de trabajo se mueve sobre su cinta va escribiendo los car-
acteres de n (que la cabeza de la cinta de entrada esta leyendo), esto es: en
la primera etapa simplemente se copia el input en la cinta de trabajo.
En la segunda etapa del computo la cabeza de la cinta de entrada se desplaza
al extremo izquierdo de su cinta.
En la tercera etapa las dos cabezas se mueven de manera simultanea, la
cabeza de la cinta de entrada se mueve de izquierda a derecha leyendo el
input, la cabeza de trabajo se mueve de derecha a izquierda. Las dos cabezas
van leyendo los contenidos de sus cintas. La cabeza de trabajo lee a n de
derecha a izquierda, mientras que la cabeza de la cinta de entrada lee a n de
izquierda a derecha. La maquina compara paso a paso los caracteres leidos
por cada una de las cabezas. Si en algun 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|. Adicional-
mente es facil convencerse de que el tiempo de computo de ' es 3:.
18 Reconocimiento de palindromos en tiempo real
usando maquinas multi-cinta.
En esta seccion estudiaremos el teorema de Galil-Slisenko [17] y [48] el cual arma
que 1a| puede ser reconocido en tiempo real usando maquinas multicinta.
Un problema algoritmico es un problema online, si al procesar una cualquiera
de sus instancias estamos obligados a procesar cada uno de sus caracteres una
vez estos son recibidos (leidos), y no podemos aplazar la tarea de procesarlos
(usar la informacion que nos proporcionan). Note que esto ultimo siempre es
posible si la cabeza lectora de la cinta de entrada es bidireccional: ignoramos
el caracter, seguimos adelante, nos devolvemos y usando informacion aposteri-
ori (caracteres a la derecha) lo procesamos. Tetris, el problema consistente en
apilar de la mejor manera las piezas que van apareciendo en pantalla, es un prob-
lema online: debemos acomodar cada una de las piezas (caracteres) cuando estas
aparecen en pantalla, no podemos seguir adelante, devolvernos y reacomodarlas.
La nocion de problema online sugiere la nocion de maquina online.
Denition 48. Dada / una maquina de Turing con una cinta de entrada de
solo lectura y /1 cintas de trabajo, diremos que / es una maquina online si y
solo si la cabeza lectora de la cinta de entrada solo puede moverse de izquierda a
LXXVIII
derecha, si por el contrario la cabeza lectora de la cinta de trabajo puede moverse
en las dos direcciones diremos que la maquina es o-ine.
Remark 14. No todo problema es online (no todo problema puede ser resuelto
online). considere por ejemplo la funcion 1 : 0, 1
+
N denida por
1 (n)
I
= 1 si y solo si i es le centro de un palindromo incial de n
Es claro que determinar el i-esimo bit de 1 (n) , (i.e. el bit 1 (n)
I
) implica
leer el segmento n[1...2i 1] de n.
La nocion informal de tiempo real que hemos mencionado hasta el momento
corresponde a lo siguiente: un problema 1 puede ser resuelto en tiempo real si y
solo si existe un automata que resuelve 1 y tal que para todo n `
+
se satisface
la desigualdad
t
/
(n) _ [n[
La nocion de tiempo real que se usa en la literatura es un poco mas exible,
(pero esencialmente equivalente).
Denition 49. (Tiempo real)
1. Dada / una maquina online, dada n `
+
y dado a `, el simbolo
.t
/
(n, a) denota el numero de transiciones que realiza la maquina / justo
despues de leer el ultimo caracter de n y antes de leer el caracter a.
2. Una maquina online / es una maquina de tiempo real si y solo si existe c
tal que para todo n `
+
y para todo a ` se tiene que .t
/
(n, a) _ c.
3. Un problema 1 es resoluble en tiempo real si y solo si existe una maquina
de tiempo real que lo resuelve.
La denicion de maquina online implica que para todo n `
+
se satisface
la desigualdad t
/
(n) _ c [n[ , la cual es menos exigente que la desigualdad
asociada a la nocion intuitiva de tiempo real. El teorema del aceleramiento lineal
(linear speed up, consulte la referencia [40]) implica que toda maquina online
/ de tiempo real puede ser transformada en una maquina A que satisfaga la
desigualdad
t
A
(n) _ [n[
esto es: la nocion intuitiva de tiempo real es equivalente a la nocion tecnica de
tiempo real que acabamos de introducir. Todo problema que pueda ser resuelto
en tiempo real, de acuerdo a la segunda denicion, puede ser resuelto en tiempo
real de acuerdo a la primera denicion (supuestamente mas exigente).
Sea ) : `
+
0, 1
+
una funcion computable, diremos que ) es una funcion
online si y solo si satisface:
1. Para todo n `
+
se tiene que [) (n)[ = [n[ .
2. Para todos n, n `
+
si n @ n se tiene que ) (n) @ ) (n) o, lo que es lo
mismo, para todos n, n `
+
se tiene que ) (nn) = ) (n) ) (n) .
LXXIX
Las dos condiciones anteriores implican que si / es una maquina online que
calcula ), la maquina imprimira el caracter i-esimo del output justo despues de
leer el i-esimo caracter del input.
Sea
ol
: 0, 1
+
0, 1
+
la funcion denida por
para todo i _ [n[ se tiene que
_

ol
(n)
_
I
= 1 si y solo si n
1
...n
I
1a|
Galil probo en [17] que la funcion
ol
puede ser calculada en tiempo real,
este resultado y parte de su prueba es el tema de esta seccion.
18.1 Algoritmos predecibles
Sea ) : `
+
0, 1
+
una funcion online y sea /
}
: 0, 1
+
N la funcion
denida por
/
}
(r) = min
_
[.[ : a `
_
) (r.a) = ) (r) 0
]:]
1
__
Denition 50. Dado / un algoritmo que calcula la funcion ) decimos que /
satisface la condicion de predictibilidad si y solo si existe una constante c tal
que:
1. .t
/
(n, a) _ c implica que ) (na) = ) (n) 0.
2. ./
}
(n, a) _
.|
M
(u,o)
c
2.
Galil prueba en [18] que todo algoritmo predecible puede ser transformado
en un algoritmo de tiempo real. Haremos un fuerte uso de este resultado al
probar que
ol
puede ser calculada en tiempo real. Es importante comentar
que el trabajo desarrollado por Galil en [17] es esencialmente una simplicacion
del trabajo previamente realizado por Slisenko [?] quien probo, a lo largo de
172 densas paginas, que
ol
puede ser calculada en tiempo real, la prueba de
Slisenko es dicil y directa (Slisenko exhibe un algoritmo de tiempo real que
calcula
ol
), la prueba de Galil es indirecta y mucho mas simple (Galil exhibe
un algoritmo predecible que calcula
ol
).
En lo que sigue estudiaremos la prueba del siguiente teorema.
Theorem 25. Existe un algoritmo predecible que calcula la funcion
ol
.
De este teorema podemos obtener como corolario el principal resultado de
este capitulo.
Corollary 11. 1a| puede ser reconocido en tiempo real usando maquinas mul-
ticinta.
LXXX
19 El algoritmo predecible de Galil-Slisenko
Intentaremos mostrar, en esta seccion, que existe una maquina de Turing mul-
ticinta de tiempo real que reconoce el lenguaje 1a|. No exhibiremos una tal
maquina, exhibiremos una maquina de una sola cinta, llamemosla /, con mul-
tiples cabezas asociadas a esta unica cinta y tal que:
1. Dado n = n
1
...n
n
0, 1
+
y dado n
+
= n
1
cn
2
c....cn
n
(con c , 0, 1),
si j = c
1
...c
2n1
0, 1
+
es el output de / en el input n
+
entonces dado
i = 2:1 _ 2: 1 se tiene que c
I
= 1 si y solo si n[1...:] 1a|.
2. / es una maquina predecible.
Lo primero que debemos comentar es que la existencia de una tal maquina
es suciente para garantizar la existencia de una maquina multicinta de tiempo
real que calcule la funcion
ol
. Esto es asi porque:
1. Fischer, Meyer y Rosenberg probaron que una maquina de una sola cinta y
/ cabezas puede ser simulada en tiempo real por una maquina multicinta
standard con 11/ 9 cintas [13]. Posteriormente Leong y Seiferas probaron
que 4/ 3 cabezas son sucientes [35].
2. El blow up en el tiempo de computo generado por transformar el input n en
la palabra n
+
, que es dos veces mas larga, puede ser eliminado usando las
tecnicas de linear speed up ya mencionadas.
3. El teorema de Galil arma que predictibilidad y tiempo real son conceptos
equivalentes.
Sea n = n
1
...n
n
0, 1
+
y sea n
+
= n
1
...n
2n1
, suponga que i , /
satisface lo siguiente:
1. , i = / ,.
2. La palabra n[i.../] es un palindromo.
3. La palabra n[i 1.../ + 1] no es un palindromo.
Suponga ademas que para todo | _ , 1 ya se ha determinado si la posicion
| es o no es el centro de un palindromo inicial (esto es: el centro de un segmento
inicial de n de longitud impar y que pertenece a 1a|). El item 3 implica que /
no es el centro de un palindromo inicial, los items 2 y 3 implican que i 1 y
/ + 1 son posiciones impares. Por otro lado, todo segmento inicial de longitud
par no es un palindromo (el caracter inicial pertenece a 0, 1 , mientras que el
caracter nal es igual a c , 0, 1). Esto es: todos los palindromos iniciales de n
+
tienen longitud impar y estan en correspondencia biunivoca con los palindromos
iniciales de n (la biyeccion consiste en borrar las cs en los palindormos inciales
de n
+
).
Suponga ahora que n = n
|+1
n
|
n
|1
...n
l+1
n
l
es el palindromo inicial mas
largo en la palabra n
|+1
n
|
n
|1
...n
I
n
I1
. Dado que / + 1 e i 1 son impares,
todo palindromo inicial en n
|+1
n
|
n
|1
...n
I
n
I1
es de longitud impar y por lo
tanto tiene centro. Sea r =
|+1+l
2
el centro de n, note que , r _ / + 1
(r = / +1 si y solo si el unico palindromo inicial de n
|+1
n
|
n
|1
...n
l+1
n
l
es n
|+1
cuyo centro es la posicion / + 1).
LXXXI
Lemma 17. Para todo | , + 1, ..., r 1 se tiene que | no puede ser el centro
de un palindromo incial de n
+
.
Proof. Suponga que existe | , + 1, ..., r 1 tal que | es la posicion centro de
un palindormo incial de n
+
, en este caso la palabra n
|+1
n
|
...n
2l|
n
2l|1
seria
un palindromo inicial de n
|+1
n
|
n
|1
...n
I
n
I1
mas largo que n, lo cual es una
contradiccion.
El lema anterior es el nucleo combinatorio del algoritmo de Galil-Slisenko, el
cual pasamos a describir a continuacion.
19.1 Una version ingenua del algoritmo
Sea n la palabra que necesitamos clasicar, bien sea como palindromo o bien
como no palindromo. Sea n
+
el input de /. La maquina / cuenta, para em-
pezar, con al menos tres cabezas que llamaremos izquierda, central y derecha.
Sea t un instante durante la computacion de / en el input n
+
, en el instante t
las cabezas de / ocupan posiciones 1 C 1, satisfaciendose lo siguiente:
1. C 1 = 1 C.
2. La palabra n[1...1] es un palindromo.
La cabeza lectora de / es la cabeza derecha, cuando esta cabeza ocupa la
posicion 1, la maquina / ha calculado los caracteres j
1
, ..., j
1
del output. En el
instante t + 1 la cabeza izquierda se desplaza una posicion a la izquierda, hasta
1 1, mientras que la cabeza derecha se desplaza una posicion a la derecha,
hasta 1+1. La maquina / verica si los caracteres leidos por estas dos cabezas
son iguales, en caso de serlo / imprime
j
1+1
=
_
1 si 1 1 = 1, i.e. la cabeza izquierda ocupa la celda inicial
0, en otro caso
Remark 15. Note que si 11 = 1 la palabra n
1
...n
1+1
es un palindromo inicial.
Remark 16. Para que la vericacion exigida en el paragrafo anterior (11 = 1,
i.e. la cabeza 1 ocupa la celda inical) pueda realizarse supondremos que la celda
inicial tiene una marca especial.
Supongamos ahora que los caracteres leidos por 1 y 1 dieren, tenemos
entonces que la posicion ocupada por C no puede ser el centro de un palindromo
incial. En este caso la maquina / simula el algoritmo de Fischer y Paterson
[14], (el algoritmo de Fisher Paterson permite calcular el palindromo inicial, no
trivial, mas corto contenido en una cadena n, vea el apendice en el siguiente
capitulo) en el input n
1+1
n
1
...n
J
n
J1
. Existe 1 0 tal que la simulacion del
algoritmo 11 (usaremos el simbolo 11 para denotar el algoritmo de Fischer y
Paterson) por parte de la maquina /, en el input n
1+1
n
1
...n
J
n
J1
, consta de
a lo mas 1 (1 1) transiciones. Tras a lo mas 1 (1 1) transiciones / habra
calculado n, el palindromo inicial mas largo contenido en n
1+1
n
1
...n
J
n
J1
, asi
LXXXII
como el centro de n que llamaremos 1. Resulta que 1 es el punto mas cercano a
C, por la derecha, que podria ser el centro de un palindromo inicial. La maquina
/ deja la cabeza lectora (derecha) en la posicion 1+1, mueve la cabeza central
a la posicion 1 y mueve a la cabeza izquierda hasta la celda 21 1 1.
El procedimiento descrito en los paragrafos anteriores es el nucleo del al-
goritmo de Galil-Slisenko. Es facil convencerse de que el algoritmo es correcto,
esto es: dado n
+
= n
1
...n
2n1
, dado j
1
...j
2n1
el output de / en n
+
y dado
i _ 2: 1, se tiene que j
I
= 1 si y solo si n[1...i] es un palindromo.
Queda pendiente vericar que la maquina / es predecible. Consideremos
tres casos:
1. (match) n
J1
= n
1+1
y 1 1 1. En este caso la maquina imprime 0 y su
cabeza lectora (la cabeza 1) avanza una posicion a la derecha. Note que en
este caso .t (n
1
...n
1+1
, n
1+2
) = 1.
2. (missmatch) n
I1
,= n
|+1
. En este caso la maquina simula la computacion
de 11 en el input n
1+1
n
1
...n
J
n
J1
, encuentra el siguiente centro tenta-
tivo y desplaza las cabezas central e izquierda, entonces imprime 0 y las
cabezas derecha e izquierda se desplazan una posicion. Note que en este caso
.t (n
1
...n
1+1
, n
1+2
) = O(1 1) .
3. (palindromo) n
J1
= n
1+1
y 1 1 = 1. Este, al igual que el caso anterior,
puede ser un caso problematico (i.e. un caso en el que .t (n
1
...n
1+1
, n
1+2
)
no esta acotado por una constante). Podemos considerar este caso como
un caso especial del anterior, recuerde que nosotros necesitamos marcar la
celda inicial, esto podemos hacerlo usando el alfabeto 1 = ` ' (` 0) y
deniendo n
+
como (n
1
, 0) cn
2
cn
3
c...cn
n
. Note que, de esta manera, siem-
pre que la cabeza 1 alcanze la celda 1 ocurrira un missmatch, un missmatch
especial que la maquina podra reconocer gracias a la componente 0 del car-
acter que esta leyendo a la izquierda. En este caso, la maquina imprime 1
(esto es lo especial) y realiza el mismo trabajo que en el caso anterior.
La version ingenua del algoritmo de Galil-Slisenko, aqui expuesta, no es un
algoritmo predecible. El problema es que en el caso missmatch debemos simular
el algoritmo 11, y es posible que el tiempo empleado en esta simulacion no pueda
ser acotado linealmente con respecto a la distancia existente entre la posicion
1, de la cabeza derecha, y el extremo nal del siguiente palindromo inicial (es
posible que no se satisfaga la condicion 2 en la denicion de algoritmo predecible).
Note por otro lado que las cabezas izquierda y central deben ser desplazadas una
distancia menor o igual que la existente entre la cabeza derecha y el extremo
nal del siguiente palindromo inicial. Tenemos entonces que, el unico problema
que presenta la version ingenua del algoritmo de Galil es la necesidad de simular
11 en cada missmatch. Que podemos hacer? Quizas no simular 11 en cada
missmatch e intentar usar la informacion obtenida en las anteriores simulaciones.
19.2 Una version mas cuidadosa: rompiendo cadenas.
El algoritmo de Galil-Slisenko se basa fuertemente en la nocion de cadena (retic-
ulo cohesivo) introducida por Slisenko [?]. Las cadenas son los objetos combi-
LXXXIII
natorios que permiten guardar informacion referente a las simulaciones de 11
ejecutadas en etapas anteriores de la computacion.
Denition 51. Dada n
1
...n
n
una palabra, una semicadena sobre n es una se-
cuencia H = i
1
, ..., i
|
tal que:
1. 1 i
1
i
2
... i
|
:.
2. Para todos |, r _ /1 se tiene que i
l+1
i
l
= i
:+1
i
:
, (usaremos el simbolo
/(H) para denotar la cantidad i
2
i
1
).
3. Para todo i _ / la palabra n[i
|
/(H) ...i
|
+/(H)] es un palindromo con
centro en i
|
.
Dada n una palabra y dado o (n) el conjunto de todas las semicadenas sobre
n, podemos denir un orden natural sobre o (n) de la siguiente manera:
Dadas H, 1 o (n) diremos que 1 rena a H, (o que H es menor que 1),
si y solo si H 1.
Denition 52. Dada CH o (n) diremos que CH es una cadena sobre n si y
solo si CH es una semicadena maximal en el orden antes denido.
Dada n una palabra y dado i _ [n[ el simbolo 1
u
(i) denota la cantidad
max
|min(nI,I)
n[i /...i +/] es un palindromo
Dada CH = i
1
, ..., i
|
, una cadena sobre n, el simbolo CH
+
denota la posicion
i
|
+1
u
(i
|
) .
Suponga ahora que al procesar el input
(n
1
, 0) cn
2
cn
3
c...cn
n
= n
1
...n
2n+1
un missmatch ha ocurrido y que el centro del palindromo mas largo incluido en
n
1+1
n
1
...n
c
...n
J
n
J1
, llamemoslo 1, satisface la desigualdad 1 C _
1c
4
.
Lemma 18. Existe una cadena CH sobre n tal que:
1. C y 1 son nodos adyacentes de la cadena.
2. Existen al menos tres nodos de CH a cada lado de C.
3. 1 _ CH
+
.
Proof. Tenemos que C _ 1 _
1c
4
, esto implica que dado 1
+
, el extremo
izquierdo del palindromo con centro en 1, se satisface la desigualdad 1
+
_
1 +
cJ
2
, y en consecuencia la palabra n[C...1 + (1 C)] es un palindromo.
Si reejamos respecto a C, que es el centro de un palindromo de radio 1 C,
obtenemos que las palabras
n[C 2 (1 C) ...1 + (1 C)] y n[C 2 (1 C) ...C]
son palindromos. Si reejamos respecto a 1, que es el centro de un palindromo de
radio mayor o igual que 3 (1 C) , obtenemos que las palabras de radio 1C y
LXXXIV
con centro en C2 (1 C) , C(1 C) , C, 1 o 1+(1 C) son palindromos
identicos. Si reejamos una vez mas respecto a C obtenemos que las palabras de
radio 1 C y centros en C i (1 C) , con i 3, ..., 3 , son palindromos
identicos. Es facil probar que CH
+
_ 1 (siga reejando de manera alternada
en torno a C y 1). Tenemos entonces que estos siete centros son nodos de una
semicadena que se extiende hasta 1 por la izquierda y hasta 1 por la derecha.
Suponga que esta semicadena no es una cadena, en este caso existiria un nodo 1
de CH tal que C 1 1 y entonces 1 seria el centro de un palindromo inicial
mas largo que aquel centrado en 1 (contradiccion). Podemos entonces concluir
que los siete nodos C i (1 C) , con i 3, ..., 3 , son nodos sucesivos de
una cadena.
Volvamos ahora al algoritmo, suponga que un missmatch ocurre al mover la
cabeza izquierda a la posicion 1 1 y mover la cabeza derecha a la posicion
1 + 1. Distinguimos dos casos:
(caso 1: cadena) El centro 1, del palindromo mas largo en n
J1
...n
1+1
satisface la desigualdad 1 C _
1c
4
.
(caso 2: no cadena) 1 satisface la desigualdad 1 C
1c
4
.
Note que en el caso 2 el extremo derecho, llamemoslo 1
+
, del siguiente palin-
dromo inicial contenido en n
+
, satisface la desigualdad 1
+
1 2
_
1c
4
_
. Esto
implica que
./ (n
1
...n
1
, n
1+1
) _ 2
_
1 C
4
_
Podemos suponer (aplicando las tecnicas del linear speed up) que el numero
de transiciones realizadas por el algoritmo antes de leer el siguiente caracter esta
acotado por 2 (1 C) . Esto implica que
./ (n
1
...n
1
, n
1+1
) _
.t (n
1
...n
1
, n
1+1
)
4
2
y por lo tanto, al menos en el caso 2, la condicion de predictibilidad es
satisfecha. Tenemos entonces que el caso problematico es el caso 1, dado que en
este caso la unica desigualdad que podemos establecer para ./ (n
1
...n
1
, n
1+1
)
es
./ (n
1
...n
1
, n
1+1
) _ 2 (1 C)
y 1C podria ser, en este caso, igual a 2; mientras que si nos vemos obligados a
simular 11, la unica desigualdad que podemos establecer para .t (n
1
...n
1
, n
1+1
)
es
.t (n
1
...n
1
, n
1+1
) _ 2 (1 C)
y es imposible establecer una cota superior signicativa para la cantidad
(1 C) . Debemos entonces evitar simular 11 en esta etapa de la simulacion,
pero si no simulamos a 11 como podemos determinar la posicion a la cual
debemos desplazar la cabeza lectora? Dada CH una cadena sobre n, usaremos el
simbolo /(CH) para denotar la brecha de CH que no es otra cosa que la distancia
LXXXV
entre los nodos adyacentes de CH. Note que si CH = i
1
, ..., i
|
, C, 1, i
|+3
, ..., i

es la cadena de menor brecha entre todas las cadenas que pasan por C y que
contienen al menos tres nodos a cada lado de C, entonces 1 es el centro del
palindromo inicial mas largo en n
1+1
n
1
...n
c
...n
J1
. La idea que surge de manera
inmediata, ( para destrabar nuestro algoritmo), es tener el cuidado de llegar a
todo missmatch del tipo 1 con una cadena precomputada, porque en este caso
lo unico que tendriamos que hacer antes de leer el siguiente bit es desplazar la
cabeza central a 1 y la cabeza izquierda a 1 + 2 (1 C) , lo cual nos tomaria
2 (1 C) unidades de tiempo, satisfaciendose entonces que
./ (n
1
...n
1
, n
1+1
) _ 2 (1 C)
_
.t (n
1
...n
1
, n
1+1
)
4
2
con lo que nuestro algoritmo estaria en condiciones de satisfacer la condicion
de predictibilidad en todos los casos posibles. Como llegar bien preparado a los
missmatch de tipo 1? Note que al caer en un missmatch del tipo 2 tenemos su-
ciente tiempo para simular el algoritmo 11 en la palabra n
1+1
n
1
...n
c
...n
J1
.
Denition 53. Un palindromo doble de brecha / es una palabra
1
...
4|+1
tal
que [1...2/ + 1] y [2/ + 1...4/ + 1] son palindromos identicos.
Note que si =
1
...
4|+1
es un palindromo doble entonces /+1, 2/+1, 3/+1
es una semicadena sobre .
Remark 17. Dado =
1
...
4|+1
un palindromo doble, diremos que / + 1, 2/ +
1, 3/ + 1 son los tres nodos de
Lo anterior implica que si
CH = i
|
, i
|+1
, ..., i
1
, C, 1, i
2
, ..., i

es la cadena de brecha mas corta que pasa por C y que contiene al menos tres
nodos a cada lado de C, entonces 1, i
2
, i
3
son los tres nodos del palindromo
doble mas corto que empieza en C.
Lemma 19. Existe un algoritmo que calcula en tiempo O(1 C) , usando el
algoritmo 11 y cuatro cabezas adicionales, el palindromo doble mas corto con
inicio en C.
Proof. El algoritmo procede por etapas, dado i = 1, 2, .. la etapa i-esima consiste
en:
1. Marcamos las celdas en el intervalo C, ..., C + 2
I+2
. Suponemos que en la
etapa i 1 las celdas en el intervalo C, ..., C +2
I+1
han sido marcadas, para
marcar las 2
I+1
celdas adicionales usamos dos cabezas o y ', la cabeza o
se mueve entre C y la ultima celda marcada, mientras que ' se mueve a
la derecha de la ultima celda marcada en la etapa anterior. Si no podemos
marcar todas las 2
I+1
celdas que deberiamos marcar en esta etapa, (porque
la cabeza ' alcanza a la cabeza lectora 1 sin que la cabeza o haya llegado
hasta la ultima celda marcada en la etapa anterior), la maquina accede a un
estado que indica que esta etapa es nal.
LXXXVI
2. Sea A
I
la palabra marcada en la etapa i, el algoritmo simula el procedimiento
11 para calcular los palindromos iniciales de A
I
.
3. Una vez han sido marcados los palindromos iniciales de A
I
la maquina de-
cide, usando dos cabezas adicionales, si existe un / _ 2 tal que A
I
contiene
palindromos iniciales de longitudes 2/ +1 y 4/ +1. En caso de existir un tal
/, el palindromo inicial que termina en la posicion C +4/ es un palindromo
doble. Y si / es el menor entero para el cual existen palindromos iniciales de
longitudes 2/ +1 y 4/ +1, entonces el palindromo inicial de A
I
que termina
en la posicion C + 4/ es el menor palindromo doble que empieza en C. En
este caso el algoritmo marca la posicion C + 4/ y para, en caso contrario
pasa a la etapa i +1, si la etapa i era nal, el algoritmo imprime un mensaje
de error.
El palindromo doble mas corto que empieza en C es el germen de la cadena
que buscamos calcular, una vez calculado este germen, es facil extender la cadena
a derecha e izquierda [17] (mas adelante discutiremos, con un cierto nivel de
detalle, el procedimiento de extension de cadenas empleado por Galil)
Una pre-conguracion del algoritmo esta dada por tres posiciones 1, 1 y C
tales que 1 C = C 1 0. Una pre-conguracion es positiva, respecto a
n
+
= n
1
...n
2n+1
, si y solo si n[1...1] es un palindromo; y es negativa en caso
contrario. La computacion de nuestro algoritmo en el input n
+
procede de pre-
conguracion en pre-conguracion. Esta secuencia de pre-conguraciones puede
ser factorizada en secuencias de la forma
(1
1
, C, 1
2
) , ..., (1
|
, C, 1
|
) , (1
|+1
, 1, 1
|
)
de modo tal que para todo i _ /1 se tiene que 1
I+1
= 1
I
1 y 1
I+1
= 1
I
+1,
ademas cada una de las pre-conguraciones en esta secuencia es positiva, excepto
(1
|
, C, 1
|
) que es negativa. Si 1 C _
1
k
c
4
diremos que el factor es de tipo
1 y si 1 C
1
k
c
4
diremos que es del tipo 2. Tenemos entonces que la
computacion de nuestro algoritmo en el input n
+
puede ser vista como una
secuencia de factores.
Una conguracion es una tupla (1, C, 1, i
1
, i
2
, i
3
, c) tal que:
1. 1 C = C 1 0.
2. Si c = 1 se tiene que i
3
i
2
= i
2
i
1
0; i
1
C; i
3
_ 1, la palabra
n[C...2i
3
i
2
] es el palindromo doble mas corto con inicio en C contenido
en n[C...1] y tal que la semicadena CH denida por este palindromo doble
se extiende hasta 1 a la izquierda y hasta 1 a la derecha (i.e CH
+
_ 1 y
CH

_ 1).
3. Si c = 0 no existe un palindromo doble con inicio en C que este contenido
en n[C...1] y que pueda ser extendido hasta 1 y C.
Dado (1
1
, C, 1
2
) , ..., (1
|
, C, 1
|
) , (1
|+1
, 1, 1
|
) un factor de la computacion
de nuestro algoritmo en el input n
+
, este factor puede ser visto como una se-
cuencia
_
1
1
, C, 1
1
, i
1
1
, i
1
2
, i
1
3
, c
1
_
...
_
1
|+1
, 1, 1
|
, i
1
1
, i
1
2
, i
1
3
, c
|+1
_
LXXXVII
de conguraciones. Si el factor es de tipo 1 entonces c
1
= ... = c
|
= 1. Si el
factor es de tipo 2 existe algun i _ / tal que c
I
= 0. Lo importante entonces
es que podemos llegar preparados, con una cadena precomputada, a todo miss-
match de tipo 1. No siempre podremos llegar preparados, i.e. con una cadena
precomputada, hasta un missmatch de tipo 2, pero en estos casos tendremos
suciente tiempo de calcular el germen de una cadena centrada en 1, que es
el centro de la nueva pre-conguracion. Lo unico que queda por resolver es lo
siguiente: sea (1, C, 1, i
1
, i
2
, i
3
, 1) la conguracion en el instante t como decidir,
ecientemente, si dicha cadena puede o no ser extendida hasta 1 + 1 y 1 1?
Galil utiliza para ello el siguiente procedimiento de extension de cadenas:
El procedimiento emplea tres cabezas adicionales, llamemoslas 1
1
, 1
2
y 1
3
.
La cabeza 1
1
se mueve de izquierda a derecha y de derecha a izquierda entre
los nodos (convenientemente marcados) C e i
1
, mientras que la cabeza 1
2
va
avanzando a la derecha, empezando en la posicion C, comparando los caracteres
leidos por ella y los leidos por 1
1
. Note que la palabra n[C...i
1
] es un semiperiodo
de la palabra n[C...1] , es decir: dado que c = 1, la cadena se extiende hasta
1 y 1, y entonces las palabras n[C...1] y n[1...1] son iguales a
1

2
...
|
r y
r
1

1
|
...
1
1
respectivamente, donde

I
=
_
n[C...i
1
] si i es impar
n[i
1
+ 1...C 1] si i es par
Adicionalmente se tiene que r es o un segmento inicial de n[C...i
1
] , si / es
par; o un segmento incial de n[i
1
+ 1...C 1] , si / es impar. Las cabezas 1
1
y 1
2
se encargan entonces de extender la cadena a la derecha, podemos usar
simultaneamente (y de manera similar) las cabezas 1
1
y 1
3
para extender la
cadena a la izquierda.
Continuando con la descripcion del algoritmo tenemos que al desplazar las
cabezas izquierda y derecha a las posiciones 11 y 1+1, la maquina simplemente
verica que n
J1
= n
11
= n
1+1
(+ si / es par, si / es impar), si este es el caso
la nueva conguracion es igual a (1 1, C, 1 + 1, i
1
, i
2
, i
3
, 1) , en caso contrario la
nueva conguracion es igual a (1 1, C, 1 + 1, i
1
, i
2
, i
3
, 0) , y la maquina avanza
hacia un missmatch de tipo 2 por lo que puede olvidar la cadena, esperar a llegar
a este missmatch y simular entonces 11 para calcular el palindromo mas largo
contenido en n[1
+
...1
+
] , llamemoslo 1, y calcular entonces el palindromo doble
mas pequeo con inicio en el centro de 1.
Lo anterior es una descripcion esquematica (aunque completa) del algoritmo
de Galil-Slisenko, el lector interesado en detalles adicionales puede consultar las
referencias [?], [17] y [?].
Remark 18. La maquina de Galil usa 6 cabezas 1, C, 1, 1
1
, 1
2
y 1
3
ademas
de las 6 cabezas empleadas para simular el algoritmo 11 (Slisenko [?] exhibe
una maquina de Turing de 6 cabezas que capaz de simular el algoritmo 11 en
tiempo lineal) y las 4 cabezas adicionales empleadas para calcular palindromos
dobles. Convertir un algoritmo predecible en un algoritmo de tiempo-real implica
introducir una cabeza adicional, lo que nos da un total de 17 cabezas, el teorema
de Leong-Seiferas antes citado nos permite convertir esta maquina de Galil en
LXXXVIII
una maquina con 65 cintas. Cual es el minimo numero de cintas que deben
usarse para reconocer 1a| en tiempo real?
El teorema de Galil nos permite probar la recognizabilidad en tiempo real
de muchos otros lenguajes. Considere el lenguaje 1a|
+
: es posible reconocer en
tiempo real el lenguaje 1a|
+
? La respuesta es SI, la recognizabilidad en tiempo
real del lenguaje 1a|
+
es un corolario del teorema de Galil y del lema de Pratt
que enunciamos a continuacion.
Lemma 20. (lema de Pratt)
Sea n un elemento de `
+
. Si n = n y n, n 1a|
+
se tiene que 1a|
+
.
Para una prueba el lector puede consultar la referencia [31].
Theorem 26. El lenguaje 1a|
+
puede ser reconocido en tiempo real.
Proof. Podemos pensar en el algoritmo de Galil como en un algoritmo que con
input n
1
...n
n
calcula la palabra r
1
...r
n
denida por
r
I
=
_
1 si n
1
...n
I
1a|
0, en caso contrario
Sea / el algoritmo denido por:
Con input n
1
...n
n
el algoritmo / empieza simulando al algoritmo de Galil
en el input n
1
...n
n
. Cada vez que el algoritmo de Galil imprime un 1, el algoritmo
/ interrumpe la simulacion e inicia una nueva simulacion del algoritmo de Galil
en el sujo de n
1
...n
n
constituido por los caracteres que no han sido leidos hasta
el momento.
La validez del algoritmo / es consecuencia del lema de Pratt, que el algo-
ritmo / sea un algoritmo de tiempo real es consecuencia del teorema de Galil.
Problem 1. (enunciados nuevos para problemas viejos) De la prueba del teorema
de Galil es posible establecer que 1a| T (65) . Cual es la posicion exacta
del lenguaje 1a| en la jerarquia T ? O, lo que es lo mismo, determine el unico
valor de i para el cual 1a| T (i + 1) T (i) .
Exercise 15. Pruebe que dada / una maquina con /-cintas, existe /
+
una
maquina de una sola cinta que simula / y tal que T
/
(:) O
_
T
/
(:)
2
_
.
Exercise 16. Pruebe el teorema de predictibilidad de Galil (consulte la referencia
[18]).
Exercise 17. Complete los detalles en la prueba del teorema de Galil-Slisenko.
Exercise 18. Pruebe el lema de Pratt.
Mas alla del reconocimiento de palindromos
La teoria de la computabilidad y la teoria de la complejidad han focalizado sus
analisis, y sus desarrollos, en un tipo especial de problemas: los problemas de
decision. Existen otros tipos de problemas como por ejemplo los problemas de
conteo, optimizacion y enumeracion.
En este capitulo estudiaremos problemas, de este tipo, relacionados con palin-
dromos.
20 Enumeracion de palindromos: el algoritmo de Guseld
En esta seccion estudiaremos un problema de listado (o enumeracion) relacionado
con palindromos. Considere el problema:
Problem 2. ( 1i:t-1a| : listado de palindromos)
Input: n, donde n es una palabra.
Problema: liste todos los subpalindromos de n.
Sea n = 1
n
, note que el conjunto de palindromos contenidos en n es el
conjunto
_
1
|
: / _ :
_
Una lista exhaustiva de los elementos de este conjunto requiere !
_
:
2
_
bits.
Si lo que queremos es exhibir un algoritmo de tiempo lineal que resuelva el
problema 1i:t-1a| debemos denir una manera suscinta de presentar la lista de
los palindromos contenidos en una palabra dada. Sea n = n
1
...n
n
una palabra
y sea i _ :, un subpalindromo de longitud impar contenido en n y centrado en
i es un factor de n de la forma
n
I:
...w
I
...n
I+:
Un subpalidromo de longitud par contenido en n y centrado en i es un factor
de n de la forma
n
I:
...w
I1
p w
I
...n
I+:1
Todo subpalindromo de n es un palindromo centrado en alguna posicion
i _ :. Un palindromo maximal en n es un subpalindromo n[i.../] tal que o i = 1
o / = : o el factor n[i 1.../ + 1] no es un palindromo. Si n es un subpalindromo
no maximal centrado en i existe un palindromo maximal centrado en i que lo
contiene. Por otro lado si n[i.../] es un palindromo maximal centrado en :, para
todo r _
|I+1
2
el factor n[i +r.../ r] es un subpalindromo centrado en :.
Todo lo anterior indica que una manera suscinta de describir el conjunto de
XC
los palindromos contenidos en n es mediante los vectores O11
u
y 111
u
denidos por:
O11
u
[i] = r
I
si y solo si n[i r
I
...i +r
I
] es
el palindromo maximal de longitud impar centrado en i
y
111
u
[i] = r
I
si y solo si n[i r
I
...i +r
I
1] es
el palindromo maximal de longitud par centrado en i
Sea n = n
1
n
2
...n
n
una palabra y denamos
n
(2)
= n
1
n
1
n
2
n
2
...n
n
n
n
Note que los subpalindromos de n estan en correspondencia biunivoca con los
subpalindromos de longitud par de la palabra n
(2)
. Lo anterior nos permite
reducir el problema de listar todos los subpalindromos maximales de una palabra
dada al problema consistente en listar todos los subpalindromos maximales de
longitud par. Fijemos un alfabeto ` y considere el problema
Problem 3. ( 1i:t-'ar1a| : listado de palindromos maximales)
Input: n, donde n `
+
.
Problema: calcule el vector 111
u
.
En lo que sigue estudiaremos un algoritmo de tiempo lineal, debido a D. Gus-
eld [23], que resuelve el problema 1i:t-'ar1a|. El algoritmo se basa fuerte-
mente en la tecnica de arboles de sujos (Sux Trees)
20.1 Un metodo: Sux Trees
El metodo de arboles de sujos es un metodo general que puede ser usado, y
ha sido usado [23], para disear algoritmos de tiempo lineal para una amplia
variedad de problemas en stringologia. Fijemos (como es costumbre) un alfabeto
nito ` y sea n un elemento de `
+
. Es posible asignar a n uno o mas arboles de
sujos, los arboles de sujos de n, exhiben propiedades estructurales de n que no
son evidentes en su presentacion estandard como una cadena lineal de simbolos.
Los arboles de sujos fueron introducidos por Weiner [54] con el nombre de
arboles de posicion (position trees).
Denition 54. Dada n `
+
un arbol de sujos para n es un arbol dirigido y
con raiz, digamos (T, r) , tal que:
(T, r) tiene exactamente [n[ hojas etiquetadas con los numeros de 1 a [n[ .
Todo nodo interior diferente de la raiz tiene al menos dos hijos.
Cada arista de (T, r) tiene por etiqueta un elemento de `
+
.
XCI
Dos aristas con el mismo origen tiene etiquetas cuyos caracteres iniciales
son diferentes.
Para todo i 1, ..., [n[ se tiene que
I
es igual n[i... [n[] , donde
I
es la
palabra obtenida al concatenar las etiquetas de las aristas que ocurren en el
camino que va de r a i.
Dada n `
+
usaremos el simbolo oT (n) para denotar un arbol de sujos
de n. Dados 1 _ i , _ [n[ usaremos, como es costumbre, el simbolo n[i...,]
para denotar el factor n
I
...n

.
Denition 55. Dada n `
+
dado oT (n) un arbol de sujos de n y dado un
nodo de oT (n) , la profundidad de , que denotaremos con el simbolo d
SJ (u)
() ,
es igual a [
u
[ , donde
u
es la la palabra obtenida al concatenar las etiquetas de
las aristas que ocurren en el camino que va de r a .
Remark 19. Dada n `
+
no podemos armar apriori que exista un arbol de
sujos para n. Si existen dos sujos n, de n tales que n es un prejo propio de
, entonces n no posee un arbol de sujos. Si por el contrario no existen tales
sujos la palabra n si posee arboles de sujos.
Podemos resolver el problema de que no toda palabra tenga un arbol de
sujos ecribiendo al nal de cada palabra un marcador de n de cadena, i.e.
dada n `
+
podemos escribir a n como n#, donde # , `, de esta manera
garantizamos que todas las palabras (que nos interesan) tengan un arbol de
sujos.
Existen diferentes algoritmos de tiempo lineal para calcular arboles de sujos.
Uno de ellos es el algoritmo de Ukkonen [53], el cual dada n `
+
permite
calcular online y en tiempo lineal un arbol de sujos para n.
Denition 56. Dadas n y dos elementos de `
+
de longitud :, un arbol gen-
eralizado de sujos para el par (n, ) es un arbol de sujos para la palabra n$#
donde $, # , `.
Dadas n, `
+
, usaremos el simbolo (oT (n, ) para denotar un arbol
generalizado de sujos para el par (n, ) . Dadas n, `
+
dos palabras de
longitud : podemos usar el algoritmo de Ukkonen para calcular online y en
tiempo O(:) un arbol generalizado de sujos para el par (n, ) .
El problema del ancestro comun mas cercano. Dado (T, r) un arbol con
raiz y dado un nodo de T, un ancestro de es cualquier nodo de T que ocurra
en el unico camino que va de r a .
Denition 57. Dados n, dos nodos del arbol (T, r) el ancestro comun mas
cercano es el ancestro comun a y n que esta mas alejado de la raiz.
El problema que deniremos a continuacion es de gran importancia practica
en la teoria de bases de datos y en algoritmos de analisis de textos.
XCII
Problem 4. ( 1C, Lowest common ancestor).
Input: (\, n, ) , donde \ es un arbol con raiz y n, son nodos de \.
Problema: calcule el ancestro comun mas cercano de y n.
Harel y Tarjan [25] muestran que existe un algoritmo / el cual, con input
\, calcula en tiempo lineal un nuevo codigo del mismo arbol, llamemoslo \
+
, de
manera tal que toda 1C-consulta del tipo (\, +, +) 1C? pueda ser resuelta
en tiempo constante (constante independiente del arbol \ y de su tamao).
El algoritmo de Harel y Tarjan es un ingrediente esencial del algoritmo de
Guseld que estudiaremos mas adelante, antes de presentar el algoritmo de Gus-
eld debemos estudiar un problema (y un algoritmo) adicional.
El problema de la extension comun mas larga.
Denition 58. Sean n y dos palabras de longitud :, dados 1 _ i, , _ : se
dene |cj
u,u
(i, ,) de la siguiente manera
|cj
u,u
(i, ,) = max
|
n[i...i +/ 1] = [,..., +/ 1]
Considere el problema denido a continuacion
Problem 5. ( LCE, calculo de la extension comun mas larga)
Input: (n, n, i, ,) , donde n, n `
+
, i _ [n[ y , _ [n[ .
Problema: calcule |cj
u,u
(i, ,) .
Lo que estudiaremos en esta seccion es un algoritmo que con input (n, n) ,
donde n y n son palabras de longitud :, procesa en tiempo lineal este input
de manera tal que toda 1C1-consulta pueda ser resuelta en tiempo constante
(constante independiente de n, n y del tamao de n). Sea / el algoritmo
denido a continuacion:
con input (n, ) el algoritmo / hace lo siguiente.
1. Usando el algoritmo de Ukkonen / calcula en tiempo lineal (oT (n, ) .
2. Usando el algoritmo de Harel-Tarjan, el algoritmo / preprocesa el arbol
(oT (n, ) de manera tal que toda 1C-consulta sobre (oT (n, ) pueda
ser resulta en tiempo constante, durante esta etapa de preprocesamiento de
(oT (n, ) el algoritmo / calcula d () para todo nodo de (oT (n, ) .
Dadas n, `
n
y dados i, , _ : existen hojas /
I
y r

en (oT (n, ) tales


que /
I
esta asociada al sujo n[i...:] de n y r

esta asociada el sujo [,...:] de


.
Lemma 21. |cj
u,u
(i, ,) es igual a d (), donde es el ancestro comun mas
cercano a /
I
y r

.
XCIII
Proof. Sea :
0
= r, :
1
, :
2
, ..., :

, /
I
= :
+1
el camino que va de r a la hoja /
I
y
sea r
0
= r, t
1
, t
2
, ..., t
j
, r

= r
j+1
el camino que va de r a la hoja r

. Supongamos
que n[i...:] = c
1
...c
+1
, [,...:] = c
1
...c
j+1
y que c
l
y c
n
son las etiquetas de
las aristas :
l1
:
l
y t
n1
t
n
(respectivamente), supongamos ademas que
:
}
= t
}
es el ancestro comun mas cercano de las hojas /
I
y r

. Es claro que
c
1
...c
}
= c
1
...c
}
es un prejo comun de n[i...:] = c
1
...c
+1
y [,...:] = c
1
...c
j+1
,
note que d (:
}
) = [c
1
...c
}
[ . Nos falta vericar que c
1
...c
}
es el prejo comun mas
largo. De la denicion de arbol de sujos tenemos que (c
}+1
)
1
,= (c
}+1
)
1
, la
inecuacion anterior implica que c
1
...c
}
si es el prejo comun mas largo de n[i...:]
y [,...:] , y tambien implica que |cj
u,u
(i, ,) es igual a d (:
}
) .
Corollary 12. Existe un algoritmo de tiempo lineal que con input (n, ) cal-
cula una estructura T
uu
con la ayuda de la cual toda 1C1-consulta de la forma
|cj
u,u
(i, ,) = +? puede ser resuelta en tiempo constante.
El algoritmo de Guseld En esta seccion presentaremos el algoritmo de
Guseld. Sea ` un alfabeto jo y sea n `
+
.
Remark 20. Note que si en la denicion 58 tomamos n = n y = n se tiene que
|cj
u,u
(i, ,) = max
|
_
n[i...i +/ 1] = n[,..., +/ 1]
= n[: (, +/ 1) + 1...: , + 1]
_
Denition 59. Dado i _ :, un palindromo de longitud impar centrado en
i es un factor simetrico (i.e. el factor es un palindromo) de n de la forma
n
I|
...w
I
...n
I+|
. Analogamente, un palindromo de longitud par centrado en i es
un factor simetrico de n de la forma n
I|
...w
I
[ w
I+1
...n
I+|1
.
Lemma 22. Sea : = [n[ y sea 1 _ / _ :, note que:
1. El palindromo maximal de longitud impar centrado en / tiene longitud 2| 1
con | = |cj
u,u
(/, : / + 1) .
2. El palindromo maximal de longitud par centrado en / tiene longitud 2| con
| = |cj
u,u
(/, : / + 2) .
Proof. Probaremos el item 1, la prueba del item 2 es analoga y por ello se omite.
Sea n
|s
...w
|
...n
|+s
el palindromo maximal de longitud impar centrado en /,
note que si r : se tiene que n
n[/.../ + 1 +r 1] ,= n[/.../ 1 r + 1]
Se tiene entonces que
1 +: = max
:
n[/.../ +r 1] = n[/.../ r + 1]
De lo anterior tenemos que
2: + 1 = 2 max
:
n[/.../ +r 1] = n[: / + 1...: / + 1 + (r 1)] 1
XCIV
Corollary 13. Dada n `
+
y dado i _ [n[ el radio del palindromo mas largo
centrado en i (si existe) es igual a |cj
u,u
(i, : i + 2) .
Corollary 14. Dada n `
+
el vector 111
u
puede ser calculado en tiempo
O([n[) .
Proof. La prueba es el algoritmo de Guseld. Sea ( el algoritmo denido por:
Con input n el algoritmo ( hace lo siguiente:
1. Calcula n.
2. Calcula (oT (n, n) .
3. Preprocesa el arbol (oT (n, n) de manera tal que toda 1C-consulta ref-
erente a (oT (n, n) pueda ser resuelta en tiempo constante (cosntante in-
dependiente de n y de su tamao).
4. Dado 2 _ i _ [n[ el algoritmo ( calcula en tiempo constante
d
_
1C
SJ (u,u)
(i, [n[ i + 2)
_
Se sigue de todo lo anterior que el algoritmo ( es un algoritmo de tiempo
lineal que calcula de manera correcta el vector 111
u
.
21 Conteo de palindromos: combinatoria de palabras
Los problemas de conteo constutiyen una clase importante de problemas. Una
robusta teoria de la complejidad de problemas de conteo ha sido desarrollada
desde nalesde los aos 70 [40], [55]. En este capitulo estudiaremos un problema
de conteo relacionado con palindromos.
La combinatoria sobre (de) palabras es una teoria matematica que ha experi-
mentado un amplio desarrollo en los ultimos 30 aos, una referencia basica en el
area son los trabajos del grupo Lothaire [37]. En combinatoria sobre palabras se
han estudiado diferentes nociones de complejidad (para cadenas nitas) algunas
de ellas relacionadas con palindromos.
Note que toda palabra n contiene a lo mas [n[ + 1 palindromos distintos
(incluyendo el palindromo vacio), note tambien que para todo : _ 1 la palabra
0
n
contiene : + 1 palindromos distintos.
Denition 60. Una palabra nita n se dice rica (compleja) [19] si y solo si
el numero de palindromos distintos que ocurren como factores de n es igual a
[n[ + 1.
Considere el siguiente problema.
Problem 6. ( 11CH : Reconocimento de palabras ricas)
Input: n, donde n es una palabra nita en un alfabeto jo `.
problema: decida si n es rica.
XCV
Es posible resolver el problema 11CH en tiempo lineal? Una posible manera
de resolver el poblema 11CH en tiempo lineal consiste en resolver, en tiempo
lineal, el problema de conteo denido a continuacion:
Problem 7. ( #11oT : Conteo de palindromos distintos)
Input: n, donde n es una palabra nita en un alfabeto jo `.
problema: calcule el numero de palindromos distintos contenidos en n.
En esta seccion estudiaremos un algoritmo de tiempo lineal que resuelve el
problema #11oT, el algoritmo que estudiaremos fue descubierto recientemente
por Groult, Prieur y Richomme [21].
En lo que sigue jaremos un alfabeto nito `. Dado n = n
1
...n
n
un elemento
de `
+
, un sujo palindromico es un factor n[i...:] tal que n[i...:] = n[:...i] .
Si n[i...:] es el mas largo de todos los sujos palindromicos de n, diremos
que n[i...:] es el 11o de n. Diremos que un sujo palindromico n[i...:] es
uniocurrente en n si y solo si no existe algun otro factor de n, llamemoslo r, tal
que r = n[i...:] . El algoritmo de Groult et al se basa en la siguiente observacion
clave.
Lemma 23. El numero de palindromos distintos contenidos en n es igual al
numero de prejos de n cuyo 11o es uniocurrente.
Proof. Sea n un palindromo contenido en n, y sea n[i...,] la primera ocurrencia
de n en n. Note que n[i...,] es un sujo palindromico del prejo n[1...,] . Por
ser n[i...,] la primera ocurrencia de n en n, el sujo n[i...,] es uniocurrente en
n[1...,] .
Suponga que n[i...,] no es el 11o de n[1...,] , en este caso existe / i
tal que n[/...,] es un palindromo. Como n[i...,] es un sujo de n[/...,] , su
reverso es un prejo de n[/...,] , pero como n = n[i...,] es un palindromo, n
es un prejo de n[/...,] . Tenemos entonces que n[/.../ +, i] es igual a n.
Por otro lado se tiene que / + (, i) ,, esto es: el sujo n ocurre al menos
dos veces en n[1...,] . De lo anterior se tiene que es posible inyectar el conjunto
de palindromos distintos que ocurren en n, en el conjunto de prejos de n
cuyo 11o es uniocurrente. Por otro lado es claro que esta inyeccion puede ser
invertida, por lo que podemos armar que existe una biyeccion entre el conjunto
de palindromos distintos contenidos en n y el conjunto de prejos que contienen
un sujo palindromico unicocurrente.
Dada n `
+
y dado n = n[i...,] un factor simetrico de n diremos que n
es un subpalindromo maximal si y solo si o n es un sujo o n es un prejo o
n[i 1..., + 1] no es un palindromo.
Denition 61. Dado i _ [n[ usaremos el simbolo 1'1
u
[i] para denotar la
longitud del subpalindromo maximal mas largo que termina en la posicion i (si
tal subpalindromo maximal existe, en caso de no existir denimos 1'1
u
[i] como
1).
XCVI
Denition 62. Dado i _ [n[ usaremos el simbolo 11o
u
[i] para denotar la
longitud del sujo palindromico mas largo del factor n[1...i] .
Lemma 24. Si [n[ = : se tiene que
1. 11o
u
[:] = 1'1
u
[:] .
2. Para todo i : se tiene que
11o
u
[i] = max 1'1
u
[i] , 11o
u
[i + 1] 2
Proof. El item 1 es obvio, probaremos el item 2. Es claro que 11o
u
[i] _
1'1
u
[i] , suponga que / = 11o
u
[i] 1'1
u
[i] , esto implica que n[i / + 1...i]
es el sujo palindromico mas largo del factor n[1...i] y esto implica tambien que
n[i /...i + 1] es un palindromo. Tenemos entonces que n[i /...i + 1] es un
sujo palindromico de n[1...i + 1] de longitud 11o
u
[i] + 2.
Para terminar es suciente probar que este es el sujo palindromico mas
largo del factor n[1...i + 1] . Suponga que este no es el caso, sea r i / tal que
n[r...i + 1] es un palindromo. En este caso se tiene que n[r + 1...i] es un sujo
palindromico del factor n[1...i] pero esto no es posible dado que r+1 i/+1.
Dada n `
+
usaremos el simbolo 11o
u
para denotar el vector (11o
u
[i])
I]u]
y el simbolo 1'1
u
para denotar el vector (1'1
u
[i])
I]u]
. Del lema anterior
es facil obtener el siguiente corolario.
Corollary 15. Es posible calcular el vector 11o
u
en tiempo O([n[) si se conoce
el vector 1'1
u
.
Ahora veremos que es posible calcular el vector 1'1
u
en tiempo lineal.
Lemma 25. 1'1 [i] es el elemento mas grande de la union de los conjuntos

I
, 1
I
y C
I
denidos por:

I
= 1 .
1
I
= 2|cj
u,u
(/, : / + 1) 1 : i = / +|cj
u,u
(/, : / + 1) 1.
C
I
= 2|cj
u,u
(/, : / + 2) : i = / +|cj
u,u
(/, : / + 2) .
Proof. Si no existe un palindromo maximal que termine en la posicion i los
conjuntos 1
I
y C
I
resultan ser vacios y en este caso
1'1 [i] = 1 = max
:
. : .
I
' 1
I
' C
I

Suponga que existen palindromos maximales que terminan en la posicion i


y suponga ademas que n[/...i] es el mas largo de estos palindromos. Podemos
suponer que este palindromo es de longitud impar, sean entonces r y : dos enteros
positivos tales que / = r : e i = r + :. Note que la posicion r es el centro de
este palindromo, note tambien que
i = r +: = r +|cj
u,u
(r, : r + 1) 1
XCVII
dado que n[/...i] es el palindromo maximal centrado en r y su radio es igual
a : + 1. Tenemos entonces que
1'1 [i] = 2 (: + 1) 1 _ max
:
. : .
I
' 1
I
' C
I

Es facil vericar que


1'1 [i] _ max
:
. : .
I
' 1
I
' C
I

Sea 'A
u
el vector denido por: dado i _ :, la entrada 'A
u
[i] es igual
al radio del palindromo maximal centrado en i
De lo anterior tenemos que si pudieramos calcular en tiempo lineal el vector
'A
u
, podriamos entonces calcular en tiempo lineal el vector 1'1
u
.
El algoritmo de Guseld [23], que estudiamos en la seccion anterior, nos
permite calcular en tiempo lineal el vector 'A
u
. Tenemos entonces que es
posible calcular en tiempo lineal los vectores 1'1
u
, 1o1
u
y 'A
u
. Calcu-
lar en tiempo lineal el vector 1o1
u
nos permite calcular en tiempo lineal el
11o de cada prejo de n. Nos falta entonces determinar cuales de estos sujos
palindromicos son uniocurrentes. Dado i _ : denimos 111
u
[i] de la siguiente
manera
111
u
[i] = max
|
n[i...i +/ 1] es un factor de n[1...i +/ 2]
Crochemore e Ilie exhiben en [11] un algoritmo de tiempo lineal que con input
n calcula el vector 111
u
.
Lemma 26. Dado i _ : se tiene que n[i 1o1 [i] + 1...i] es uniocurrente en
n[1...i] si y solo si
111
u
[i 11o [i] + 1] 11o [i]
Proof. n[i 1o1 [i] + 1...i] no es uniocurrente en n[1...i] si y solo si existe
| i 11o [i] + 1 tal que
n[|...| +11o [i] 1] = n[i 1o1 [i] + 1...i]
si y solo si n[i 1o1 [i] + 1...i] es un factor de n[1...i 1] si y solo si
111
u
[i 11o [i] + 1] _ 11o [i]
Corollary 16. (Groult, Prieur, Richomme)
1. El numero de palindromos distintos contenidos en n es igual a
[i _ : : 111
u
[i 11o [i] + 1] 11o [i][
y esta cantidad puede ser calculada en tiempo lineal.
2. El lenguaje 11CH puede ser reconocido en tiempo lineal.
XCVIII
22 A manera de apendice: el algoritmo de
Fischer-Paterson.
En este breve apendice estudiaremos el algoritmo de Fischer-Paterson, el cual
mencionamos en el capitulo anterior como un ingrediente fundamental del algo-
ritmo de Galil.
El algoritmo de Fisher-Paterson es un algoritmo que permite resolver el prob-
lema de encaje de patrones (pattern matching) en tiempo lineal [14]. Considere
el problema a continuacion.
Problem 8. (Pattern Matching)
Input: (A, T) , donde A y T son cadenas tales [A[ < [T[ .
Problema: decida si A ocurre como un factor de T.
Este problema puede ser resuelto en tiempo O([A[ [T[) por medio de un al-
goritmo ingenuo. El tiempo de computo de este algoritmo puede considerarse
cuadratico, si suponemos que A y T tienen longitudes similares (comparables).
Knuth, Morris y Pratt [31] descubrieron un algoritmo de tiempo lineal (algo-
ritmo 1'1) que permite resolver este problema. La idea central detras del
algoritmo 1'1 es que podemos precomputar en tiempo lineal, (tiempo lineal
en [T[), una funcion que asigne a cada posicion i de T la longitud del prejo mas
largo que coincide con un factor cuyo extremo derecho es i. Sea n `
+
tal que
n = n
0
...n
n
, dado i _ : denimos 1
u
(i) como
1
u
(i) = max
|
_
_
_

0|
n
I
= n
|
y t i
_
_
_
Dado n `
+
y dado i _ [n[ se dene 1
(0)
u
(i) = i; dado / _ 1 se dene
1
(|)
u
(i) = 1
_
1
(|)
u
(i)
_
. Note que: si 1
(|)
u
(i) = |, entonces | es el /-esimo numero,
en orden descendente, tal que el prejo de n de longitud | coincide con el factor
de n de longitud | que termina en la posicion i. La observacion anterior permite
expresar la funcion 1 mediante un esquema recursivo que es un ingrediente clave
para el calculo en tiempo lineal de dicha funcion [14].
Knuth et al notaron que si tenemos acceso a la funcion 1 entonces podemos
calcular en tiempo O([T[), todas las posiciones i _ [T[ tales que

0]]
A

= T
I]]+
Para ello, dadas A y T, es suciente construir la cadena 1 = A#T (con
# que no pertenece al alfabeto de A y T) y calcular la funcion 1
Y
. Note que

0]]
A

= T
I]]+
si y solo si 1
Y
([A[ + 1 +i) = [A[ . Tenemos entonces que
XCIX
el problema del encaje de patrones se reduce a calculo de la funcion
1, la cual puede ser calculada en tiempo lineal por una maquina de Turing con
seis cabezas [14].
Sea ` un alfabeto nito, el problema de encaje de patrones sobre el alfabeto
` (i.e. todas las instancias (A, T) pertenecen a `
2
) puede ser resuelto en tiempo
lineal usando el algoritmo 1'1. Ahora suponga que agregamos a ` simbolos
comodin, los cuales encajan con cualquier otro simbolo del alfabeto, esto es:
Sea a un simbolo comodin y sean A, 1 ,A
+
y 1
+
cadenas, si A1 encaja con
A
+
1
+
entonces Aa1 encaja con A
+
/1
+
, donde / es cualquier otro simbolo del
alfabeto.
En este nuevo contexto el algoritmo 1'1 no puede ser empleado. El al-
goritmo de Fisher-Paterson es, en cierto sentido, una adaptacion del algoritmo
1'1 al nuevo contexto de alfabetos con simbolos comodin. Para ello, Fisher y
Paterson introducen el concepto de productos generalizados entre cadenas.
Sea ` un alfabeto nito y sea 1 un conjunto nito. Sea : `` 1 una
funcion y sea : 1
2
1 una funcion asociativa. El producto

es la funcion
de `
+
`
+
en 1
+
denida por:
Dadas A = A
0
...A
n
y T = T
0
...T
n
dos elementos de `
+
se dene A

T =
7
0
...7
n+n
como
7
|
=

I+=|
(A
I
T

)
Note que si ` = 1 es un campo nito, la funcion es la suma del campo y
es el producto entonces si las cadenas A
0
...A
n
y T
0
...T
n
representan polinomios
(en el sentido natural) el producto

es el producto de polinomios. Este es


el primer ejemplo interesante de un producto genralizado entre cadenas. Un
segundo ejemplo, al que Fisher y Paterson prestan especial atencion, es el asi
llamado producto booleano que denimos a continuacion.
Sea ` un alfabeto nito y sea 1 : `
2
0, 1 la funcion denida por
1 (a, /) =
_
1 si a = /
0, en caso contrario
El producto booleano sobre ` es la funcion E : `
+
`
+
0, 1
+
denida
por el producto
.
=
, esto es
(E(A, T))
|
=

I+=|
1 (A
I
, T

)
El algoritmo de Fisher-Paterson es un algoritmo que permite calcular todo
producto generalizado en tiempo lineal en [A[ + [T[ . La importacia de este
algoritmo es que muchos otros problemas puden ser reducidos al calculo de un
producto generalizado, este es el caso por ejemplo con el problema del encaje
C
de patrones en presencia de simbolos comodin. Es importante anotar que este
algoritmo puede ser implentado por una maquina de Turing con seis cabezas.
Tenemos entonces que el producto booleano puede ser calculado en tiempo
lineal usando una maquina de Turing con seis cabezas.
Note que, dadas A = A
0
...A
n
, dada 1 = 1
0
...1
n
y dado : _ / _ : se tiene
que
_
A
.
=
1
_
|
= 1 si y solo si A
|n
...A
|
= 1
n
...1
0
Esta observacion es la clave para derivar del algoritmo 11 (Algoritmo de
Fisher-Paterson para el calculo de productos generalizados) un algoritmo que
permite calcular los palindromos iniciales de una cadena (los prejos palindromi-
cos) online y en tiempo lineal (el algoritmo de Fisher-Paterson que hemos men-
cionado en capitulos y secciones anteriores). Note que
_
A
.
=
A
_
I
= 1 si y solo si A
0
...A
I
es un palindromo inicial
Sea 1 : `
+
`
+
la funcion denida por
si 1 (A
0
...A
n
) = .
0
....
n
se tiene que .
I
= 1 si y solo si A [0...i] 1a|
El algoritmo de Fisher-Paterson nos permite calcular esta funcion en tiempo
lineal.
Considere el problema
Problem 9. ( 1OG1oT : Calculo del prejo palindormico mas largo)
Input: (A, T) , donde A y T son cadenas tales [A[ < [T[ .
Problema: decida si A ocurre como un factor de T.
El problema 1OG1oT es un tipico problema de optimizacion: calcule una
solucion que maximize una cierta funcion de costo (en nuestro caso la funcion
de costo es la funcion de longitud). En capitulos anteriores nos hemos referido al
algoritmo 11 (algoritmo de Fischer-Paterson) como a un algoritmo que permite
resolver el problema 1OG1oT. Debe ser claro para el lector que si podemos
calcular la funcion 1 en tiempo lineal (usando el algoritmo 11
+
, la variante
de Fisher-Paterson enfocada al calculo de los productos de la forma A
.
=
A)
podemos entonces resolver el problema 1OG1oT en tiempo lineal.
Computacion en paralelo y enumeracion de
palindromos
Finalmente, en aras de la completez, hemos decidido incluir un breve capitulo
nal referente a la computacion en paralelo. Lo hemos hecho pensando en que
este texto pueda ser usado como una introduccion a los conceptos y tecnicas
fundamentales de la stringologia (que incluyen la computacion en paralelo).
Es importante anotar que no deniremos un modelo de computacion en
paralelo, nuestra aproximacion sera puramente intuitiva: un algoritmo paralelo
es un algoritmo que puede ser ejecutado usando una red de procesadores inter-
conectados cuyo tamao escala con el tamao del input.
23 El poder de la computacion en paralelo: un ejemplo
Podemos ilustrar el poder de la computacion en paralelo considerando el sigu-
iente ejemplo.
Problem 10. (calculo de sumatorias)
Input: (:, a
1
, ..., a
2
n) , donde : es un numero natural y a
1
, ..., a
2
n son 2
n
numeros naturales
Problema: Calcule

2
n
I=1
a
I
.
Es claro que un procesador secuencial, o lo que es lo mismo un algoritmo
secuencial, debe realizar al menos
2
n
2
sumas antes de llegar a la respuesta y que
por lo tanto un procesador secuencial requiere al menos 2
n1
unidades de tiempo
para procesar el input (:, a
1
, ..., a
2
n). Suponga ahora que tenemos 2
n1
proce-
sadores conectados a un procesador central en el cual se ha almacenado el input
(:, a
1
, ..., a
2
n) . Podemos usar esta red de computadores para calcular la suma-
toria

2
n
I=1
a
I
en : unidades de tiempo. El algoritmo paralelo que podriamos
usar para realizar un tal calculo es el siguiente:
Sea (:, a
1
, ..., a
2
n) el input de nuestro algoritmo y sea (/
1
, ..., /
2
n1, /) la
red de computadores que pretendemos usar
1. Para todo i _ : haga lo siguiente
Para todo , _ 2
I1
el procesador /

calcula a
I
21
+a
I
2
, donde los a
I
|
se denen de la siguiente manera:
Para todo / _ 2
n
se tiene que a
1
|
= a
|
.
Si , _ 2 entonces para todo / _ 2
n+1
se tiene que a

|
= a
1
2|1
+
a
1
2|1
.
2. Calcule e imprima a
n
1
+a
n
2
.
CII
Es claro que este algoritmo paralelo requiere a lo mas :+1 unidades de tiempo
para procesar el input (:, a
1
, ..., a
2
n): el algoritmo consta de : +1 iteraciones, y
cada iteracion se reduce a sumar en paralelo parejas de numeros naturales, (lo
cual asumimos se puede realizar en una unidad de tiempo). Note que el algoritmo
paralelo permite procesar inputs de tamao 2
n
en tiempo : + 1, mientras que
el mejor algoritmo secuencial requiere tiempo !(2
n
) para procesar el mismo
tipo de inputs (y esto para todo : _ 2). Sea t
o:
(:) el tiempo de computo del
algoritmo paralelo al procesar inputs de tamao 2
n
y sea t
sec
(:) el tiempo de
computo del algoritmo secuencial en el mismo tipo de inputs, es claro que
t
sec
(:) = 2 2
|par(n)
1
O equivalentemente
t
o:
(:) = log (t
sec
(:) + 1) 1
Esta ultima ecuacion indica que el problema de calcular sumatorias admite
un aceleramiento o mejora (speed up) de tipo exponencial, cuando se consideran
algoritmos paralelos.
Remark 21. Note que dada (:, a
1
, ..., a
2
n) , una instancia del problema de cal-
cular sumatorias, su tamao (en el sentido algoritmico) es al menos 2
n
. El
numero de procesadores requeridos por el algoritmo paralelo para procesar un
input de tamao 2
n
es menor o igual que 2
n1
y por lo tanto polinomial en
el tamao del input. Cuando se consideran algoritmos paralelos es importante
cuanticar y acotar el numero de procesadores requeridos por el algoritmo. Si
el algoritmo requiere un numero constante de procesadores (un numero que no
depende del input) el algoritmo es esencialmente un algoritmo secuencial. Si
el numero de procesadores requerido por el algoritmo crece exponencialmente
respecto al tamao de los inputs, el algoritmo es inpractico y no realista (unfea-
sible). Es un principio fundamental en teoria de la computacion que los recursos
computacionales requeridos por un algoritmo que quepa considerar util (feasi-
ble) no pueden crecer de manera superpolinomial con respecto al tamao de los
inputs. Dado que el numero de procesadores es un recurso computacional, es
la convencion estandard en la teoria de algoritmos paralelos que este numero no
puede crecer de manera superpolinomial con respecto al tamao de los inputs.
Dado 1 un problema, el tiempo secuencial de 1 es, intuitivamente, igual al
tiempo de computo del mas eciente de los algoritmos secuenciales que resuelven
1 (i.e. el tiempo de computo de la mas eciente de las maquinas de Turing que
resuelven 1). Dada ) : N N, la funcion ) es el tiempo secuencial de 1 si y
solo si existe una maquina de Turing / que resuelve 1 en tiempo ) y tal que
para toda maquina de Turing A se tiene lo siguiente: si A resuelve 1 entonces
) O(t
A
) . Usaremos el simbolo sec (1) para denotar el tiempo secuencial de
1.
Dado / un algoritmo paralelo, el numero de procesadores usados por / es
la funcion #
,
: N N denida por:
CIII
#
,
(:) := max
uz
n
(#
,
(n))
donde #
,
(n) es el numero de procesadores usados por el algoritmo / al
procesar el input n.
Theorem 27. Para todo problema 1 y para todo algoritmo paralelo / que re-
suelve 1 se tiene que
sec (1) O(#
,
t
,
)
Proof. Presentaremos un esbozo de la prueba. Dado 1, la cantidad sec (1) (:)
corresponde al numero minimo de operaciones elementales que es necesario re-
alizar al procesar instancias de 1 de tamao :. Un algoritmo paralelo por
ingenioso que sea no nos permitira realizar un numero signicativamente menor
de operaciones, note que #
,
t
,
(:) es mayor o igual que el numero de opera-
ciones elementales realizadas por / al procesar instancias de 1 de tamao :.
De lo anterior tenemos que sec (1) O(#
,
t
,
) .
Suponga sin embargo que existe un algoritmo paralelo / tal que sec (1) ,
O(#
,
t
,
) . Podemos convertir a / en un algoritmo secuencial / (cada uno de
los procesadores usados por / es simulado por el unico procesador de /) tal
que #
,
t
,
= t
/
. Por lo tanto sec (1) , O(t
/
) , lo cual es imposible
Corollary 17. Si / es un algoritmo paralelo que resuelve el problema 1a|, se
tiene que
1. #
,
(:) _
n
|
A
.
2. t
,
(:) _
n
#
A
.
En lo que queda del apendice estudiaremos el problema consistente en listar
todos los subpalindromos maximales de longitud par contenidos en una cadena
dada. Probaremos el siguiente teorema
Theorem 28. Existe un algoritmo paralelo / que resuelve el problema 1i:t-
'ar1a| en tiempo O(log (:)) y usa : procesadores.
Remark 22. Podemos armar que el algoritmo /, en el enuciado del teorema
anterior, no es necesarimente optimo dado que existe C _ 1 tal que
#
/
(:) t
/
(:) _ C:log (:) , O(:) = O(sec (:))
24 Construccion y analisis del algoritmo
Sea n = n
1
n
2
...n
n
una instancia de 1i:t-'ar1a|, estamos interesados en listar
todos los subpalindromos maximales de longitud par contenidos en n. Dado
i _ : el simbolo 1
I
denotara la cantidad 111
u
[i] que es el radio del mayor
subpalindromo par centrado en i.
CIV
Lo que nosotros probaremos es que existe un algoritmo / que resuelve el
problema 1i:t-'ar1a| en tiempo O(log (:)) y que usa : procesadores. El al-
goritmo / es precisamente el algoritmo en el enunciado del teorema 28.
Antes de presentar y analizar el algoritmo / necesitamos introducir un
concepto adicional y probar algunos lemas auxiliares.
Denition 63. Dada n = n
1
...n
n
diremos que n tiene un periodo de longitud
, si y solo si para todo i _ : , se tiene que n
I
= n
I+
.
Lemma 27. Dada n = n
1
...n
n
una palabra, si n tiene periodos de longitud i y
,, con i +, _ :, se tiene entonces que n tiene un periodo de longitud gcd (i, ,) .
Una prueba del lema puede ser encontrada en la referencia [38].
Lemma 28. Suponga que n = n
1
...n
n
contiene dos palindromos pares cuyos
radios son mayores que r 1 y cuyos centros i y , satisfacen
i ,.
, i _ r.
Entonces, la subpalabra n[i r..., +r 1] tiene un periodo de longitud 2 (, i) .
Proof. Sea 1 _ / _ r
n
I|
= n
I+|1
= n
(I)+|1
= n
+(I)|
= n
I+2(I)|
y
n
+|1
= n
|
= n
I+(I)|
= n
I(I)+|1
= n
2(I)+|1
Lemma 29. Suponga que n = n
1
...n
n
contiene un palindromo par de radio
mayor que r 1 y centrado en /. Asuma tambien que n[c
1
...c
2
] es la subpal-
abra maximal que contiene a n[/ r.../ +r 1] y tiene periodo de longitud 2r.
Entonces, para todo c = / +|r (con c
1
_ c _ c
2
y | Z) se tiene que:
Si c c
1
,= c
2
c + 1, entonces 1
c
= min(c c
1
, c
2
c + 1) .
Si c c
1
= c
2
c + 1, entonces 1
c
_ c c
1
y la igualdad se tiene si y solo
si n
t11
,= n
t2+1.
Proof. Por la periodicidad de n[c
1
...c
2
] se tiene que n
I
= n

si c
1
_ i, , _ c
2
e i = , mod(2r) . Tenemos entonces que n
I
= n

si c
1
_ i, , _ c
2
e i + , =
2/ 1 mod(2r) , dado que existe un palindromo par de radio r y centrado en /.
Considere el palindromo par centrado en c = /+|r (| Z) tal que c
1
_ c _ c
2
.
Dado que (c i) + (c +i 1) = 2/ 1 mod(2r) tenemos que n
cI
= n
c+I1
para todo i _ min(c c
1
, c
2
c) .
Si cc
1
c
2
c+1 entonces n
c(ct1+1)
,= n
c+(ct2+1)1
, dado que n
t11
,=
n
t1+2:1
y n
2ct1
= n
t1+2:1
. De lo anterior se tiene que si c c
1
c
2
c +1
entonces el radio es exactamente cc
1
. Si suponemos cc
1
c
2
c+1 podemos
usar un argumento analogo para probar que el radio es exactamente c
2
c + 1.
Finalmente si c c
1
= c
2
c + 1 entonces el radio es mayor que c c
1
si y
solo si n
t11
= n
t2+1
CV
Theorem 29. Existe un algoritmo paralelo / que con input n = n
1
...n
n
cal-
cula el vector 111
u
en tiempo O(log (:)) empleando O(:) procesadores.
Proof. Sea n = n
1
...n
n
un input de /. El computo de / en el input n esta
constituido por log (:) 1 iteraciones diferentes. Dado 0 _ i _ log (:) 2,
en la i-esima iteracion el input n es particionado en
n
2
i
bloques consecutivos de
longitud 2
I
. En la i-esima iteracion podemos usar
n
2
i
_ : procesadores para
trabajar simultaneamente en cada bloque. .
Supondremos que para todo i _ log (:)2, en la i-esima iteracion el algoritmo
/ calcula un vector \
I
=
_
1
(rj)
I
_

n
2
i
con 1
(rj)
I
= (c
|
)
(1)2
i
+1|2
i y para
todo (, 1) 2
I
+ 1 _ / _ ,2
I
c
|
=
_
1
|
si 1
|
_ 2
I+2
/
? en caso contrario
Suponga que la etapa i-esima del computo del algoritmo /, con input n =
n
1
...n
n
, ha sido efectuada. El nucleo del algoritmo consiste en calcular el vector
\
I+1
a partir del vector \
I
. Note primero que
1. La etapa 1 puede ser realizada en tiempo constante usando a lo mas :
procesadores.
2. Dado que el algoritmo / consta de log (:) 1 iteraciones (etapas), para
que el tiempo de computo del algoritmo sea O(log (:)) , cada etapa debe
ejecutarse en tiempo constante.
3. Usando : procesadores es posible calcular en tiempo constante todos los
radios de tamao menor o igual que 4.
4. Al nal de la etapa i-esima, todos los radios de longitud menor que 2
I+2
han
sido determinados, pero los radios mayores o iguales que 2
I+2
no han sido
determinados. En la etapa i usamos un procesador por bloque de manera tal
que el procesador asignado al bloque , (, _
n
2
i
) calcule los radios asociados
a las posiciones en el bloque ,. Para ello el procesador asignado al bloque ,
trabaja con este y con los cuatro bloques a su izquierda y los cuatro bloques
a su derecha (si existen menos que cuatro bloques a derecha o izquierda se
toma el maximo numero posible de bloques). De esta manera el procesador
asociado al bloque , podra calcular los radios que sean menores que 2
I+2
.
Algunos radios mayores que 2
I+2
1 podrian ser calculados, pero en la
etapa iesima el procesador asignado los ignora, aplazando su calculo hasta
la siguiente(s) iteracion.
5. Del item 4 se tiene que al nal de la etapa log (:)2 todos los radios han sido
determinados (y el problema 1i:t-'ar1a| ha sido resuelto para la instancia
n) dado que todo palindromo contenido en n tiene una longitud acotada por
:.
Que los items de lista anterior sean efectivamente realizables es evidente en
cada uno de los casos, excepto quizas en el item 4, el cual requiere un analisis
cuidadoso, este analisis hace parte de lo que queda de la prueba. Note que un
CVI
punto clave del algoritmo consiste en mantener, a lo largo de las log (:) 1
iteraciones, el siguiente invariante asociado al item 4:
Al nal de la i-esima iteracion todos los radios de longitud menor que 2
I+2
han sido determinados.
Dado r uno de los
n
2
i
bloques de longitud 2
I
, al nal de la i-esima etapa existen
posiciones en el bloque para las cuales los radios ya han sido determinados y por
otro lado existen posiciones, digamos c
1
c
2
... c
l
para las cuales los radios
aun no han sido determinados.
Armacion. Si | _ 3 las posiciones c
1
, c
2
, ..., c
l
constiyuyen una progresion
aritmetica, i.e. existe c tal que para todo i _ 2, ..., | 1 se tiene lo siguiente:
c
I+1
c
I
= c = c
I
c
I1
.
Note que toda progresion aritmetica puede ser determinada usando tan solo
tres numeros naturales: el inicio, el salto y la longitud de la secuencia, esto
es: dada c
1
c
2
... c
l
una progresion aritmetica, esposible denir esta
progresion usando una tripla (i:, :, |) , donde (i:, :, |) es igual a (c
1
, c
2
c
1
, |) .
Note tambien que dados dos bloques contiguos que contienen posiciones inde-
terminadas denidas por las triplas (i:
1
, :
1
, |
1
) y (i:
2
, :
2
, |
2
) , es posible calcular
en tiempo constante una tripla (i:
3
, :
3
, |
3
) que dena la sucesion de posiciones
indeterminadas en la union de estos dos bloques.
En lo que sigue mostraremos como, dados r
1
y r
2
dos bloques consecutivos
de longitud 2
I
, el algoritmo / calcula 1
(r1r2)
I+1
a partir de 1
(r1)
I
y 1
(r2)
I
.
1. Si r
1
r
2
contiene una unica posicion indeterminada, el algoritmo / verica
si el radio asociado es mayor o igual que 2
I+3
, si este es el caso la posicion
permanece indeterminada, si este no es el caso / calcula el radio asociado
a esta posicion.
2. Si r
1
r
2
contiene una progresion aritmetica no trivial de posiciones indeter-
minadas, denida por la tripla (i:, :, |) , el algoritmo / hace lo siguiente:
Sea n[i...,] la palabra maximal que contiene a n[c
1
c...c
l
+c 1] y que
es periodica con periodo de longitud 2c. Por el lema 28 el radio asociado a
cada posicion c
|
es igual a min(c
|
i, , c
|
+ 1), excepto para a lo mas
uno de los c
|
, el cual debe satisfacer la ecuacion c
|
i = , c
|
+1. En este
ultimo caso el algoritmo / verica si n
_
c
1
2
I+3
...c
l
+ 2
I+3
1

es una
palabra periodica con periodo de longitud 2c. Si la vericacion es negativa,
el algoritmo / calcula al menos uno de los dos elementos del conjunto i, ,
y entonces determina si el radio asociado a c
|
es mayor o igual que 2
I+3
. Si
el radio es menor que 2
I+3
el algoritmo calcula este radio.
Para terminar la prueba del teorema es suciente (y facil) convencerse de
que los computos realizados en los item 1 y 2 de la lista anterior pueden ser
realizados en tiempo constante usando los lemas 28 y 29.
Remark 23. El algoritmo / del teorema anterior fue tomado de la referencia
[4], en este mismo trabajo los autores presentan un algoritmo A que resuelve
el problema 1i:t-'ar1a| en tiempo O(log (log (:))) usando
nlog(n)
log(log(n))
proce-
sadores. Un interesante ejercicio para el lector consiste en estudiar la referencia
CVII
[4] y mas especicamente el algoritmo A que alli se presenta. Por otro lado exis-
ten trabajos, pertenecientes al area de reconocimiento de patrones, en los cuales
se considera un problema mas general que 1i:t-'ar1a|, a saber: dada n una
palabra, liste todos los palindromos aproximados contenidos en n. La nocion de
palindromo aproximado puede variar dependiendo de los autores y de las apli-
caciones en mente, la idea intuitiva es que un palindromo aproximado r es una
palabra obtenida a partir de un palindromo j, reemplazando algunos caracteres
de j e insertando algunos caracteres adicionales (Intuitivamente un palindromo
aproximado es una palabra que se obtiene al transmitir un palindromo a travez
de un canal imperfecto), el lector interesado puede consultar la referencia [32].
Ejercicio. Pruebe el lema 27.
A manera de conclusion
A lo largo de este escrito hemos estudiado la computabilidad en tiempo real del
lenguaje 1a| sobre diferentes tipos de automatas. Algunos de estos automatas,
los regulares y los de pila deterministicos, solo pueden realizar computaciones
en tiempo real, por lo que no cabe preguntarse si tales automatas pueden re-
conocer 1a| con un tiempo de computo por encima de tiempo real. Los demas
automatas, incluyendo los regulares no deterministicos, pueden realizar com-
putaciones de mayor duracion o bien porque sus cabezas son bidireccionales o
bien porque pueden realizar transiciones en vacio (que no hemos mencionado
explicitamente porque, entre otras cosas, las transiciones en vacio pueden ser
eliminadas y pueden ser entendidas como una forma especial de no determin-
ismo). La tabla a continacion sumariza parte del trabajo realizado en este escrito.
real O(:) O(:log (:)) o
_
:
2
_
O
_
:
2
_
computable
reg. no no no no no no
reg. no det no no no no no no
reg. doble via no no no no no no
pila det. no no no no no no
pila no det. si si si si si si
pila det 2-naj no si si si si si
de cola no no no ?
5
si si
una cinta no no no no si si
una cinta prob. no no si si si si
aut. reg. prob. no no no no no no
2j)a no no no no no no
1-OCA si si si si si si
1-IA si si si si si si
1-CA si si si si si si
quantum 1-way no no no no no no
quantum 2-way no ? ? ? ? si
multicinta si si si si si si
La tabla anterior caracteriza la complejidad de 1a| respecto a los 17 modelos
de computacion considerados (excepto quizas respecto al modelo de automatas
cuanticos de doble via 2)a). Por otro lado la tabla oculta, en cierta medida,
que en todos estos modelos las cotas inferiores y las superiores son ajustadas
(excepto en el modelo 2)a y en el modelo de automatas de cola). Queda
algo por decir respecto a la dicultad intrinseca de 1a|? El lector desprevenido
pudo pensar, al iniciar la lectura de este escrito, que no es mucho lo que la
complejidad computacional puede decir en torno a un problema, en principio
5
vea problema 6
CIX
trivial, como 1a|. Esperamos que a estas alturas tal prejuicio se haya modicado
radicalmente. Pero, queda algo por decir? No existe un tema completamente
agotado en matematicas, y este es el caso con la complejidad computacional de
1a|. A lo largo del escrito hemos enunciado algunos problemas abiertos referentes
a 1a| (o sus relativos). En este punto quisieramos listar los, a nuestro juicio,
problemas abiertos mas interesantes. El primero de ellos consiste en llenar las
casillas vacias de la tabla anterior, o mas precisamente:
Problema 1. Cual es el tiempo de computo requerido para reconocer 1a|
con un automata de doble via cuantico?
Problema 2. Es sabido que reconocer 1a| usando automatas de cola re-
quiere un tiempo de computo !
_
n
4
3
log(n)
_
(consulte la referencia [36]). Es facil
disear un automata de cola de tiempo cuadratico que reconozca 1a|, es posible
disear un automata de cola de tiempo subcuadratico que reconozca 1a|?
Problema 3 Cuantas cintas se requieren para reconocer 1a| en tiempo
real? Sabemos que existe / tal que 1a| puede ser reconocido en tiempo real con
/ cintas, cual es el minimo /? Para empezar seria interesante probar que dos
cintas no son sucientes.
Problema 4. El lenguaje 1a|
2
puede ser reconocido en tiempo real usando
un 1-OC?
Problema 5. El lenguaje 1a|
+
puede ser reconocido en tiempo lineal us-
ando un automata de de pila deterministico y de doble via? O mas generalmente
la clase (T/ esta contenida en la clase 2-/T(T/?
Problema 6. Sea 11CH el conjunto
_
n 0, 1
+
: n es rica
_
Sabemos que el conjunto 11CH puede ser decidido en tiempo lineal, es
posible reconocer 11CH en tiempo real?
Problema 7. Cuando se trabaja con palabras comprimidas debe evitarse
disear algoritmos que primero descompriman y luego pasen a trabajar con la
palabra descomprimida. Esto es asi dado que en muchos casos la longitud de la
palabra descomprimida es exponencial con respecto a la palabra comprimida que
se recibe como input, por lo que este tipo de algoritmos (primero descompresion)
resultan ser de tiempo exponencial. Disear algoritmos para problemas textuales
sobre palabras comprimidas (respecto a diferentes esquemas de compresion) es
una agenda de investigacion importante (los archivos comprimidos son cada vez
mas ubicuos e importantes) y de reciente desarrollo, un buen survey del estado
de la teoria a nales de la decada de los 90 es el articulo [43].
Considere el problema 1 denido por
Input: (n, n) , donde n y n son los codigos de Lempel-Ziv (consulte la refer-
encia [34]) de las palabras r, j.
Problema: decida si r y y son iguales.
Sea 1 (:) el tiempo de computo necesario para resolver cualquier instancia
(n, n) de 1 que satisfaga la desigualdad [n[ , [n[ _ :. Sea co:j (1i:t-1a|) el
problema.
CX
Input: n, donde n es el codigo de Lempel-Ziv de la palabra r.
Problema: liste todos los palindromos incluidos en r.
En [43] W. Rytter presenta el siguiente resultado (cota superior):
Existe un algoritmo de tiempo O
_
[n[ log ([n[) log
2
([r[) 1 ([n[ log [n[)
_
que
con input r (un texto) lista todos los palindromos incluidos en r.
Es ajustada esta cota superior? Que cotas pueden establecerse para los
otros problemas, relacionados con palindromos, que estudiamos en capitulos an-
teriores? Que cotas pueden establecerse para estos problemas cuando se con-
sidera el codigo de Lempel-Ziv-Welch [43]?
Exercise 19. Estudie el algoritmo de Ukkonen [53].
Exercise 20. Pruebe que toda palabra de longitud : contiene a lo mas : + 1
palindromos distintos.
Exercise 21. Pruebe que el algoritmo de Fischer-Paterson es un algoritmo de
tiempo lineal que puede ser implementado por una maquina de Turing con a lo
mas seis cabezas (ayuda: consulte la referencia [?])
CXI
References
1. S. Aanderaa. On k-tape vs (k-1)-tape real time computation. SIAM-AMS proceed-
ings, 7 :75-96, 1974.
2. A. Martin. Discrete Mathematics of Neural Networks: Selected Topics. SIAM mono-
graphs on discrete mathematics and applications, Philadelphia USA 2001.
3. A. Ambainis, J. Watrous. Two-way nite automata with quantum and classical
state. Theor. Comput. Sci. 287(1): 299-311, 2002.
4. A. Apostolico, D Breslauer, Z. Galil. Parallel Detection of all the Palindromes in
a Sring. Theoretical Computer Science 141(1&2):163-173, 1995.
5. R. Backofen, P. Clote. Computational molecular biology. John Wiley & Sons, NY
2000.
6. J. Becvar. Real-time and complexity problems in automata theory. Kybernetika,
1(6): 475-498, 1965.
7. 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).
8. S. Cook. The complexity of theorem-proving procedures. STOC proceedings: 151-
158, 1971.
9. S. Cook. Linear time simulation of deterministic two-way pushdown automata.
Information Processing 71: 75-80, 1972.
10. S. Cole. Real-time computation by n-dimensional iterative arrays of nite-state
machines. IEEE Transactions on Computing. C-18: 349-365, 1969.
11. M. Crochemore, L. Ilie. Computing Longest Previous Factor in Linear Time and
Applications. Information Processing Letters 106(2): 75-80, 2008
12. C. Dwork, L. Stockmeyer. Finite state veriers I: the power of interaction. Journal
of the ACM, 39(4): 800-828.
13. M. Fischer, A. Meyer, A. Rosenberg. Real-time Simulations of Multihead Units.
Journal of ACM 19:590-607, 1972.
14. M. Fischer, M. Paterson. String Matching and other Products. Proceedings Sym-
posioum SIAM ACM on Complexity of Computing: 113-126, 1974.
15. M. Fischer, C. Kintala. Real time computations with restricted nondeterminism.
Math. Systems theory 12: 219-231, 1979.
16. R. Freivalds. Fast computation by probabilistic Turing machines. Theory of Al-
gorithms and Programs, Latvian State University 2:201-205, 1975.
17. Z. Galil. Palindrome Recognition in Real Time. Journal of Computers and Sys-
tems Sciences 16(2):140-157, 1978.
18. Z. Galil. String matching in Real Time. Journal of the ACM 28(1):134-149, 1981.
19. A. Glen, J. Justin, S. Widmer, L. Zamboni. Palindromic Richness. European Jour-
nal of Combinatorics 30: 510-531, 2009.
20. J. Goldstine, H. Leung, D. Wotschke. Measuring nondeterminism in pushdown
automata. Journal of computer and system sciences 71: 440-466, 2005.
21. R. Groult, I. Prieur, G. Richomme. Counting distinct palindromes in a word in
linear time. Information Processing Letters 110: 908-912, 2010.
22. L. Grover. A fast quantum mechanical algorithm for database search. Proceedings
of STOC: 212-219, 1996.
23. D. Guseld. Algorithms on Strings, Trees and Sequences: Computer Science and
Computational Biology. Cambridge University Press, New York NY, USA, 1997.
24. G. Hardy, E Wright. An Introduction to the Theory of Numbers. Oxford University
Press, Oxford UK, 1960.
CXII
25. D. Harel, R. Tarjan. Fast algorithms for nding nearest common ancestors. SIAM
Journal on Computing 13(2): 388-355, 1984.
26. J. Hartmanis, R. Stearns. Computational omplexity of recursive functions. Pro-
ceedings of 5
th
symposium on switching theory: 82-90, 1964.
27. F. Hennie. Crossing Sequences and O-line Turing Machines. Proceedings FOCS
:168-172, 1965.
28. F. Hennie. One tape o-ine Turing machine computations. Information and Con-
trol, 8(6): 553-578, 1965.
29. J. Hopcroft, J. Ullman, R. Motwani. Introduction to Automata Theory, Languages,
and Computation. Addison-Wesley, 1989.
30. C. Kintala. Rening nondeteminism in context-free languages. Math Systems The-
ory 12: 1-8, 1978.
31. D. Knuth, E. Morris, V. Pratt. Fast pattern matching in strings. Tech. report CS
440, Stanford University Computer Science, 1974.
32. R. Kolpakov, G. Kucherov. Searching for Gapped Palindromes. Proceedings
CPM:18-30, 2008.
33. M. Kutrib. Cellular Automata and Language Theory. En R. Meyer (editor); En-
cyclopedia of Complexity and System Theory. Springer Verlag, Heidelberg, pages
800-823, 2009.
34. A. Lempel, J. Ziv. A universal algorithm for sequential data compression. IEEE
Transactions on Information Theory 23(3): 337-343, 1977.
35. B. Leong, J. Seiferas. New real-time simulations of multi-head tape units. Proceed-
ings 9
th
STOC: 239-248.
36. M. Li, L. Longpre, P. Vitanyi. The power of queue. SIAM journal on computing,
21(4): 697-712, 1992.
37. M. Lothaire. Applied Combinatorics on Words. Cambridge University Press, New
York, NY, USA, 2005.
38. R. Lyndon, M. Schutzenberger. The equation a
m
= b
n
c
p
in a free group. Michigan
Mathematical Journal, 9:289-298, 1962.
39. G. Manacher. A new linear time online algorithm for nding the smallest initial
palindrome of a string. Journal of the ACM 22(3): 346-351, 1975.
40. C. Papadimitriou. Computational Complexity. Addison Wesley, 1994.
41. N. Pippenger. Private Communication.
42. M. Rabin. Real-time computation. Israel Journal of mathematics, 1:203-211, 1963.
43. W. Rytter. Algorithms on compressed strings and arrays. Proceedings of SOFSEM
Lecture Notes in Computer Science 1725: 48-65, 1999.
44. E. Seneta. Non-negative matrices and Markov chains. Springer-Verlag, NY, 1981.
45. P. Shor: Polynomial time algorithms for prime factorization and discrete logarithms
on a quantum computer. SIAM J. Comput. 26(5): 1484-1509, 1997.
46. D. Simon. On the power of quantum computation. Proceedingsof FOCS: 116123,
1995.
47. M. Sipser. Introduction to the Theory of Computation. Course Technology, 2005.
48. A. Slisenko. Recognition of Palindromes by Multihead Turing Machines. Proceed-
ings of the Steklov Institute of Mathematics No. 129: 30-202, 1973.
49. A. Slisenko. A simplied proof of the real-time recognazability of palindormes on
Turing machines. Zapiski Nauchnykh 68: 123-139, 1977.
50. I. Sudborough. Time and Tape Bounded Auxiliary Pushdown Automata. LNCS
No. 53:493-503, 1977.
51. H. Tanaka. Large DNA palindromes as a common form of structural chromosome
aberration in human cancers. Human Cell 19(1): 17-23, 2006.
CXIII
52. B. Trachtenbrot. Turing computations with logarithmic delay. Algebra i Logik,
3(4): 33-48, 1964.
53. E. Ukkonen. Online construction of sux trees. Algorithmica 14(3): 249-260, 1995.
54. P. Weiner. Linear pattern matching algorithm. Proceedings 14
th
IEEE Sympo-
sioum on Switching and Automata Theory: 1-11, 1973.
55. L. Valiant. The complexity of enumeration and reliability problems. SIAM Journal
on Computing, 8(3):410-421, 1979.
56. H. Yamada. Real time computations and recursive functions non real time com-
putable. IRE transactions on electronic computers EC-11: 753-760, 1962.
57. A. Yao. A Lower Bound for Palindrome Recognition by Probabilistic Turing Ma-
chines. Technical report #77-647, Standford University, 1977.
Author Index
Abt I. 7
Ahmed T. 3
Andreev V. 24
Andrieu B. 27
Arpagaus M. 34
Babaev A. 25
Brwol A. 33
Bn J. 17
Baranov P. 24
Barrelet E. 28
Bartel W. 11
Bassler U. 28
Beck H.P. 35
Behrend H.-J. 11
Berger Ch. 1
Bergstein H. 1
Bernardi G. 28
Bernet R. 34
Besanon M. 9
Biddulph P. 22
Binder E. 11
Bischo A. 33
Blobel V. 13
Borras K. 8
Bosetti P.C. 2
Boudry V. 27
Brasse F. 11
Braun U. 2
Braunschweig A. 1
Brisson V. 26
Bngener L. 13
Brger J. 11
Bsser F.W. 13
Buniatian A. 11,37
Buschhorn G. 25
Campbell A.J. 1
Carli T. 25
Charles F. 28
Clarke D. 5
Clegg A.B. 18
Colombo M. 8
Courau A. 26
Coutures Ch. 9
Cozzika G. 9
Criegee L. 11
Cvach J. 27
Dagoret S. 28
Dainton J.B. 19
Dann A.W.E. 22
Dau W.D. 16
Deur E. 11
Delcourt B. 26
Buono Del A. 28
Devel M. 26
De Roeck A. 11
Dingus P. 27
Dollfus C. 35
Dreis H.B. 2
Drescher A. 8
Dllmann D. 13
Dnger O. 13
Duhm H. 12
Ebbinghaus R. 8
Eberle M. 12
Ebert J. 32
Ebert T.R. 19
Efremenko V. 23
Egli S. 35
Eichenberger S. 35
Eichler R. 34
Eisenhandler E. 20
Ellis N.N. 3
Ellison R.J. 22
Elsen E. 11
Evrard E. 4
Favart L. 4
Feeken D. 13
Felst R. 11
Feltesse A. 9
Fensome I.F. 3
Ferrarotto F. 31
Flamm K. 11
Flauger W. 11
Flieser M. 25
Flgge G. 2
CXV
Fomenko A. 24
Fominykh B. 23
Formnek J. 30
Foster J.M. 22
Franke G. 11
Fretwurst E. 12
Gabathuler E. 19
Gamerdinger K. 25
Garvey J. 3
Gayler J. 11
Gellrich A. 13
Gennis M. 11
Genzel H. 1
Godfrey L. 7
Goerlach U. 11
Goerlich L. 6
Gogitidze N. 24
Goodall A.M. 19
Gorelov I. 23
Goritchev P. 23
Grab C. 34
Grssler R. 2
Greenshaw T. 19
Greif H. 25
Grindhammer G. 25
Haack J. 33
Haidt D. 11
Hamon O. 28
Handschuh D. 11
Hanlon E.M. 18
Hapke M. 11
Harjes J. 11
Haydar R. 26
Haynes W.J. 5
Hedberg V. 21
Heinzelmann G. 13
Henderson R.C.W. 18
Henschel H. 33
Herynek I. 29
Hildesheim W. 11
Hill P. 11
Hilton C.D. 22
Hoeger K.C. 22
Huet Ph. 4
Hufnagel H. 14
Huot N. 28
Itterbeck H. 1
Jabiol M.-A. 9
Jacholkowska A. 26
Jacobsson C. 21
Jansen T. 11
Jnsson L. 21
Johannsen A. 13
Johnson D.P. 4
Jung H. 2
Kalmus P.I.P. 20
Kasarian S. 11
Kaschowitz R. 2
Kathage U. 16
Kaufmann H. 33
Kenyon I.R. 3
Kermiche S. 26
Kiesling C. 25
Klein M. 33
Kleinwort C. 13
Knies G. 11
Ko W. 7
Khler T. 1
Kolanoski H. 8
Kole F. 7
Kolya S.D. 22
Korbel V. 11
Korn M. 8
Kostka P. 33
Kotelnikov S.K. 24
Krehbiel H. 11
Krcker D. 2
Krger U. 11
Kubenka J.P. 25
Kuhlen M. 25
Kurca T. 17
Kurzhfer J. 8
Kuznik B. 32
Lamarche F. 27
Lander R. 7
Landon M.P.J. 20
Lange W. 33
Lanius P. 25
Laporte J.F. 9
Lebedev A. 24
Leuschner A. 11
Levonian S. 11,24
Lewin D. 11
Ley Ch. 2
Lindner A. 8
CXVI
Lindstrm G. 12
Linsel F. 11
Lipinski J. 13
Loch P. 11
Lohmander H. 21
Lopez G.C. 20
Magnussen N. 32
Mani S. 7
Marage P. 4
Marshall R. 22
Martens J. 32
Martin A.@ 19
Martyn H.-U. 1
Martyniak J. 6
Masson S. 2
Mavroidis A. 20
McMahon S.J. 19
Mehta A. 22
Meier K. 15
Mercer D. 22
Merz T. 11
Meyer C.A. 35
Meyer H. 32
Meyer J. 11
Mikocki S. 6,26
Milone V. 31
Moreau F. 27
Moreels J. 4
Morris J.V. 5
Mller K. 35
Murray S.A. 22
Nagovizin V. 23
Naroska B. 13
Naumann Th. 33
Newton D. 18
Neyret D. 28
Nguyen A. 28
Niebergall F. 13
Nisius R. 1
Nowak G. 6
Nyberg M. 21
Oberlack H. 25
Obrock U. 8
Olsson J.E. 11
Ould-Saada F. 13
Pascaud C. 26
Patel G.D. 19
Peppel E. 11
Phillips H.T. 3
Phillips J.P. 22
Pichler Ch. 12
Pilgram W. 2
Pitzl D. 34
Prell S. 11
Prosi R. 11
Rdel G. 11
Raupach F. 1
Rauschnabel K. 8
Reinshagen S. 11
Ribarics P. 25
Riech V. 12
Riedlberger J. 34
Rietz M. 2
Robertson S.M. 3
Robmann P. 35
Roosen R. 4
Royon C. 9
Rudowicz M. 25
Rusakov S. 24
Rybicki K. 6
Sahlmann N. 2
Sanchez E. 25
Savitsky M. 11
Schacht P. 25
Schleper P. 14
von Schlippe W. 20
Schmidt D. 32
Schmitz W. 2
Schning A. 11
Schrder V. 11
Schulz M. 11
Schwab B. 14
Schwind A. 33
Seehausen U. 13
Sell R. 11
Semenov A. 23
Shekelyan V. 23
Shooshtari H. 25
Shtarkov L.N. 24
Siegmon G. 16
Siewert U. 16
Skillicorn I.O. 10
Smirnov P. 24
Smith J.R. 7
CXVII
Smolik L. 11
Spitzer H. 13
Staroba P. 29
Steenbock M. 13
Steen P. 11
Stella B. 31
Stephens K. 22
Stsslein U. 33
Strachota J. 11
Straumann U. 35
Struczinski W. 2
Taylor R.E. 36,26
Tchernyshov V. 23
Thiebaux C. 27
Thompson G. 20
Trul P. 35
Turnau J. 6
Urban L. 25
Usik A. 24
Valkarova A. 30
Valle C. 28
Van Esch P. 4
Vartapetian A. 11
Vazdik Y. 24
Verrecchia P. 9
Vick R. 13
Vogel E. 1
Wacker K. 8
Walther A. 8
Weber G. 13
Wegner A. 11
Wellisch H.P. 25
West L.R. 3
Willard S. 7
Winde M. 33
Winter G.-G. 11
Wol Th. 34
Wright A.E. 22
Wul N. 11
Yiou T.P. 28

Zcek J. 30
Zeitnitz C. 12
Ziaeepour H. 26
Zimmer M. 11
Zimmermann W. 11
Subject Index
Absorption 327
Absorption of radiation 289292, 299,
300
Actinides 244
Aharonov-Bohm eect 142146
Angular momentum 101112
algebraic treatment 391396
Angular momentum addition 185193
Angular momentum commutation rela-
tions 101
Angular momentum quantization 910,
104106
Angular momentum states 107, 321,
391396
Antiquark 83
-rays 101103
Atomic theory 810, 219249, 327
Average value
(see also Expectation value) 1516, 25, 34,
37, 357
Baker-Hausdor formula 23
Balmer formula 8
Balmer series 125
Baryon 220, 224
Basis 98
Basis system 164, 376
Bell inequality 379381, 382
Bessel functions 201, 313, 337
spherical 304306, 309, 313314, 322
Bound state 7374, 7879, 116118, 202,
267, 273, 306, 348, 351
Boundary conditions 59, 70
Bra 159
Breit-Wigner formula 80, 84, 332
Brillouin-Wigner perturbation theory
203
Cathode rays 8
Causality 357359
Center-of-mass frame 232, 274, 338
Central potential 113135, 303314
Centrifugal potential 115116, 323
Characteristic function 33
Clebsch-Gordan coecients 191193
Cold emission 88
Combination principle, Ritzs 124
Commutation relations 27, 44, 353, 391
Commutator 2122, 27, 44, 344
Compatibility of measurements 99
Complete orthonormal set 31, 40, 160,
360
Complete orthonormal system, see
Complete orthonormal set
Complete set of observables, see Complete
set of operators
Eigenfunction 34, 46, 344346
radial 321
calculation 322324
EPR argument 377378
Exchange term 228, 231, 237, 241, 268,
272
f-sum rule 302
Fermi energy 223
H
+
2
molecule 26
Half-life 65
Holzwarth energies 68

Das könnte Ihnen auch gefallen