Peut-on déterminer si la langue L se situe dans NP?

15

Étant donné un langage L défini par une machine de Turing qui le décide, est-il possible de déterminer algorithmiquement si L se situe dans NP?

txwikinger
la source
Repris à la théorie de la complexité. Je ne sais pas ce que cela a à voir avec NP-Completeness.
Aryabhata
1
FWIW, malgré les votes sur le site de proposition, je pense que cette question est plus sur le champ que celle sur l'affacturage précisément parce que la question sur l'affacturage serait abordée dans la plupart des cours de complexité d'introduction, mais celle-ci n'est même pas abordée dans de nombreux cycles supérieurs cours de complexité.
Joshua Grochow
1
N'est-ce pas couvert dans les cours d'introduction sur la calculabilité comme application typique du théorème de Rice?
Moritz
3
Moritz - bien que la réponse oui / non à cette question soit couverte par le théorème de Rice, voir ma réponse ci-dessous pour des résultats plus intéressants. Peut-être, txwikinger, devriez-vous changer la question en "Quelle est la complexité de l'ensemble {i: L (M_i) est dans NP}?"?
Joshua Grochow
Je vais appuyer la réponse de Joshua ici. La réponse peut être évidente lorsque la langue est spécifiée par une machine de Turing, mais la réponse est la même (et peut-être pas tout à fait aussi apparente) si nous permettons à la langue d'être spécifiée dans un format arbitraire.
Anand Kulkarni

Réponses:

24

Non. D'abord, selon le théorème de Rice, c'est une propriété des MT qui ne dépend que du langage qu'ils calculent, donc elle ne peut pas être calculable.

Mais, plus que cela, on sait que l'ensemble d'index de (c'est-à-dire l'ensemble de MT qui calculent les langues dans N P ) est Σ 0 3 -complet ( Σ 0 3 dans la hiérarchie arithmétique de calculabilité, pas le hiérarchie polynomiale).NPNPΣ30Σ30

Des questions comme celle-ci ont d'abord été étudiées par Hajek . Pour plus d'informations, voir par exemple cet article de Ken Regan.

Quelques pépites de plus dans le papier de Hajek:

  • L'ensemble d'index de est Σ 0 3 -complet.PΣ30
  • est Π 0 2 -complet{je:PL(Mje)NPL(Mje)}Π20
  • Il y a une machine de Turing totale (s'arrête sur toutes les entrées) telle que P L i = N P L i mais la déclaration " P L i = N P L i " est indépendante (où L i = L ( M i ) ) . De même , pour relativisations où P N P .MjePLje=NPLjePLje=NPLjeLje=L(Mje)PNP
Joshua Grochow
la source
1
Ici, la question semble être un problème de décision prometteuse (la langue donnée est promise à être décidée par une MT, non seulement reconnue) par opposition à un problème de décision totale. Le théorème de Rice sera-t-il toujours applicable ici alors? Rappelons que la preuve du théorème de Rice emploie l'indécidabilité de l'arrêt, donc l'indécidabilité y est essentielle.
Zeyu
2
Dans la question posée, le langage L a été "donné par une machine qui le décide". Donc c'était vraiment: étant donné une machine de Turing M, peut-on déterminer si L (M) est en NP. Si le langage L n'était pas spécifié par une MT, mais simplement donné en tant que sous-ensemble des nombres naturels, que cela signifierait-il de décider algorithmiquement si L est dans NP? En particulier, comment pouvons-nous penser que L est entré dans un algorithme alors que L lui-même n'est pas donné par une description finie?
Joshua Grochow
1
Oui je sais. Mais dans le théorème de Rice, il est possible que la MT ne décide pas d'une langue, c'est-à-dire qu'elle ne calcule pas une fonction totale.
Zeyu
2
C'est une heuristique générale que, étant donné une propriété sémantique des machines de Turing, telle que "M définit un langage NP", on devrait d'abord essayer d'exprimer cette propriété dans une logique de premier ordre. Cela place la propriété dans un niveau de la hiérarchie arithmétique; l'heuristique est que la propriété est généralement complète pour ce niveau de la hiérarchie. Je voudrais demander s'il existe des contre-exemples notables à cette heuristique.
Andy Drucker
2
À l'échelle de la hiérarchie polynomiale, les choses sont moins susceptibles de se comporter si bien. Par exemple, considérons la propriété "C est un circuit booléen de taille minimale (pour la fonction qu'il calcule)". Ce problème est NP-difficile et peut être placé dans la hiérarchie polynomiale, mais il est ouvert qu'il soit complet pour le niveau où il réside naturellement. (de tels résultats sont connus pour certaines classes restreintes de circuits, par exemple les DNF; voir l'enquête en deux parties "Completeness in the Polynomial Hierarchy" de Schaefer et Umans.)
Andy Drucker
5

La réponse à votre question littérale est non, comme l'a souligné Joshua Grochow.

Cependant, comme Holger l'a indiqué, il est possible de vérifier en temps linéaire si la machine de Turing non déterministe (NTM) "s'horloge" et s'arrête après n ^ k pas pour une constante k, par une méthode standard de simulation d'une horloge (telle que la code ci-dessous). Souvent, lorsqu'un papier ou un livre suggère (à tort) qu'il est possible de déterminer si une MNT est du temps polynomial, c'est ce qu'ils signifient vraiment. C'est peut-être pour cela que vous avez posé la question? (J'avais la même question lorsque j'ai appris la théorie de la complexité pour la première fois et j'ai vu quelque part la déclaration selon laquelle il est possible de vérifier si une MT est polytemporelle.) La vraie question est de savoir pourquoi on peut souhaiter faire cela, que j'examinerai ci-dessous après avoir expliqué comment .

Il existe de nombreuses façons d'ajouter une telle fonction d'horloge. Par exemple, imaginez sur l'entrée x de longueur n, en exécutant alternativement une instruction de "l'algorithme principal" cadencé, puis une instruction de l'algorithme suivant, qui se termine par (quelque chose de proche) n ^ k étapes:

pour i_1 = 1 à n
  pour i_2 = 1 à n
...
        pour i_k = 1 à n
          pas d'opération;
revenir;

Si le code ci-dessus revient avant que l'algorithme principal ne s'arrête, arrêtez le calcul entier (par exemple, avec rejet).

L'algorithme qui décide si un NTM est de cette forme, s'il est interprété comme une tentative d'un algorithme pour décider si son entrée est un NTM poly-temps, signalera quelques faux négatifs: certains NTM sont garantis pour s'arrêter en temps polynomial, même si ils n'alternent pas l'exécution d'une instruction d'un algorithme avec une instruction d'une horloge comme le code ci-dessus (serait donc rejetée malgré le poly-temps).

Mais il n'y a pas de faux positifs. Si un NTM réussit le test, il s'arrête définitivement dans le temps polynomial, il définit donc un langage NP. Cependant, le comportement de son algorithme principal sous-jacent est peut-être modifié si l'horloge s'épuise parfois avant que l'algorithme principal ne s'arrête, ce qui entraîne le rejet du calcul même si l'algorithme principal peut avoir accepté s'il a eu suffisamment de temps pour terminer. Par conséquent, le langage choisi peut être différent de celui de l'algorithme principal. Mais, et ceci est essentiel, si l'algorithme principal en cours d'exécution est en fait un algorithme polynomial fonctionnant au temps p (n), et si la constante k dans l'horloge est suffisamment grande pour que n ^ k> p (n), alors l'algorithme principal s'arrête toujours avant la fin de l'horloge. Dans ce cas, la réponse de l'algorithme primaire n'est pas modifiée, donc l'algorithme primaire et le NTM cadencé le simulant décident donc du même langage NP.

Pourquoi est-ce important? Cela signifie qu'il est possible "d'énumérer tous les langages NP" (qui, comme je l'ai dit, est souvent inexact dans la littérature, comme "décider si un MNT donné est poly-temps" ou "énumérer tous les NTM poly-temps"). Plus précisément, il est possible d'énumérer une liste infinie de M_1 M_2, ... de NTM, avec les propriétés

  1. Chaque M_k s'exécute en temps polynomial (par exemple, en attachant une horloge ^ k à M_k), décide donc un langage NP, et
  2. Chaque langue NP est la langue décidée par certains M_i dans la liste.

Ce qui ne se produit pas, c'est que chaque NTM à temps polynomial figure sur la liste. Mais chaque langage NP a un nombre infini de NTM qui le représentent. Ainsi, chaque langage NP est garanti d'avoir au moins certains de ses NTM représentatifs sur la liste, spécifiquement tous ces NTM à un indice k suffisamment grand pour que n ^ k dépasse le temps d'exécution de M_k.

Ceci est utile pour faire des tours comme la diagonalisation, qui nécessitent d'énumérer par algorithme de telles listes infinies (ou illimitées) de tous les langages NP. Et bien sûr, toute cette discussion s'applique à de nombreux autres types de machines en plus des NTM poly-temps, tels que les TM déterministes poly-temps.

Dave Doty
la source
3

p(n)

Holger
la source
2
Cela ne fonctionne que s'il s'agit d'une MT non déterministe cadencée . Si je vous donne juste une MT cadencée (même une qui s'exécute en temps exponentiel), il est encore indécidable que la langue qu'il décide soit en NP ou non. Cependant, si N_1, N_2, ... est une énumération de MT avec des horloges exponentielles, l'ensemble {i: L (N_i) est dans NP} n'est probablement plus Sigma_3-complet, car vous avez déjà la garantie que les N_i sont total, mais ce n'est certainement pas calculable.
Joshua Grochow