L = SPACE(log(n))
NL = NSPACE(log(n))
¿Que se puede alojar en espacio log?
Ya vimos que PATH ∈ NL.
uPATH ∈ L (Reingold 2004)
{0k1k ∣ k ≥ 0} ∈ L:
Un transductor logspace es una MT con:
Un transductor logspace M computa una función f: {0, 1} * ↦ {0, 1} * si para todo input x, M se detiene con f(x) escrito en la cinta de output.
Decimos que f es calculable en espacio logarítmico.
Para dos lenguajes B, C, si existe una función f calculable en espacio logarítmico tal que para todo x ∈ {0, 1} * , x ∈ B ssi f(x) ∈ C, entonces decimos que B es reducible en espacio logarímico a C (escrito B ≤ LC).
C ∈ NL es NL completo si para todo B ∈ NL, B ≤ LC.
Si B ≤ LC y C ∈ L entonces B ∈ L.
- Mostramos que existe MB que decide B en espacio log.
- Primer intento: pegar el transductor T de B ≤ LC con la máquina MC que decide C.
- Pero eso necesita f(x), que puede tener un tamaño más grande que logarítmico en función de B.
Si T es un transductor logspace que computa x ↦ f(x), entonces se puede modificar en Tʹ que computa ⌊x, i⌋ ↦ f(x)i en espacio log.
- Idea:
Tʹ tiene un contador inicializado a i.
Cuando T va para escribir un bit de f(x), Tʹ no escribe nada pero decementa el contador.
Cuando el contador llega a 0, Tʹ escribe el bit f(x)i y se detiene.- Ese contador ocupa un espacio O(log∣f(x)∣) = O(log∣x∣)
- Modificar T para que compute sólo el bit de f(x) que MC necesita (entonces su input tiene forma ⌊x, i⌋)
- MB controla donde está el cabezal de lectura de MC en f(x), y corre el cálculo de f(x)i por T
- Hacer eso necesita calcular de vuelta varias partes de f(x), entonces es ineficiente en tiempo, pero es eficiente en espacio.
- MB corre en espacio O(log∣f(x)∣) + O(s(∣x∣)) + O(sʹ(∣f(x)∣)), con s y sʹ el espacio de T y MC
- entonces MB corre en espacio O(log∣x∣)
- sea B ∈ NL, mostramos B ≤ LPATH
- M es nondeterminística y decide B en espacio O(log(n))
- usamos x ↦ f(x) = ⌊GM, x, Cstart, Caccept⌋
- M(x) = 1 ssi existe camino de Cstart a Caccept
- x ↦ f(x) es calculable en espacio log:
- representar GM, x como matriz de adjacencia
- para escribir un bit de esa matriz, computar si las configuraciones C y Cʹ se siguen según las funciones de transición de M
- se hace en espacio O(∣C∣ + ∣Cʹ∣) = O(log∣x∣) deterministicamente
- un transductor logspace tiene un tiempo de corrida polinomial
- entonces si B es reducible en espacio log a C, también B es reducible en tiempo polinomial a C
- se puede definir NP completitud con reducciones logspace (el libro de Papadimitriou lo hace), y ¡nada se rompe!
- es decir, no conocemos ningun ejemplo de problema en NP que sea completo para reducciones en tiempo polinomial, y no para reducciones en espacio log
- Se puede modificar la prueba del teorema de Cook-Levin que vimos de manera que sea en espacio log
- podríamos pensar que NL es la clase de problemas que tienen soluciones chequeables en espacio log
- problema: SAT tiene soluciones chequeables en espacio log (no obvio pero lo asumimos)
- tendríamos NP ⊆ NL, poco probable dado que NL ⊆ P
- ¿qué es lo que hay que arreglar en esa definición?
B ∈ NL si existe una MT M determinística con una cinta adicional en lectura única, y un polinomio p: ℕ ↦ ℕ tal que para todo x ∈ {0, 1} * :
x ∈ B ↔ ∃ u ∈ {0, 1}p(∣x∣)s. t. M(x, u) = 1
Con:
Mostramos que B ∈ NLnd ⇔ B ∈ NLcert
∃ MTND N logspace ⇔ ∃ MTD M logspace con certificado
- N corre en tiempo polinomial
- las elecciónes de N forman el certificado u de M
- La definición de δ de M sigue las δ0 y δ1 de N, en particular:
δ(0, . . . ) = δ0(. . . )
δ(1, . . . ) = δ1(. . . )
0 o 1 siendo el bit leido por M en la cinta del certificado- dado que N usa espacio log, M también
El complemento de PATH está en NL
Mostramos que hay un algoritmo A corriendo en espacio O(log(n)) tal que:
A(G, s, t, u) = 1 ssi t no es alcanzable desde s en G, con certificado u en lectura única.
Llamamos:
Para cualquier input, A ya sabe:
C0 = {s}
c0 = 1
v ∈ Ci puede ser chequeado facilmente: un certificado pathi(s, v) en lectura única es la secuencia de nodos v0, v1, …, vk del camino de s a v (k ≤ i).
Además de pathi(s, v) necesitamos dos tipos de certificados:
Con certificados de tipo 2 nos podemos enterar de los valores c1, …, cn, y al final con un certificado de tipo 1, convencernos que t ∉ Cn.
Certificado noPathi(s, v), asumiendo ci − 1 está conocido:
v1, pathi − 1(s, v1), …, vci − 1, pathi − 1(s, vci − 1)
con v1, …vci − 1 ∈ Ci − 1.
Se puede chequear que
en espacio O(log(n)) con certificado en lectura única.
Certificado sizei(k), asumiendo ci − 1 está conocido:
v1, (no)Pathi(s, v1), v2, (no)Pathi(s, v2), …, vn, (no)Pathi(s, vn)
dependiendo de si v ∈ Ci o no.
Se puede chequear que
en espacio log. con certificado en lectura única.
Un certificado de (G, s, t) ∉ PATH es:
size1(c1), size2(c2), …, sizen − 1(cn − 1), noPathn(s, t)
Cada certificado sizei(ci) puede ser chequeado en espacio log. y después de cada chequeo el verificador sólo necesita alojar ci.
Entonces todo el chequeo se hace en espacio log.
Si s: ℕ ↦ ℕ constructible en tiempo ( ≥ log(n)), entonces NSPACE(s(n)) = coNSPACE(s(n)).
Demo: Sea B ∈ coNSPACE(s(n)).
Entonces existe MTND M que usa espacio s(n) tal que x ∈ B ssi ninguna secuencia de elecciones de M con input x llega a qaccept.
Existe un transductor TB que computa x ↦ ⌊GM, x, Cstart, Caccept⌋ en espacio O(s(n)).
noPATH ∈ NL ie existe MTND N que decide noPATH en espacio log.
Componiendo TB y N de manera perezosa, obtenemos Mʹ que decide B en espacio O(s(n)), ie, B ∈ NSPACE(s(n)).