De um modo geral, o seguinte é verdadeiro para qualquer algoritmo:
- Suponha que A seja um algoritmo executado em f(n) tempo. Então A não poderia ocupar mais do que f(n) espaço, pois escrever f(n) bits requer f(n) tempo.
- Suponha que A é um algoritmo que requer espaço f(n) . Então, em 2f(n) , A pode visitar cada um de seus estados diferentes, portanto, não pode ganhar nada executando mais de 2f(n) .
Segue que:
NP ⊆PSPACE
A declaração é conhecida como parte das relações entre as classes, conforme ilustrado no seguinte diagrama:
A explicação é simples: um problema Q ∈ NP possui um certificado de comprimento polinomial y . Um algoritmo que testa todos os certificados possíveis é um algoritmo que decide Q no tempo 2nO(1) .
Seu requisito de espaço é:
- y (polinômio emn )
- espaço necessário para verificar y . Como y é um certificado polinomial, ele pode ser verificado em tempo polinomial e, portanto, não pode exigir mais do que espaço polinomial.
Como a soma de dois polinômios também é um polinômio, Q pode ser decidido com espaço polinomial.
Exemplo:
Suponha que φ é uma instância de 3-CNF nos literais x1…xn , com cláusulas m . Uma atribuição f é alguma função f:{x1…xn}→{0,1} .
Afirma que:
- Existem 2n atribuições diferentes.
- Dada uma atribuição f , leva O(m) tempo para calcular o valor de φ , portanto, não pode exigir mais que O(m) espaço.
Portanto, um algoritmo A que verifica todas as atribuições possíveis usará espaço polinomial, executará em tempo exponencial e decidirá 3-SAT.
Segue que:
3-SAT ∈PSPACE , e como 3-SAT é NP-Completo, NP ⊆PSPACE
Yes. Here's a sketch of a direct proof.
If a problem is inNP , there is a nondeterministic Turing machine M that decides it, and there's a polynomial p such that none of M 's computation paths on inputs of length n take more than p(n) steps. That means that a single path can't use more than p(n) tape cells, so we can simulate a single path deterministically in polynomial space.
But we need to simulate all the paths. Well, there is a constantc that depends only on the transition function of M (and not on its input) such that M has at most c nondeterministic choices at any step. That means that there are at most cp(n) different computation paths for any input of length n . We can simulate all of these cp(n) paths as follows. First, write out a p(n) -digit number in base-c (this takes space p(n) but that's polynomial, so it's OK). Then, simulate the operation of M and, at the i th step of the computation, use the i th digit of the number to decide which nondeterministic choice to make. If, for example, the i th digit is 6 and there are only four choices that can be made, abandon that simulation and go on to the next one.
So, now, to do the whole simulation, we start by writing out the number0…0 , simulate that path of M , increment the number, simulate the next path, and so on, until we reach the number where every digit is c−1 . We've now simulated every possible computation path, and we've done it in time about cp(n)p(n) , using space about 2p(n) . That's exponential time and polynomial space, as required.
fonte