È possibile risolvere qualsiasi problema NP-completo utilizzando nella maggior parte dello spazio polinomiale (ma durante l'utilizzo del tempo esponenziale?)


12

Ho letto di NPC e la sua relazione con PSPACE e vorrei sapere se i problemi di NPC possono essere risolti in modo deterministico usando un algoritmo con il requisito di spazio polinomiale nel peggiore dei casi, ma prendendo potenzialmente tempo esponenziale (2 ^ P (n) dove P è polinomiale).

Inoltre, può essere generalizzato a EXPTIME in generale?

Il motivo per cui lo sto chiedendo è che ho scritto alcuni programmi per risolvere casi degenerati di un problema NPC e che possono consumare grandi quantità di RAM per istanze difficili e mi chiedo se esiste un modo migliore. Per riferimento consultare https://fc-solve.shlomifish.org/faq.html .

Risposte:


27

In generale, quanto segue vale per qualsiasi algoritmo:

  1. Supponiamo che A sia un algoritmo che gira in f(n) time. Allora A non può richiedere più di f(n) spazio, poiché crei f(n) bit richiede f(n) tempo.
  2. Supponiamo che A sia un algoritmo che richiede spazio f(n) . Quindi in 2f(n) tempo, A può visitare ciascuno dei suoi diversi stati, quindi non può ottenere nulla eseguendo più di 2f(n) tempo.

Ne consegue che:

NP PSPACE

Lo stato è noto come parte delle relazioni tra le classi, come illustrato dal seguente diagramma:

relazioni tra classi

La spiegazione è semplice: un problema Q NP ha un certificato di lunghezza polinomiale y . Un algoritmo che testa tutti i possibili certificati è un algoritmo che decide Q nel tempo 2nO(1) .

Il suo spazio richiesto è:

  • y (polinomio inn )
  • spazio richiesto per verificare y . Poiché y è un certificato polinomiale, può essere verificato in tempi polinomiali, quindi non può richiedere più dello spazio polinomiale.

Poiché la somma di due polinomi è anche un polinomio, Q può essere deciso con lo spazio polinomiale.


Esempio:

Supponiamo che φ sia un'istanza di 3-CNF su valori letterali x1xn , con clausole m . Un'assegnazione f è una funzione f:{x1xn}{0,1} .

Sostiene che:

  • Ci sono 2n incarichi diversi.
  • Data un'assegnazione f , ci vuole tempo O(m) per calcolare il valore di φ , quindi non può richiedere più di O(m) spazio.

Quindi un algoritmo A che controlla tutti i possibili compiti utilizzerà lo spazio polinomiale, verrà eseguito in tempo esponenziale e deciderà 3-SAT.

Ne consegue che:

3-SAT PSPACE , e poiché 3-SAT è NP-completo, NP PSPACE


1
Perché EXPSPACE e EXPTIME sono correlati? Pensavo che il tempo e lo spazio fossero risorse diverse. Un esempio che viene in mente è la rottura di uno schema crittografico, che richiederebbe uno spazio EXPTIME, ma costante
WeCanBeFriends,

6
f(n)f(n)2f(n)

F (n) è diverso da O (n) nel tuo esempio?
WeCanBeFriends,

1
@WeCanBeFriends Non si può impiegare tempo esponenziale con spazio costante: è necessario almeno lo spazio utilizzato per contare fino a quel numero esponenziale (ad esempio il contatore del programma di un linguaggio assembly), che è polinomiale (logaritmico in esponenziale)
gigabyte

4
PEXPTIME

9

Sì. Ecco uno schizzo di una prova diretta.

NPMpMnp(n)p(n)

cMMccp(n)ncp(n)p(n)cp(n)Miii6

00Mc1cp(n)p(n)2p(n)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.