12 Teor´ıa de la Complejidad Computacional 12.1 Definiciones

1
Curso Básico de Computación
12 Teorı́a de la Complejidad
Computacional
Hasta ahora se ha visto como la teorı́a de lenguajes clasifica los conjuntos por
su complejidad estructural. Otra clasificación, llamada complejidad computacional, está basada en la cantidad de tiempo, espacio, u otros recursos utilizados para reconocer un lenguaje en alguna máquina de cómputo universal, tal
como la máquina de Turing.
12.1 Definiciones
Complejidad en espacio
c|
Entrada
$
Control
finito
Cintas de almacenamiento
Considérese la máquina de Turing M de la figura anterior. M tiene una cinta
de sólo–lectura con marcadores en los extremos c| y $, y k cintas de almacenamiento semi–infinitas. Si por cada palabra de entrada de longitud n, M lee
a lo sumo S(n) celdas en cualquiera de las cintas de almacenamiento, entonces
se dice que M es una máquina de Turing espacio–acotada S(n), o de complejidad en espacio S(n). El lenguaje reconocido por M se dice también que es
de complejidad en espacio S(n).
Obsérvese que no se puede reescribir en la entrada de M , y que solamente
Feliú Sagols Troncoso
Matemáticas-Cinvestav
2
interesa la longitud de las cintas de almacenamiento. Esta restricción permite
considerar acotamientos de crecimiento inferiores al lineal. Si la MT pudiera
reescribir en la cinta de entrada, entonces la longitud de la entrada tendrı́a
que ser incluida en calcular el acotamiento en espacio, por lo que no podrı́a
ser inferior al lineal.
Complejidad en Tiempo
Control
finito
Región de
entrada
Cintas de almacenamiento
La MT de la figura anterior tiene k cintas infinitas de doble vı́a, una de las
cuales contiene la entrada. Se puede escribir en todas las cintas, incluyendo
la de la entrada. Si para cada palabra de entrada de longitud n, M realiza a
lo más T (n) movimientos antes de detenerse, entonces se dice que M es una
máquina de Turing tiempo–acotada, o de complejidad en tiempo T (n).
Ejemplo Considérese el lenguaje
L = {wcw R |w ∈ (0 + 1)∗ }.
El lenguaje L es de complejidad en tiempo n + 1, debido a que existe una
máquina de Turing M1 , con dos cintas, que copia la entrada a la izquierda del
c en la segunda cinta. Luego, cuando una c es encontrada, M1 mueve la cabeza
de lectura de su segunda cinta a la izquierda, leyendo la cadena que acaba de
copiar, y de manera simultánea continúa moviendo su cabeza de lectura de la
cinta de entrada hacia la derecha. De esa manera se comparan los sı́mbolos
mientras ambas cabezas se mueven a la vez. Si los signos comparados son los
3
Curso Básico de Computación
mismos, y la cardinalidad de la palabra antes del sı́mbolo c coincide con la
cardinalidad de la palabra a su derecha, entonces la cadena es aceptada por
M1 . Es fácil observar que M1 realiza a lo más n + 1 movimientos si la entrada
es de longitud n.
Existe otra máquina de Turing, M2 , de complejidad en espacio log2 n que
acepta a L. M2 utiliza dos cintas de almacenamiento para contadores binarios. Primero, se revisa que la entrada contenga solamente una c, y que el
número de sı́mbolos a la izquierda de c coincida con el número de sı́mbolos
a su derecha. Luego, las palabras a la derecha e izquierda son comparadas
sı́mbolo por sı́mbolo, utilizando los contadores para encontrar los sı́mbolos
correspondientes. Si no concuerdan, M2 se detiene sin aceptar. Si todos los
sı́mbolos coinciden, entonces M2 acepta la cadena.
Suposiciones especiales acerca de las
funciones de complejidad en espacio y
tiempo
Debe ser obvio que cada MT utiliza por lo menos una celda para cualquier
entrada, por lo que si S(n) es una medida de complejidad en espacio, se puede
asumir S(n) ≥ 1 para cualquier n. Ası́, una suposición importante al hablar
de la “complejidad en espacio S(n)”, es que nos referimos al max(1, dS(n)e).
De manera similar, se asume que cualquier complejidad en tiempo T (n) es
al menos n + 1, pues es el tiempo que se necesita para leer la entrada y verificar que se ha alcanzado el final cuando se lea el primer espacio en blanco. Ası́,
por convención, “complejidad en tiempo T (n)” significa max(n + 1, dT (n)e).
Complejidades en tiempo y espacio no
determinı́sticas
Una MT no determinı́stica es de complejidad en tiempo T (n) si cualquier secuencia de movimientos causa que la máquina realice a lo más T (n) movimientos. Es de complejidad en espacio S(n) si cualquier secuencia la obliga a leer
a lo sumo S(n) celdas en cualquier cinta de almacenamiento.
Clases de complejidad
La familia de lenguajes de complejidad en espacio S(n) se denota por DSPACE(S(n));
los lenguajes de complejidad no determinı́stica S(n) se llaman de manera colectiva NSPACE(S(n)). La familia de lenguajes de complejidad en tiempo T (n)
se denota por DTIME(T (n)) y los de complejidad no determinı́stica en tiempo
por NTIME(T (n)). Todas estas familias de lenguajes son llamadas clases de
complejidad.
Feliú Sagols Troncoso
Matemáticas-Cinvestav
4
12.2 Aceleración lineal, compresión
lineal de cintas y reducciones lineales
en el número de cintas
Compresión de cintas
Teorema 12.1 Si L es aceptado por una máquina de Turing espacio–acotada
S(n) con k cintas de almacenamiento, entonces para cualquier c > 0, L es
aceptado por una MT espacio-acotada cS(n).
Demostración Sea M1 una máquina de Turing fuera de lı́nea espacio–acotada
S(n) que acepta a L. La prueba consiste en construir una nueva máquina de
Turing M2 que simule M1 , donde para alguna constante r, cada celda de la
cinta de almacenamiento de M2 contenga un sı́mbolo representando los contenidos de r celdas adyacentes de la cinta correspondiente de M1 . El control
finito de M2 puede mantener información sobre cuál de las celdas de M1 , entre
aquellas representadas, está en realidad leyendo M1 .
Sea r tal que rc ≥ 2. M2 puede simular M1 utilizando a lo sumo dS(n)/re
celdas en cualquier cinta. Si S(n) ≥ r, este número no es mayor a cS(n).
Si S(n) < r, entonces M2 puede almacenar en una celda los contenidos de
cualquier cinta. Ası́, M2 utiliza solamente una celda en el último caso.
Corolario Si L está en NSPACE(S(n)), entonces L está en NSPACE(cS(n)),
donde c es cualquier constante mayor que cero.
Demostración Si la M1 anterior es no determinı́stica, sea M2 no determinı́stica
en la construcción anterior.
Reducción en el número de cintas para
las clases de complejidad en espacio
Teorema 12.2 Si un lenguaje L es aceptado por una MT espacio–acotada
S(n) con k cintas de almacenamiento, es aceptado por una MT espacio–
acotada S(n) con una única cinta de almacenamiento.
Demostración Sea M1 una MT espacio–acotada S(n) con k cintas de almacenamiento que acepta a L. Se puede construir una nueva máquina de Turing
M2 con una única cinta de almacenamiento, la cual simule las cintas de almacenamiento de M1 con k pistas. La técnica se utilizó en el teorema 7.2. M2
utiliza no más de S(n) celdas.
Desde ahora se asume que cualquier MT espacio–acotada S(n) tiene únicamente
una cinta de almacenamiento, y si S(n) ≥ n, entonces es una MT de cinta
única, en lugar de una MT fuera de lı́nea con una cinta de almacenamiento y
una cinta de entrada.
5
Curso Básico de Computación
Aceleración lineal
Dada una función f (n), la expresión supn→∞ f (n) se define como el lı́mite
cuando n → ∞ de la menor cota superior de f (n), f (n + 1), f (n + 2), . . . De
manera similar, inf n→∞ f (n) es el lı́mite cuando n → ∞ de la mayor cota
inferior de f (n), f (n + 1), f (n + 2), . . . . Si f (n) converge a un lı́mite cuando
n → ∞, entonces ese lı́mite es igual tanto al inf n→∞ f (n) como al supn→∞ f (n).
Ejemplo Sea f (n) = 1/n para n par, y f (n) = n para n impar. Ası́ el
supn→∞ f (n) = ∞, mientras que el inf n→∞ f (n) = 0.
En otro ejemplo, sea f (n) = n/(n + 1). Ası́, supn→∞ f (n) = inf n→∞ f (n) = 1.
Teorema 12.3 Si L es aceptado por una máquina de Turing tiempo–acotada
T (n) con k–cintas M1 , entonces L es aceptado por una MT tiempo–acotada
cT (n) con k–cintas M2 para cualquier c > 0, siempre que k > 1 y inf n→∞ T (n)/n =
∞.
Demostración Una MT M2 puede ser construida de manera que simule M1
de la siguiente manera. Primero, M2 copia la entrada en una cinta de almacenamiento, codificando m sı́mbolos en uno (el valor de m será determinado
luego). A partir de este punto, M2 utiliza su cinta de almacenamiento como
la cinta de lectura, y utiliza la cinta de lectura anterior como cinta de almacenamiento. M2 codificará los contenidos de las cintas de almacenamiento de M1
combinando m sı́mbolos en uno. Durante el desarrollo de la simulación, M2
simula un mayor número de movimientos de M1 en un paso básico que consiste
de ocho movimientos de M2 . Se nombran a las celdas que están siendo leı́das
por cada una de las cabezas de M2 celdas hogar. El control finito de M2 graba,
para cada cinta, cuál de los m sı́mbolos de M1 representados por cada celda
hogar está siendo leı́do por la correspondiente cabeza de M2 .
Para comenzar el paso básico, M2 mueve cada cabeza a la izquierda una vez, a
la derecha dos veces y a la izquierda una, grabando los sı́mbolos de la izquierda
y la derecha de las celdas hogar en su control finito. Se requieren cuatro
movimientos de M2 , después de los cuales M2 regresa a sus celdas hogar.
Luego, M2 determina los contenidos de todas las celdas de las cintas de M1 representadas por las celdas hogar y sus vecinos a izquierda y derecha al momento
en el que alguna cabeza de M1 abandonde primero la región representada por la
celda hogar y sus vecinos a izquierda y derecha (note que este cálculo no toma
tiempo en M2 . Se construye en las reglas de transición de M2 ). Si M1 acepta
antes de que alguna cabeza abandone la región representada, M2 acepta. Si
M1 se detiene, M2 se detiene. Si no ocurriera eso, entonces M2 visita, en
cada cinta, los dos vecinos de la celda hogar, cambiando estos sı́mbolos y el
de la celda hogar si fuera necesario. M2 coloca cada una de sus cabezas en
la celda que representa el sı́mbolo que la cabeza correspondiente de M1 está
Feliú Sagols Troncoso
Matemáticas-Cinvestav
6
leyendo al final de los movimientos simulados. A lo sumo se necesitan cuatro
movimientos de M2 .
Se necesitan por lo menos m movimientos de M1 para mover la cabeza fuera de
la región representada por una celda hogar y sus vecinos. Ası́, en 8 movimientos, M2 ha simulado por lo menos m movimientos de M1 . Se escoge m de tal
manera que cm ≥ 16.
Si M1 realiza T (n) movimientos, entonces M2 los simula en a lo sumo 8dT (n)/me
movimientos. También, M2 debe copiar y codificar su entrada (m celdas en
una), luego regresar la cabeza de la cinta de entrada simulada al extremo
izquierdo. Esto toma n + dn/me movimientos, para un total de
n + dn/me + 8dT (n)/me
(12.1)
movimientos. Como dxe < x + 1 para cualquier x, (12.1) está acotada superiormente por
n + n/m + 8T (n)/m + 2.
(12.2)
Ahora se asume que inf n→∞ T (n)/n = ∞, por lo que para cualquier constante
d existe un nd tal que para toda n ≥ nd , T (n)/n ≥ d, o expresado de otra
manera, n ≤ T (n)/d. Ası́, siempre que n ≥ 2 (lo que implica que n + 2 ≤ 2n)
y n ≥ nd , (12.2) está acotada superiormente por
8
2
1
T (n)
+ +
.
(12.3)
m d md
Todavı́a no se ha especificado a d. Recordando el hecho de que cm ≥ 16,
se escoge d = m/4 + 81 , y se sustituye m por 16/c en (12.3). Entonces para
toda n ≥ max(2, nd ), el número de movimientos realizados por M2 no excede
a cT (n).
Para reconocer el número finito de palabras de longitud menor que el máximo
de 2 y nd , M2 utiliza únicamente su control finito, tomando n + 1 movimientos
para leer su entrada y alcanzar la celda en blanco que marca el final de la
entrada. Ası́ el tiempo de complejidad de M2 es cT (n). Recuerde que por
complejidad en tiempo, cT (n) se refiere al max(n + 1, dcT (n)e).
Corolario Si inf n→∞ T (n)/n = ∞ y c > 0, entonces
DTIME(T (n)) = DTIME(cT (n)).
Demostración El teorema 12.3 es una prueba directa para cualquier lenguaje
L aceptado por una MTD con dos o más cintas en tiempo T (n). Claramente
si L es aceptado por una MT de 1-cinta, es aceptado por una MT de 2-cintas
de la misma complejidad en tiempo.
El teorema 12.3 no se aplica si T (n) es un múltiplo constante de n, puesto que
7
Curso Básico de Computación
entonces inf n→∞ T (n)/n es una constante, no infinito. Sin embargo, la construcción del Teorema 12.3, con un análisis más cuidadoso en la cota de tiempo
de M2 , muestra lo siguiente.
Teorema 12.4 Si L es aceptado por una MT tiempo–acotada cn de k–cintas,
para k > 1 y para alguna constante c, entonces para cada > 0, L es aceptado
por una MT tiempo–acotada (1 + )n de k-cintas.
Demostración Tómese m = 16 · c/ en la demostración del teorema 12.3.
Corolario Si T (n) = cn para alguna c > 1, entonces DTIME(T (n)) =
DTIME((1 + )n) para cualquier > 0.
Corolario (de los teoremas 12.3 y 12.4)
a. Si inf n→∞ T (n)/n = ∞, entonces NTIME(T (n)) = NTIME(cT (n)) para
cualquier c > 0.
b. Si T (n) = cn para alguna constante c, entonces NTIME(T (n)) = NTIME((1+
)n), para cualquier > 0
Demostración Las pruebas son análogas a los teoremas 12.3 y 12.4
Reducción en el número de cintas para
las clases de complejidad en tiempo
Teorema 12.5 Si L está en DTIME(T (n)), entonces L es aceptado en tiempo
T 2 (n) por una MT de una cinta.
Demostración En la construcción del teorema 7.2, donde se pasaba de una
MT multicintas a una MT de una sola cinta, M2 utiliza a lo sumo 6T 2 (n)
pasos para simular T (n) pasos de M√
1 . Por el teorema 12.3, se puede acelerar
M1 para que corra en tiempo T (n)/ 6. Entonces M2 es una MT de una sola
cinta que acepta a L en T 2 (n) pasos.
Corolario Si L está en NTIME(T (n)), entonces L es aceptado por una MTND
de una sola cinta de tiempo en complejidad no determinı́stico T 2 (n).
Demostración Análoga a la prueba del teorema.
Si se restringe a dos cintas la pérdida de tiempo es considerablemente menor.
Teorema 12.6 Si L es aceptado por una máquina de Turing con k–cintas
tiempo–acotada T (n), entonces L es aceptado por una MT M2 , la cual consiste
de dos cintas de almacenamiento, en tiempo T (n) log T (n).
Feliú Sagols Troncoso
Matemáticas-Cinvestav
8
Demostración La primera cinta de almacenamiento de M2 tendrá dos pistas
por cada cinta de almacenamiento de M1 . Por conveniencia, nos enfocaremos
en dos pistas correspondientes a una cinta en particular de M1 . Las otras cintas de M1 se simulan exactamente de la misma manera. La segunda cinta de
M2 es un almacenador temporal, pues se utiliza únicamente para transportar
bloques de datos en la cinta 1.
Una celda en particular de la cinta 1, conocida como B0 , tendrá los sı́mbolos de
almacenamiento leı́dos por cada una de las cabezas de M1 . En lugar de mover
los marcadores de las cabezas, M2 transportará datos a través de B0 en la
dirección opuesta a la del movimiento de la cabeza de M1 que está siendo simulada. Ası́ M2 puede simular cada movimiento de M1 por mirar únicamente a
B0 . A la derecha de la celda B0 estarán los bloques B1 , B2 , . . . de longitud exponencialmente creciente; es decir, con Bi de longitud 2i−1 . Similarmemente,
a la izquierda de B0 existen bloques B−1 , B−2 , . . . con B−i de longitud 2i−1 .
Se asume que existen marcadores entre los bloques, a pesar de que ellos no
aparecen hasta que el bloque es utilizado.
a0 va a denotar los contenidos de la celda inicialmente escaneada por la cabeza
de lectura de la cinta de M1 . Los contenidos de las celdas a la derecha de ésta
son a1 , a2 , . . . , y los de su izquierda a−1 , a−2 , . . . Los valores de las ai ’s pueden
cambiar cuando entren a B0 ; no son sus valores, sino sus posiciones en las
pistas de la cinta 1 de M2 lo que importa. Inicialmente se asume que la pista
superior de M2 para la cinta de M1 en cuestión, está vacı́a, mientras que la
pista inferior tiene . . . , a−2 , a−1 , a0 , a1 , a2 , . . . Estos se colocan en los bloques
. . . , B−2 , B−1 , B0 , B1 , B2 , . . . como se muestra en la siguiente figura.
a−7 a−6 a−5 a−4 a−3 a−2 a−1
|
{z
B−3
} | {z }
B−2
a0
B−1 B0
a1
B1
a2
a3
a4
| {z } |
B2
a5
a6
{z
B3
a7
}
Después de la simulación de cada movimiento de M1 , ocurrirá lo siguiente:
1) Para cualquier i > 0, o Bi está llena (ambas pistas) y B−i está vacı́a, o
Bi está vacı́a y B−i está llena, o tanto las pistas inferiores de Bi y B−i están
llenas mientras que las pistas superiores están vacı́as.
2) Los contenidos de Bi (o de B−i ) representan celdas consecutivas en la cinta
representada de M1 . Para i > 0, la pista superior representa celdas a la
izquierda de aquellas representadas por la pista inferior; para i < 0, la pista
9
Curso Básico de Computación
superior representa a celdas que están a la derecha de aquellas que están en la
pista inferior.
3) Para i < j, Bi representa celdas a la izquierda de aquellas de Bj .
4) B0 tiene llena únicamente su pista inferior, y su pista superior está marcada
de manera especial.
Para mostrar cómo es que los datos son transferidos, se puede imaginar que
la cabeza de la cinta de M1 en cuestión se mueve a la izquierda. Entonces M2
debe de mover el dato correspondiente a la derecha. Para hacerlo, M2 mueve
la cabeza de la cinta 1 desde B0 , donde descansa, y se va hacia la derecha
hasta que encuentra el primer bloque, digamos Bi , que no tiene llenas ambas
pistas. Entonces M2 copia todos los datos de B0 , B1 , . . . , Bi−1 , en la cinta 2
y los almacena en la pista inferior de B1 , B2 , . . . , Bi−1 más la pista inferior
de Bi , asumiendo que la pista inferior de Bi no está llena aún. En caso de
que ya estuviera llena, se utiliza entonces la pista superior. En cualquiera
de los dos casos, hay espacio suficiente para distribuir los datos. Nótese que
los datos pueden ser tomados y almacenados en su nueva locación en tiempo
proporcional a la longitud de Bi .
Luego, en tiempo proporcional a la longitud de Bi , T1 puede encontrar B−i
(por ejemplo, utilizando la cinta 2 para medir la distancia desde Bi hasta B0 ).
Si B−i está completamente llena, T1 toma la pista superior de B−i y la almacena en la cinta 2. Si B−i está medio llena, la pista inferior se pone en la cinta
2. En cualquier caso, lo que ha sido copiado en la cinta 2 es luego copiado a las
pistas inferiores de B−(i−1) , B−(i−2) , . . . , B0 (por la regla 1, estas pistas tienen
que estar vacı́as, puesto que las de B1 , B2 , . . . , Bi−1 estaban llenas. Nuevamente, obsérvese que hay suficiente espacio para almacenar los datos, y todas
las operaciones anteriores pueden realizarse en tiempo proporcional a la longitud de Bi . También se puede observar que los datos pueden ser distribuidos
de manera que satisfagan las reglas (1), (2) y (3).
Se da el nombre a todo lo que se acaba de describir de operación-Bi . El caso
en el cual la cabeza de M1 se mueve a la derecha es análogo. En la siguiente
figura se muestra el contenido sucesivo de los bloques conforme M1 mueve su
cabeza por 5 celdas hacia la izquierda.
Feliú Sagols Troncoso
B−3
Matemáticas-Cinvestav 10
B−2
B−1 B0 B1
a−7 a−6 a−5 a−4 a−3 a−2 a−1 a0
a1
B2
B3
a2
a3
a4
a5
a6
a7
a2
a3
a4
a5
a6
a7
a0
a1
a−3 a−2 a−1 a2
a3
a4
a5
a6
a7
a−2 a0
a1
a−3 a−1 a2
a3
a4
a5
a6
a7
a0
a1
a2
a3
a−7 a−6 a−5 a−4 a−3 a−2 a−1 a4
a5
a6
a7
a0
a1
a2
a3
a−5 a−3 a−2 a−1 a4
a5
a6
a7
a0
a−7 a−6 a−5 a−4 a−3 a−2
a−7 a−6 a−5 a−4
a−1 a1
a−7 a−6 a−5 a−4
a−4
a−7 a−6
Se puede observar que por cada cinta de M1 , M2 debe realizar una operaciónBi a lo sumo una vez por cada 2i−1 movimientos de M1 , pues necesita esta
cantidad de movimientos por B1 , B2 , . . . , Bi−1 , los cuales están semivacı́os después de una operación-Bi , para llenarla. También, una operación-Bi no puede
ser realizada hasta que hayan ocurrido al menos 2i−1 movimientos en M1 . De
aquı́, si M1 opera en tiempo T (n), M2 realizará únicamente operaciones-Bi ,
para aquellas i tales que i ≤ log2 T (n) + 1.
Hasta ahora se puede concluir que existe una constante m, tal que M2 utiliza a
lo sumo m2i movimientos para realizar una operación-Bi . Si M1 realiza T (n)
movimientos, M2 realiza a lo sumo
log2 T (n)+1
T1 (n) =
X
i=1
m2i
T (n)
2i−1
(12.4)
movimientos cuando simula una cinta de M1 .
De (12.4), se obtiene
T1 (n) = 2mT (n)dlog2 T (n) + 1e,
y de (12.5),
T1 (n) < 4mT (n) log2 T (n).
(12.5)
11
Curso Básico de Computación
El lector debe ser capaz de observar que M2 opera en tiempo porporcional a
T1 (n) incluso cuando M1 realiza movimientos utilizando diferentes cintas de
almacenamiento en lugar de solamente la única en la cual se ha concentrado la
demostración. Por el teorema 12.3, se puede modificar M2 para que se ejecute
en no más de T (n) log2 T (n) pasos.
Corolario Si L es aceptado por una MTND de k-cintas de complejidad en
tiempo T (n), entonces L es aceptado por una MTND de dos cintas de complejidad en tiempo T (n) log T (n).
Demostración Análoga a la demostración del teorema.
12.3 Teoremas de jerarquı́a
Teorema 12.7 Dada cualquier cota en tiempo (cota en espacio) totalmente
recursiva T (n), existe un lenguaje recursivo L que no está en DTIME(T (n))
(o en DSPACE(T (n)) respectivamente).
Demostración Se demostrará el resultado para el tiempo; el argumento para el
espacio es análogo. El argumento es básicamente una diagonalización. Debido
a que T (n) es totalmente recursiva, existe una MT M para T (n) que siempre
se detiene. Se construye M̂ para que acepte un lenguaje L ⊆ (0 + 1)∗ que es
recursivo pero no está en DTIME(T (n)). Sea xi la i-ésima cadena en el orden
canónico de (0+1)∗ . En el capı́tulo 8, se ordenaron MT’s de una sola cinta con
el alfabeto {0, 1, B}. De manera similar se pueden ordenar MT’s multicinta
con alfabetos de cintas arbitrarios reemplazando sus funciones de transición
por cadenas binarias. El único punto substancial es que los nombres de los
sı́mbolos de las cintas, ası́ como aquellos de los estados, no importan, ası́ que
se puede asumir que todas las MT cuyo alfabeto de entrada es {0, 1} tienen
alfabetos de cintas 0, 1, B, X4 , X5 , . . . , Xm , ası́ se codifica 0, 1 y B por 0, 00 y
000, y se codifica Xi por 0i , i ≥ 4. También se permite un número arbitrario
de unos en frente del código para M que represente también a M , ası́ que M
tiene codificaciones arbitrariamente largas.
Ası́ se puede hablar libremente de Mi , la i-ésima MT multicinta. Ahora se define L = {xi |Mi no acepta a xi dentro de T (|xi |) movimientos}. Se afirma que
L es recursivo. Para reconocer a L se puede ejecutar el siguiente algoritmo,
el cual puede ser implementado en una MT. Dada la entrada w de longitud
n, se simula n en M para computar T (n). Entonces se determina i tal que
w = xi . El entero i escrito en binario es la función de transición de alguna
MT multicinta Mi (si i en binario es una forma impropia para una función de
transición, entonces Mi no tiene movimientos). Se simula w en Mi para T (n)
movimientos, aceptando tanto si Mi se detiene sin aceptarlo o si Mi se ejecuta
por más de T (n) movimientos sin haber aceptado.
Para observar que L no está en DTIME(T (n)), supóngase que L = L(Mi ), y
Feliú Sagols Troncoso
Matemáticas-Cinvestav 12
Mi es acotado en tiempo T (n). ‘?Está xi en L? Si es ası́, Mi acepta a xi
dentro de T (n) movimientos, donde n = |xi |. Ası́, por definición de L, xi no
está en L, lo cual es una contradicción. Si xi no está en L, entonces Mi no
acepta a xi , ası́ que por la definición de L, xi está en L, lo cual es nuevamente
una contradicción. Ambas suposiciones conllevan a contradicciones, ası́ que la
suposición de que Mi es acotada en tiempo T (n) debe ser falsa.
Si T 0 (n) ≥ T (n) para todo n, se sigue de manera inmediata de la definición de
una clase de complejidad en tiempo que DTIME(T (n)) ⊆ DTIME(T 0 (n)). Si
T (n) es una función totalmente recursiva, el teorema 12.7 implica que existe
un conjunto recursivo L que no está en DTIME(T (n)). Sea T̂ (n) el tiempo de
corrida de alguna MT que acepta a L y sea T 0 (n) = max{T (n), T̂ (n)}. Entonces DTIME(T (n)) ( DTIME(T 0 (n)), puesto que L está en el último pero
no en el primero de ellos. Ası́ se sabe que existe una jerarquı́a infinita de clases
de complejidad en tiempo determinı́sticas. Un resultado similar se aplica para
las clases de complejidad en espacio determinı́sticas y para las clases en tiempo
y espacio no determinı́sticas.
El teorema 12.7 demuestra que para cualquier complejidad recursiva en tiempo
o espacio f (n), existe una f 0 (n) tal que algún lenguaje se encuentra en la clase
de complejidad definida por f 0 (n) pero no por f (n).
Una jerarquı́a en espacio
Una función S(n) se dice que es construible en espacio si existe alguna máquina
de Turing M tal que es acotada en espacio S(n), y para cada n, existe alguna
entrada de longitud n en la cual M utiliza S(n) celdas de la cinta. El conjunto de funciones construibles en espacio incluye log n, nk , 2n y n!. Si S1 (n) y
S2 (n) son construibles en espacio, entonces también lo son S1 (n)S2 (n), 2S1 (n) y
S1 (n)S2 (n) . Ası́ el conjunto de funciones construibles en espacio es muy extenso.
Observe que la MT M arriba mencionada no necesita utilizar una cantidad
de espacio S(n) en todas las entradas de longitud n, solamente en alguna entrada de esa longitud. Si para toda n, M utilizara exactamente S(n) celdas en
cualquier entrada de longitud n, entonces se dice que S(n) es completamente
construible en espacio. Cualquier función construible en espacio S(n) ≥ n es
completamente construible en espacio (ejercicio).
Con el fin de simplificar el siguiente resultado se demuestra el lema:
Lema 12.1 Si L es aceptada por una MT espacio–acotada S(n) ≥ log 2 n,
entonces L es aceptada por una MT espacio–acotada S(n) que se detiene en
todas sus entradas.
Demostración Sea M una máquina de Turing fuera de lı́nea espacio–acotada
S(n) con s estados y t sı́mbolos en la cinta que acepta a L. Si M acepta, lo
13
Curso Básico de Computación
hace por una secuencia de a lo más (n + 2)sS(n)tS(n) movimientos, puesto que
si no, de otra manera, alguna DI se repetirı́a. Es decir, existen n + 2 posiciones de la cabeza de entrada, s estados, S(n) posiciones de la cabeza de la
cinta, y tS(n) contenidos en la cinta de almacenamiento. Si se agrega una pista
adicional como un contador de movimientos, M puede detenerse por sı́ misma
después de (4st)S(n) ≥ (n + 2)sS(n)tS(n) movimientos. De manera más exacta,
se coloca en M un contador de longitud log n que cuenta en base 4st. Siempre
que M lee una nueva celda que está más allá de las celdas que contienen el
contador, M incrementa la longitud del contador. Ası́ si M se cicla habiendo
utilizado solamente i celdas de la cinta, entonces el contador detectará esto
cuando la cuenta alcance (4st)max(i,log2 n) , lo cual es al menos (n + 2)sS(n)tS(n) .
Teorema 12.8 Si S2 (n) es una función completamente espacio–construible,
S1 (n)
= 0,
n→∞ S2 (n)
inf
y además S1 (n) y S2 (n) son cada una al menos log2 n, entonces existe un
lenguaje en DSPACE(S2 (n)) que no está en DSPACE(S1 (n)).
Demostración El teorema se demuestra por diagonalización. Considérese una
enumeración de máquinas de Turing fuera de lı́nea con alfabeto de entrada
{0, 1} y con una cinta de almacenamiento, basada en la codificación binaria
de la sección 8.3, pero permitiendo un prefijo de 1’s, para que cada MT tenga
codificaciones arbitrariamente largas. Se construye una MT M que utiliza
espacio S2 (n) y no concuerda con al menos una entrada con cualquier MT
espacio–acotada S1 (n).
Con la entrada w, M comienza por marcar S2 (n) celdas en una cinta, donde
n es la longitud de w. Puesto que S2 (n) es completamente construible en espacio, esto puede ser hecho simulando una MT que utiliza exactamente S2 (n)
celdas en cada entrada de longitud n. En lo que sigue, si M intenta abandonar
las celdas marcadas, M se detiene y rechaza a w. Esto garantiza que M sea
acotada en espacio S2 (n).
Lo siguiente es que M comienza una simulación en la MT Mw (la MT codificada por la cadena binaria w) de la entrada w. Si Mw está acotada en espacio
S1 (n) y tiene t sı́mbolos en la cinta, entonces la simulación requiere espacio
dlog2 teS1 (n). M acepta a w solamente si M puede completar la simulación
en espacio S2 (n) y Mw se detiene sin aceptar a x.
Debido a que M está acotada en espacio S2 (n), L(M ) está en DSPACE(S2 (n)).
L(M ) no está en DSPACE(S1 (n)). Supóngase que existe una MT M̂ espacio–
acotada S1 (n) con t sı́mbolos en la cinta que acepta L(M ). Por el lema 12.1 se
puede asumir que M̂ se detiene en todas las entradas. Puesto que M̂ aparece
Feliú Sagols Troncoso
Matemáticas-Cinvestav 14
infinitamente seguido en la enumeración, y
inf
n→∞
S1 (n)
= 0,
S2 (n)
existe una cadena w lo suficientemente larga, |w| = n, tal que dlog 2 teS1 (n) <
S2 (n) y Mw es M̂ . Con la entrada w, M tiene el espacio suficiente para simular
Mw y aceptar si y solo si Mw rechaza. De donde L(Mw ) 6= L(M ), lo cual es una
contradicción. Ası́ L(M ) está en DSPACE(S2 (n)) pero no en DSPACE(S1 (n)).
Mientras que la mayorı́a de las funciones son completamente construibles en el
espacio, se necesita únicamente constructibilidad en el espacio para el teorema
12.8.
Corolario El teorema 12.8 es cierto incluso si S2 (n) es construible en espacio pero no completamente construible en espacio.
Demostración Sea M1 una MT que construye S2 (n) en alguna entrada. Sea Σ
el alfabeto de la entrada de M1 . Se diseñará M para que acepte un lenguaje
sobre el alfabeto Σ × {0, 1}. Eso es, la entrada a M es tratada como si tuviera
dos pistas: la primera es utilizada como la entrada de M1 , la segunda como el
código de una MT con alfabeto de entrada Σ × {0, 1}. La única modificación
al diseño de M es que M debe marcar bloques en las cintas 1 y 2 simulando
M1 en la primera pista de M . Se debe demostrar que M no concuerda con
ninguna MT M̂ tiempo–acotada S1 (n) en una entrada cuya longitud, n, sea
suficientemente larga, cuya primera pista es una cadena en Σn que cause que
M1 utilice S2 (n) celdas, y cuya segunda pista es una codificación de M̂ .
Se deja como ejercicio la demostración de que la condición S2 (n) ≥ log2 n en
el teorema 12.8 y su corolario no es necesaria. La demostración no es una
diagonalización, sino que se basa en mostrar que
{wci w|w ∈ (a + b)∗ ,
|w| = S2 (n) y i = n − 2S2 (n)}
es aceptada en espacio S2 (n) pero no en espacio S1 (n) si
inf
n→∞
S1 (n)
= 0,
S2 (n)
y S2 (n) < log2 n.
Nótese que si inf n→∞ [S1 (n)/S2 (n)] = 0 y S1 (n) ≤ S2 (n) para toda n, entonces
DSPACE(S1 (n)) ( DSPACE(S2 (n)).
Sin embargo, si no se tiene que S1 (n) ≤ S2 (n), entonces es posible que
DSPACE(S1 (n)) y DSPACE(S2 (n)) contengan lenguajes no incluidos en el
otro.
15
Curso Básico de Computación
Una jerarquı́a en tiempo
Se dice que una función T (n) es construible en tiempo si existe una máquina
de Turing multicinta M tiempo–acotada T (n) tal que por cada n existe alguna entrada en la cual M realiza exactamente T (n) movimientos. Igual que
las funciones espacio–construibles, existe una extensa jerarquı́a de funciones
tiempo–construibles. Se dice que T (n) es completamente construible en tiempo
si existe una MT que utiliza tiempo T (n) en todas las entradas de longitud
n. Nuevamente, la mayorı́a de las funciones comunes son completamente construibles en tiempo.
Teorema 12.9 Si T2 (n) es una función completamente tiempo–construible,
y
T1 (n) log T1 (n)
= 0,
inf
n→∞
T2 (n)
entones existe un lenguaje en DTIME(T2 (n)) pero no en DTIME(T1 (n)).
Demostración La demostración es similar a la del teorema 12.8, y solamente
se presenta una breve explicación de la construcción necesaria. Una MT M
tiempo–acotada T2 (n) se construye para operar de la manera siguiente. M
trata la entrada w como una codificiación de una máquina de Turing M̂ y
simula w en M̂ . Una dificultad surge debido a que M tiene un número fijo
de cintas, ası́ que para algunas w’s, M̂ tendrá más cintas que M . Afortunadamente, por el teorema 12.6, se necesitan únicamente dos cintas para simular cualquier M̂ , a pesar que está simulación tiene como costo un factor de
log T1 (n). Además, debido a que M̂ puede tener muchos sı́mbolos de cinta, los
cuales deben ser codificados en un número fijo de sı́mbolos, la simulación de
T1 (n) movimientos de M̂ por M requiere tiempo cT1 (n) log T1 (n), donde c es
una constante que depende de M̂ .
Con el fin de asegurar que la simulación de M̂ esté acotada en tiempo T2 (n),
M ejecuta de manera simultánea los pasos de una MT (utilizando cintas adicionales) que utilicen exactamente un tiempo T2 (n) en todas las entradas de
longitud n. Esta es la razón por la cual T2 (n) debe ser completamente construible en tiempo. Después de T2 (n) pasos, M se detiene. M acepta a w
solamente si la simulación de M̂ se completa y M̂ rechaza a w. La codificación de M̂ está diseñada como en el teorema previo, para que ası́ M̂ tenga
codificaciones arbitrariamente largas. Ası́, si M̂ es una máquina de Turing
tiempo–acotada T1 (n), existirá una w lo suficientemente larga que codifique a
M̂ de tal manera que
cT1 (|w|) log T1 (|w|) ≤ T2 (|w|),
y la simulación llegará a un final. En este caso, w está en L(M ) si y solamente
si w no está en L(M̂ ). Ası́ L(M ) 6= L(M̂ ) para cualquier M̂ que sea acotada
en tiempo T1 (n). Por lo tanto L(M ) está en DTIME(T2 (n)) − DTIME(T1 (n)).
Feliú Sagols Troncoso
Matemáticas-Cinvestav 16
Ejemplo Sea T1 (n) = 2n y T2 (n) = n2 2n . Entonces
T1 (n) log2 T1 (n)
1
= inf
= 0.
n→∞
n→∞ n
T2 (n)
inf
Ası́ se puede utilizar el teorema 12.9, y DTIME(2n ) 6= DTIME(n2 2n ). Puesto
que T1 (n) ≤ T2 (n) para toda n, se puede concluir que DTIME(2n ) ( DTIME(n2 2n ).