Chaque problème NP-hard est-il calculable?


Réponses:


15

Non, un problème -hard n'a pas besoin d'être calculable. La définition est assez complète: un problème L est N P- difficile si ce problème ayant une solution poly-temps implique que chaque problème dans N P a une solution poly-temps (c'est-à-dire, une réduction à L existe pour chaque problème dans N P .).NPLNPNPLNP

Les problèmes non calculables sont alors vides de difficulté: supposons que nous puissions en résoudre un en temps polynomial. Ensuite, nous utilisons la preuve qu'il est non calculable pour déduire qu'il est à la fois calculable et non calculable, une contradiction. De ce mensonge, nous pouvons tirer n'importe quoi, à savoir qu'il existe un algorithme polynomial de temps pour tout problème nous examinons.NP

Par exemple, considérons le problème de l' arrêt . Nous pouvons réduire n'importe quel langage N P A à H comme suit, en supposant que nous avons un vérificateur de polytemps f ( s , c ) qui vérifie si c est un certificat pour s A :HNPAHf(s,c)csA

  • Étant donné l'entrée s
  • Construct (mais ne pas courir) Machine de Turing qui prend entrée x tente chaque certificat c et arrête si c est un certificat attestant que l A .MxccsA
  • Retour (c'est-à-dire renvoie vrai si M s'arrête sur l'entrée x )H(M,x)Mx

Ainsi, avec un seul appel à un algorithme poly-temps résolvant le problème d'arrêt, nous pouvons résoudre tout problème en temps polynomial.NP

Une telle réduction n'est pas utile, car elle ne fait que dire si "si faux alors quelque chose". Nous savons déjà qu'il n'y a pas d'algorithme de polytime pour les problèmes non calculables.


7
"La définition est assez complète", mais ce n'est pas ce qui suit cette citation dans votre réponse.

J'ai une question à ce sujet. Je peux imaginer une fonction qui résout le problème d'arrêt pour le plus grand ensemble de programmes possible sous certaines contraintes appropriées, mais je peux imaginer que cette fonction n'est toujours pas calculable (dans le sens où nous ne la trouverions jamais même avec un temps infini) . Pourtant , si l' on en quelque sorte n'avons la solution à ce problème , il ne m'a même clair qu'il devrait résoudre tous les problèmes NP-difficiles nécessairement. Donc, soit la logique de cette réponse ne suit pas (ce qui signifie indécidable! = Non calculable), soit mon raisonnement est imparfait (probable). Quel est donc le défaut?
Mehrdad

12
La plupart de cette réponse est incorrecte, y compris votre définition de NP difficile: le problème A est NP difficile si, "pour chaque problème NP B, il y a une réduction de poly-temps de B à A." Ce n'est pas la même chose que "si A est poly-temps, alors P = NP". (Ce dernier est une conséquence du premier, mais pas l'inverse.) En particulier, il existe presque certainement des problèmes non calculables qui ne sont pas non plus difficiles à NP. Je n'ai pas travaillé sur les détails, mais le problème d'appartenance à un ensemble suffisamment générique (dans le sens du forçage) devrait faire l'affaire. L'ensemble d'arrêt, en particulier, est NP-difficile, cependant, par votre réduction.

7
Pensez à une réduction de poly-temps de A à B comme ceci: il est un programme qui fonctionne en temps polynomiale, mais il a la capacité spéciale de requête, en une seule étape, un oracle que les cas de réponses de problème B. Peu importe si il existe un algorithme poly-temps pour B, ou même si B est calculable, il est toujours logique de poser la question suivante: en supposant que l'oracle répond correctement aux questions qui lui sont posées (en une seule étape), le programme en question fait-il fonctionner en temps polynomial et résoudre correctement les instances du problème A?

2
@MikeHaskel Votre analogie avec l'oracle n'est exacte que si, après avoir interrogé l'oracle, le programme doit s'arrêter avec la même réponse que cet oracle. Sinon, co-SAT se réduit à SAT: interrogez l'oracle et annulez. Dans certaines notions de réduction, par exemple la réduction de Turing, cela serait acceptable, mais dans la réduction de poly-temps standard, ou même dans la réduction de plusieurs, ce n'est pas le cas.
chi

16

Il semble y avoir une grande confusion dans cette communauté concernant cette question. Je donnerai une réponse détaillée dans l'espoir d'éclaircir l'eau et d'éclairer la relation entre calculabilité et dureté NP.

Premièrement, je crois qu'être clair et explicite sur les différentes définitions impliquées résoudra une grande partie de la confusion.

UNE chaîne est une séquence finie de caractères d'un alphabet fini fixe.

UNE problème de décision est un ensemble de chaînes. (Cet ensemble est généralement infini.) Considérez le problème de décision comme testant des chaînes pour une propriété: les chaînes avec la propriété sont dans l'ensemble, et les chaînes sans la propriété ne le sont pas.

Supposons que nous avons deux problèmes de décision, et B . Disons que A est polynomial-temps réductible à B s'il y a un polynôme p ( x ) et un algorithme un algorithme M tel que, pour toutes les chaînes s ,ABABp(x)Ms

  • Si vous fournissez à des entrées s , M s'arrête en moins de p ( | s | ) étapes (où | s | est la longueur de la chaîne s ) et génère une chaîne M ( s )MsMp(|s|)|s|sM(s) .
  • est dans A si et seulement si M ( s ) est dans BsAM(s)B .

Un problème de décision est NP-difficile si, pour chaque problème de décision NP A , A est temps polynomial réductible à BBAAB .

Un problème de décision est calculable s'il existe un algorithme , qui, pour toutes les chaînes sMs ,

  • Si vous fournissez à des entrées s , MMsM s'arrête et sort «oui» ou «non».
  • La sortie est "oui" si est en A et "non" sinon.sA

Avec les définitions ci-dessus, nous pouvons immédiatement clarifier ce qui, à mon avis, pourrait être la racine de la confusion dans votre question: rien dans les définitions de problème de décision, de réduction ou de dureté NP n'exige que les problèmes de décision soient calculables. Les définitions ont un sens parfait en considérant les problèmes de décision comme des ensembles de chaînes arbitraires, et ces ensembles peuvent en effet être très méchants.


Cela laisse deux questions sur la table:

  1. Les définitions laissent ouverte la possibilité que les fonctions non calculables puissent être NP-hard. Y at - il réellement non calculable, les fonctions NP-difficiles?
  2. Il y a une intuition que dire qu'un problème est NP-difficile, c'est qu'il est difficile à résoudre. Dire qu'il n'est pas calculable, c'est comme dire qu'il est «vraiment difficile» à résoudre. Alors, tous les problèmes non calculables sont-ils difficiles à résoudre?

La question 1 est plus facile à répondre. Il existe deux façons particulièrement importantes de trouver des problèmes de décision non calculables qui sont difficiles à NP. Le premier est le problème de l' arrêt: le problème de l' arrêt, , a la propriété que chaque calculable problème de décision est réductible polynomial à H . Comme les problèmes NP sont calculables, chaque problème NP est polynomial-temps réductible à H , donc H est NP-difficile.HHHH

L'autre façon importante de construire un problème NP-dur non calculable est d'observer que nous pouvons combiner tout problème NP-dur connu avec n'importe quel problème non calculable connu. Soit NP-dur et B non calculable. Formez le problème de décision A B comme suit: A B contient les chaînes de la forme "0, suivie d'une chaîne en A " et celles de la forme "1, suivie d'une chaîne en B ". A B est NP-difficile car nous pouvons transformer n'importe quelle réduction (de n'importe quel problème) en A en une réduction en A ABABABABABAAB: il suffit de modifier l'algorithme pour afficher un "0" supplémentaire à l'avant de sa chaîne de sortie. n'est pas calculable, car le calcul de A B nécessite de décider quelles chaînes commençant par "1" sont dans l'ensemble; c'est impossible, car B n'est pas calculable.ABABB


La question 2 est considérablement plus délicate, mais il existe en fait des problèmes de décision non calculables qui ne sont pas difficiles à NP (en supposant que P NP). La réponse fine de Yuval construit explicitement un tel problème de décision. (Pour tout théoricien de la calculabilité dans la pièce, tout "Cohen Π 0 1Π10 -generic" fera aussi l'affaire.) Je vais expliquer pourquoi l'intuition selon laquelle "les problèmes NP-difficiles sont durs, les problèmes non calculables sont plus difficiles " est faux.

La dureté NP et la non-calculabilité indiquent toutes deux qu'un problème est "dur" dans un sens très général, mais elles sont très différentes et ne doivent pas être regroupées comme le même type de phénomène. Plus précisément, la dureté NP est une propriété "positive": un problème NP difficile est difficile dans le sens où, étant donné l'accès à une feuille de triche pour A , vous pouvez résoudre une classe difficile de problèmesAA . En revanche, la non-calculabilité est une propriété "négative": un problème non calculable difficile dans le sens où vous ne pouvez pas résoudre A avec une classe de ressources donnéeAA .

("Forçage", soit dit en passant, est la technique utilisée pour produire le "Cohen générique" que j'ai mentionné. Pour être très très vague, le forçage est une façon générale de produire des choses qui sont "génériques" en ce sens aucune propriété positive et aucune propriété négative. C'est pourquoi le forçage peut produire directement un problème qui n'est ni calculable ni NP-difficile.)Π10


2
Ne pouvez-vous pas construire un langage indécidable qui ne soit pas NP-difficile par diagonalisation? Diagonaliser par rapport à tous les décideurs et à toutes les réductions de polytime de SAT.
Yuval Filmus

1
@YuvalFilmus Cela fonctionne probablement, oui. Je pense qu'écrire les détails pour expliquer pourquoi la diagonalisation par rapport aux réductions de polytemps de SAT est possible est similaire en saveur à montrer que le forçage fonctionne, donc je n'y ai pas pensé en ces termes.

1
@YuvalFilmus J'ai également ajouté la précision tout à l'heure que vous devez supposer P NP: il y avait certainement une étape dans ma preuve qui disait "prenez un problème en NP mais pas en P."

1
@aelguindy Je ne sais pas quelle est la méthode la plus accessible pour le prouver. J'ai mentionné la technique du forçage , qui est très générale et puissante. Je l'ai appris des gens, pas des manuels, donc je ne connais pas personnellement une grande référence sur le forçage. Comme l'a souligné Yuval, cependant, le forçage est probablement exagéré: un argument plus direct impliquant la diagonalisation fonctionne probablement. Les «ensembles et degrés énumérables récursivement» de Soare sont un manuel qui couvre une grande partie de ce style d'argument si vous voulez vous familiariser avec lui. Encore une fois, la majeure partie est probablement exagérée, cependant. ...

1
@aelguindy Aussi, si vous considérez l'ensemble des problèmes de décision comme un espace topologique, vous pouvez probablement masser le théorème de la catégorie de Baire pour produire une preuve. Ce théorème est étroitement lié au forçage, mais il est plus ancien et plus simple.

11

Nan. NP-Hard signifie qu'il est aussi difficile, ou plus difficile, que les problèmes NP les plus difficiles. Intuitivement, être non calculable rendra la tâche beaucoup plus difficile que NP.

Wikipédia:

Il y a des problèmes de décision qui sont NP-dur mais pas NP-complet, par exemple le problème d'arrêt.

Tout le monde sait que ce n'est pas calculable


4
Notez que, alors que certains problèmes non calculables (comme le problème d'arrêt) sont NP-difficiles, cela ne signifie pas que tous les problèmes non calculables sont NP-difficiles. Voir mes commentaires sur la réponse de jmite. La dureté NP est une propriété positive: elle dit que les réponses à votre problème peuvent aider à résoudre les problèmes NP. Être NP-dur implique que le problème est, dans une certaine mesure, difficile. Tous les problèmes difficiles ne sont pas difficiles à NP.

@MikeHaskel: Posséder la solution au problème d'arrêt réduit tous les problèmes à la difficulté P * du problème d'arrêt.
Joshua

1
@Joshua: Cela n'a aucun sens. C'est comme un fragment de non-preuve. Que voulez-vous dire pour qu'un problème ait un nombre fini de bits dans sa solution, et pourquoi pensez-vous que cela s'applique à tous les problèmes non calculables? Que voulez-vous dire par «P * s'arrête»? Quel est le reste de "réduire via le nième bit de ..."?
user2357112 prend en charge Monica

1
@Joshua: On dirait que le problème principal est que vous supposez que chaque problème correspond à une machine Turing. Tous les problèmes ne correspondent pas à une machine de Turing. Il n'y a aucune problem()fonction que nous pouvons appeler.
user2357112 prend en charge Monica

1
Vous devriez probablement déplacer ceci vers le chat ou quelque chose comme ça
Destructible Lemon

9

Pour être complet, prouvons le théorème suivant:

Il existe un langage non calculable qui n'est pas NP-dur si et seulement si P NP.

Si P = NP alors n'importe quel langage non trivial (un qui diffère de ,{0,1} ) est NP-dur (exercice), et en particulier tout langage non calculable est NP-dur.

Supposons maintenant que P NP. Soit T i une énumération de toutes les machines de Turing. Nous allons construire le langage L requis par étapes. A chaque étape , nous garderons un { 0 , 1 , ? } coloration de { 0 , 1 } que nous désignons également par L ; ici 0 signifie que nous avons décidé que la chaîne n'est pas en L , 1 signifie que nous avons décidé que la chaîne est en L , et ?TiL{0,1,?}{0,1}L0L1L?signifie que nous n'avons pas encore décidé. Tout sauf un nombre fini chaînes seront de couleur ?.

À l'étape , nous considérons T i comme une machine qui accepte son entrée, la rejette ou ne s'arrête jamais. Si T i ne s'arrête pas toujours, nous ne faisons rien. Si T i s'arrête toujours alors on trouve une chaîne x telle que L ( x ) = ? , et définissez L ( x ) : = 0 si T i ( x ) accepte et L ( x ) : = 1 si T2iTiTiTixL(x)=?L(x):=0Ti(x)L(x):=1Ti(x) rejette.

À l'étape , nous considérons T i comme une machine calculant une fonction (éventuellement) partielle sur son entrée. Si T i n'est pas total, ou s'il est total mais ne s'exécute pas en temps polynomial, ou s'il est total mais sa plage est finie, nous ne faisons rien. Si T i est total, s'exécute en temps polynomial et a une plage infinie, alors nous trouvons une chaîne x telle que L ( T i ( x ) ) = ? . Si x S A T (c'est-à-dire si x2i+1TiTiTixL(Ti(x))=?xSATxcode un CNF satisfaisable), puis nous définissons , et sinon nous définissons L ( x ) : = 1 .L(x):=0L(x):=1

Après de nombreuses étapes infiniment, nous obtenons un coloration de { 0 , 1 } que nous complétons à un langage réel de manière arbitraire.{0,1,?}{0,1}

Le langage résultant n'est pas calculable: l'étape 2 i garantit que T i ne le calcule pas. Ce n'est pas non plus difficile à NP, mais ici le raisonnement est un peu plus délicat. Supposons que T i est une réduction de la polynomial de SAT à L . Si la plage de T i est finie, alors nous pouvons transformer T i en une machine polytime décidant SAT, en listant la table de vérité de L sur la plage de T i . Ceci est impossible par l'hypothèse P NP. Ainsi T i a une plage infinie, mais alors l'étape 2 iL2iTiTiLTiTiLTiTi exclut qu'il soit une réduction parà SAT L .2i+1L


3

Un langage est NP-difficile si pour chaque L 'N P nous avons que L ' est réductibles polynomial à L . Le problème d'acceptation des machines de Turing non déterministesLLNPLL

ANTM={M,wM is a nondeterministic Turing machine that accepts w}

est indécidable et est NP-difficile. Pour envisager une . L ' est décidé par une machine de Turing non déterministe M ' avec une complexité temporelle polynomiale. Une réduction poly-temps f de L ' en A N T M est donnée parLNPLMfLANTM

f(x)=M,x

3

Je pense que ce qui pousse les gens à penser qu'il n'y a pas de problème NP-dur non calculable, c'est qu'ils manquent le point que la dureté NP est une limite inférieure de la dureté d'un problème, pas une limite supérieure de leur dureté comme P ou NP.

Un langage L étant NP-dur signifie qu'il est au-dessus du langage en NP et c'est. Maintenant, si vous comprenez cela, ce qu'il faut, c'est montrer qu'il y a un problème arbitraire plus difficile.

Soit une langue. Tenez compte des algorithmes avec une augmentée boîte noire qu'ils peuvent utiliser pour décider l' appartenance à un . Laissez-les noterons C A . Il est facile de voir que le problème d'arrêt pour C A , H a l t C A n'est pas dans C AAACACAHaltCACA .

AAA<AA<A<A<A<...

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.