Voici une autre façon de voir l'argument que Shaull fait à propos des «décideurs».
Un problème est en NP si et seulement s'il existe un algorithme tel queV:{0,1}n×{0,1}poly(n)→{0,1}
pour chaque instance OUI , il existe un certificat p ∈ { 0 , 1 } p o l y ( n ) tel que V ( x , p ) = 1 ; etx∈{0,1}np∈{0,1}poly(n)V(x,p)=1
pour chaque instance NO , nous avons V ( x , p ) = 0 pour tout p ∈ { 0 , 1 } p o l y ( n ) .x∈{0,1}nV(x,p)=0p∈{0,1}poly(n)
Celles-ci sont généralement décrites comme les conditions d' exhaustivité et de solidité de l' algorithme de vérification NP : la condition d '"exhaustivité" indique que chaque instance YES possède un certificat, et la condition de "solidité" indique que l'algorithme n'est jamais trompé par une instance NO. Pour coNP, c'est l'inverse: il existe un algorithme de vérification qui accepte au moins un certificat pour n'importe quelle instance NO, mais qui ne peut jamais être dupé par une instance YES.
Si vous voulez montrer que NP ⊆ coNP , vous devez montrer que chaque problème NP a un vérificateur de type coNP , qui peut certifier AUCUNE instance au lieu des instances OUI. Vous ne pouvez pas le faire avec une machine de Turing non déterministe: il n'y a aucun moyen à notre connaissance, par exemple, de mapper efficacement les instances de SAT les unes aux autres, de telle sorte que toutes les formules non satisfaisantes soient mappées à des formules satisfaisables, et vice versa. (Nier la sortie de la formule ne suffit pas, par exemple: une formule qui est satisfaisable mais pas une tautologie serait simplement mise en correspondance avec une formule différente qui était satisfaisante mais pas une tautologie, alors que nous aurions plutôt besoin d'une formule insatisfaisante.) Il n'y a tout simplement aucun moyen que nous connaissions de «tromper» une machine non déterministe pour détecter quoi que ce soit comme tous ses chemins étant des chemins de rejet.
Vous pourriez vous demander: "La machine de Turing non déterministe ne sait- elle pas quel résultat elle obtient?" La réponse serait non , ce n'est pas le cas. Le fonctionnement de la machine non déterministe ne lui donne accès à aucune information sur plus d'un chemin de calcul à la fois: vous pourriez penser qu'elle fonctionne sur plusieurs chemins en parallèle, mais à l'intérieur de chaque chemin, elle ne connaît que ce chemin. Si vous essayez de lui donner la capacité de "réaliser" s'il existe ou non des solutions à un moment donné, vous décrivez plutôt une machine avec un oracle NP , qui est plus (potentiellement!) Plus puissant qu'une simple machine de Turing non déterministe.
Par exemple, si vous équipez un (déterministe) avec une machine de Turing NP oracle, alors les problèmes qui peuvent être résolus en temps polynomial sur cette machine est appelée , qui est souvent écrit P N P . L '«oracle» permet à la machine de recevoir simplement les réponses aux problèmes NP- complétés en une seule étape, et donc P N P contient évidemment P ; et parce que vous pouvez annuler les réponses, il contient également évidemment du coNP . Mais nous ne savons pas si les confinements inverses se maintiennent, exactement parce que nous ne savons pas comment inciter les machines de Turing non déterministes à détecter les réponses NON.ΔP2PNPPNP
De plus, si vous donnez à une machine de Turing non déterministe la capacité de se rendre compte de l'issue d'un problème dans NP , les problèmes que cette machine peut résoudre en temps polynomial sont appelés , ou N P N P , et ceci est largement considéré comme strictement supérieur à la classe P N P . Il contient également à la fois NP et coNP - mais comme NP , il n'est pas connu qu'il soit fermé sous des compléments: la machine oracle non déterministe pourrait être en mesure de savoir quand un problème dans NPΣP2NPNPPNPa une réponse NON à cause de l'oracle, mais il serait toujours obligé de fonctionner dans l'une de ses propres branches de calcul (assez puissantes), de sorte qu'il ne serait pas en mesure de dire si toutes ses propres branches de calcul étaient rejetées.
Si vous continuez à fournir à la machine des oracles plus puissants pour résoudre les problèmes dans , N P N P , etc., vous finissez par définir les classes de la hiérarchie polynomiale , qui sont considérées comme toutes distinctes les unes des autres des premier niveau.NPNPNP
Donc, non, il n'y a pas de machine (déterministe ou autre) qui puisse simplement «décider» qu'un problème est une instance OUI ou NON efficacement, à moins que nous n'utilisions des oracles; mais même avec un tel oracle, nous nous retrouvons avec une machine qui est (probablement) plus puissante que NP ou coNP , pas une qui montre qu'ils sont égaux.