# Qualquer problema NP-Complete pode ser resolvido usando no máximo espaço polinomial (mas usando tempo exponencial?)

12

Eu li sobre o NPC e sua relação com o PSPACE e gostaria de saber se os problemas do NPC podem ser resolvidos deterministicamente usando um algoritmo com o pior requisito de espaço polinomial, mas potencialmente levando tempo exponencial (2 ^ P (n) onde P é polinomial).

Além disso, ele pode ser generalizado para EXPTIME em geral?

A razão pela qual estou perguntando isso é que escrevi alguns programas para resolver casos degenerados de um problema de NPC, e eles podem consumir quantidades muito grandes de RAM para instâncias difíceis, e me pergunto se existe uma maneira melhor. Para referência, consulte https://fc-solve.shlomifish.org/faq.html .

Respostas:

27

De um modo geral, o seguinte é verdadeiro para qualquer algoritmo:

1. Suponha que $$AAA$$ seja um algoritmo executado em $$f(n)f(n)f(n)$$ tempo. Então $$AAA$$ não poderia ocupar mais do que $$f(n)f(n)f(n)$$ espaço, pois escrever $$f(n)f(n)f(n)$$ bits requer $$f(n)f(n)f(n)$$ tempo.
2. Suponha que $$AAA$$ é um algoritmo que requer espaço $$f(n)f(n)f(n)$$ . Então, em $$2f(n)2f(n)2^{f(n)}$$ , $$AAA$$ pode visitar cada um de seus estados diferentes, portanto, não pode ganhar nada executando mais de $$2f(n)2f(n)2^{f(n)}$$ .

Segue que:

$$NPNP\mathbf{NP}$$ $$⊆PSPACE⊆PSPACE\subseteq \mathbf{PSPACE}$$

A declaração é conhecida como parte das relações entre as classes, conforme ilustrado no seguinte diagrama: A explicação é simples: um problema $$QQQ$$ $$∈∈\in$$ $$NPNP\mathbf{NP}$$ possui um certificado de comprimento polinomial $$yyy$$ . Um algoritmo que testa todos os certificados possíveis é um algoritmo que decide $$QQQ$$ no tempo $$2nO(1)2nO(1)\large 2^{n^{O(1)}}$$ .

Seu requisito de espaço é:

• $$yyy$$ (polinômio em$$nnn$$ )
• espaço necessário para verificar $$yyy$$ . Como $$yyy$$ é 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, $$QQQ$$ pode ser decidido com espaço polinomial.

Exemplo:

Suponha que $$φφ\varphi$$ é uma instância de 3-CNF nos literais $$x1…xnx1…xnx_1 \dots x_n$$ , com cláusulas $$mmm$$ . Uma atribuição $$fff$$ é alguma função $$f:{x1…xn}→{0,1}f:{x1…xn}→{0,1}f:\{x_1\dots x_n\} \rightarrow \{0,1\}$$ .

Afirma que:

• Existem $$2n2n2^n$$ atribuições diferentes.
• Dada uma atribuição $$fff$$ , leva $$O(m)O(m)O(m)$$ tempo para calcular o valor de $$φφ\varphi$$ , portanto, não pode exigir mais que $$O(m)O(m)O(m)$$ espaço.

Portanto, um algoritmo $$AAA$$ 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∈PSPACE\in \mathbf{PSPACE}$$ , e como 3-SAT é NP-Completo, $$NPNP\mathbf{NP}$$ $$⊆PSPACE⊆PSPACE\subseteq \mathbf{PSPACE}$$

1
Por que EXPSPACE e EXPTIME estão relacionados? Eu pensei que tempo e espaço eram recursos diferentes. Um exemplo que vem à mente é a quebra de um esquema de criptografia, o que exigiria EXPTIME, mas o espaço constante
WeCanBeFriends

6
The intuitive here is, if you use $f\left(n\right)$$f(n)$ space, you must use at least $f\left(n\right)$$f(n)$ time, and you shouldn't use more than ${2}^{f\left(n\right)}$$2^{f(n)}$ time, because then you must be revisitting the same states. That's why PSPACE $\subseteq$$\subseteq$ EXP
lox

Is f(n) different to O(n) in your example?
WeCanBeFriends

1
@WeCanBeFriends One cannot employ exponential time with constant space: you need at least the space used to count until that exponential number (e.g. the program counter of an assembly language), which is polynomial (logarithmic in the exponential)
gigabytes

4
@gigabytes We don't know that. The best we know is that $P\ne EXPTIME$$P\not = EXPTIME$.
Tom van der Zanden

9

Yes. Here's a sketch of a direct proof.

If a problem is in $$NPNP\mathrm{NP}$$, there is a nondeterministic Turing machine $$MMM$$ that decides it, and there's a polynomial $$ppp$$ such that none of $$MMM$$'s computation paths on inputs of length $$nnn$$ take more than $$p(n)p(n)p(n)$$ steps. That means that a single path can't use more than $$p(n)p(n)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 constant $$ccc$$ that depends only on the transition function of $$MMM$$ (and not on its input) such that $$MMM$$ has at most $$ccc$$ nondeterministic choices at any step. That means that there are at most $$cp(n)cp(n)c^{p(n)}$$ different computation paths for any input of length $$nnn$$. We can simulate all of these $$cp(n)cp(n)c^{p(n)}$$ paths as follows. First, write out a $$p(n)p(n)p(n)$$-digit number in base-$$ccc$$ (this takes space $$p(n)p(n)p(n)$$ but that's polynomial, so it's OK). Then, simulate the operation of $$MMM$$ and, at the $$iii$$th step of the computation, use the $$iii$$th digit of the number to decide which nondeterministic choice to make. If, for example, the $$iii$$th digit is $$666$$ 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 number $$0…00…00\dots 0$$, simulate that path of $$MMM$$, increment the number, simulate the next path, and so on, until we reach the number where every digit is $$c−1c−1c-1$$. We've now simulated every possible computation path, and we've done it in time about $$cp(n)p(n)cp(n)p(n)c^{p(n)}p(n)$$, using space about $$2p(n)2p(n)2p(n)$$. That's exponential time and polynomial space, as required.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.