Tout problème NP-Complete peut-il être résolu en utilisant au maximum l'espace polynomial (mais en utilisant le temps exponentiel?)

12

J'ai lu sur NPC et sa relation avec PSPACE et je souhaite savoir si les problèmes NPC peuvent être résolus de manière déterministe en utilisant un algorithme avec un espace polynomial dans le pire des cas, mais prenant potentiellement un temps exponentiel (2 ^ P (n) où P est polynomial).

De plus, peut-il être généralisé à EXPTIME en général?

La raison pour laquelle je pose cette question est que j'ai écrit certains programmes pour résoudre les cas dégénérés d'un problème NPC, et qu'ils peuvent consommer de très grandes quantités de RAM pour les instances dures, et je me demande s'il y a une meilleure façon. Pour référence, voir https://fc-solve.shlomifish.org/faq.html .

Shlomi Fish
la source

Réponses:

27

De manière générale, ce qui suit est vrai pour tout algorithme:

  1. Supposons que A est un algorithme qui s'exécute en temps f(n) . Alors A ne pouvait pas prendre plus de f(n) espace, car l'écriture de f(n) bits nécessite f(n) temps.
  2. Supposons que A est un algorithme qui nécessite un espace f(n) . Puis en 2f(n) temps, A peut visiter chacun de ses différents états, donc ne peut rien gagner en exécutant plus de 2f(n) temps.

Il s'ensuit que:

NP PSPACE

Le statemement est connu comme faisant partie des relations entre les classes, comme illustré par le diagramme suivant:

relations entre classes

L'explication est simple: un problème Q NP a un certificat de longueur polynomiale y . Un algorithme qui teste tous les certificats possibles est un algorithme qui décide de Q dans le temps 2nO(1) .

Son encombrement est:

  • y (polynôme enn )
  • yy

Q


Exemple:

φx1xnmff:{x1xn}{0,1}

Il soutient que:

  • 2n
  • fO(m)φO(m)

A

Il s'ensuit que:

PSPACENP PSPACE

saumon fumé
la source
1
Pourquoi EXPSPACE et EXPTIME sont-ils liés? Je pensais que le temps et l'espace étaient des ressources différentes. Un exemple qui me vient à l'esprit est la rupture d'un schéma de cryptographie, qui nécessiterait EXPTIME, mais un espace constant
WeCanBeFriends
6
f(n)f(n)2f(n)
F (n) est-il différent de O (n) dans votre exemple?
WeCanBeFriends
1
@WeCanBeFriends On ne peut pas utiliser de temps exponentiel avec un espace constant: il faut au moins l'espace utilisé pour compter jusqu'à ce nombre exponentiel (par exemple le compteur de programme d'un langage d'assemblage), qui est polynomial (logarithmique dans l'exponentiel)
gigaoctets
4
PEXPTIME
9

Oui. Voici un croquis d'une preuve directe.

NPMpMnp(n)p(n)

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

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

David Richerby
la source