Ci-dessous, je développe un peu le point de la réponse de Peter en essayant de supprimer le quantificateur pendant plus d'un nombre constant d'étapes pour voir où il échoue et si quelque chose peut être récupéré d'une telle tentative.
Essayons d'amplifier P=NP pour des nombres plus que constants.
Supposons que P=NP . Il existe donc une machine temporelle polynomiale qui résout Ext-Circuit-SAT (existe-t-il une extension satisfaisante pour un circuit donné et une affectation partielle à ses entrées?).
Plus formellement, nous avons un algorithme de polytime A avec un temps d'exécution polynomial p(n)∈poly(n) st
Étant donné un circuit booléen φ , et une affectation partielle τ aux entrées,
A renvoie "oui" s'il y a une extension de τ qui satisfait φ , et renvoie "non" sinon.
Pour dépasser des temps constants, nous devons effectuer la suppression du quantificateur efficacement. Nous pouvons le faire parce que le théorème de Cook-Levin est un théorème constructif, en fait il donne un algorithme de temps polynomial Cook st
Étant donné un DTM M recevant deux entrées et trois nombres unaires n , m et t ,
Cook(M,n,m,t) renvoie un circuit booléen de taille O(t2) qui simule M sur des entrées de longueur (n,m) pour t étapes.
Essayons de les utiliser pour étendre l'argument de P=PH pour obtenir un algorithme résolvant TQBF (en fait TQBCircuit, c'est-à-dire un problème de circuit booléen totalement quantifié).
L'idée de l'algorithme est la suivante: nous utilisons à plusieurs reprises Cook sur A pour supprimer les quantificateurs d'un circuit quantifié donné. Il y a un nombre linéaire de quantificateurs, nous espérons donc obtenir un algorithme polynomial temporel (nous avons un algorithme avec plusieurs étapes polynomiales utilisant le sous-programme polynomial temporel Cook ). À la fin de ce processus d'élimination des quantificateurs, nous aurons un circuit sans quantificateur qui peut être évalué en temps polynomial (le problème de la valeur du circuit est en P , soitCV un algorithme de temps polynomial pour calculer la valeur du circuit d'un circuit donné) .
Cependant, nous verrons que cette idée ne fonctionne pas (pour la même raison que Peter l'a souligné).
- Soit φ un circuit quantifié, (initialisé à la formule quantifiée donnée).
- Soit k le nombre de quantificateurs dans φ .
Pour i de k à 1 do
- Soit ψ = Qxkσ(x1,...,xk) le dernier quantificateur et la partie libre de quantificateur.
Si Q="∃" ,
- Calculer C=Cook(A,|σ|,|x1|+...+|xk−1|,p) ,
- Remplacez les bits d'entrée par σ dans le circuit C ,
- Remplacez ψ par C dans φ .
Si Q="∀" ,
- Considérez ψ comme ¬∃xk¬σ ,
- Calculer C=Cook(A,|¬σ|,|x1|+...+|xk−1|,p) ,
- Remplacer les bits d'entrée par ¬σ dans le circuit C ,
- Remplacez ψ par le ¬C dans φ .
- Calculer et renvoyer CV(φ) .
L'algorithme résultant ressemble au temps polynomial: nous avons plusieurs étapes polynomiales, chaque étape est calculable en temps polynomial. Cependant ce n'est pas correct, l'algorithme n'est pas du temps polynomial.
L'utilisation de sous-programmes de temps polynomial dans un algorithme de temps polynomial est du temps polynomial. Le problème est qu'en général, cela n'a pas besoin d'être vrai si les valeurs retournées par les sous-programmes ne sont pas de taille polynomiale dans l'entrée d'origine et nous supposons que nous faisons des affectations sur les valeurs renvoyées par les sous-programmes. (Dans le modèle TM, nous devons lire la sortie de tout sous-programme de temps polynomial bit par bit.) Ici, la taille de la valeur renvoyée par l'algorithme Cook augmente (peut être une puissance de la taille de l'entrée qui lui est donnée) , la puissance exacte dépend du temps de fonctionnement de A et se situe autour de p2(|input|), donc puisque nous savons que A ne peut pas être inférieur au temps linéaire, |output|est au moins |input|2 ).
Le problème est similaire au code simple ci-dessous:
- Étant donné x ,
- Soit n=|x|,
- Soit y=x ,
- Pour i de 1 à n do
- Soit y=y|y|, (ie concaténation de |y| copies de y )
- Retour y
Chaque fois que nous exécutons y=y|y|nous égalons la taille de y . Après n exécutions, nous aurons un y qui est x2n et qui a la taille n2n , évidemment pas un polynôme dans la taille de l'entrée.
Supposons que nous considérons uniquement les formules quantifiées avec k(n) alternances de quantificateurs (où n est la taille totale de la formule quantifiée).
Supposons que A s'exécute dans le temps p (par exemple, le temps linéaire qui n'est pas exclu jusqu'à présent), et avoir peut-être un algorithme Cook efficace produisant un circuit plus petit de taille l(t) à la place de t2 , alors nous obtenons un algorithme pour ExtCircuitSat qui s'exécute dans le temps (l∘p)O(k)(n)=l(p(l(p(…(l(p(n)))))))O(k) compositions . Même dans le cas oùletpétaient linéaires (mais avec un coefficient totaln))et sik(n)=Θ(n)il seraitΩ(n2n)a≥2 ) nous obtiendrions un algorithme qui fonctionne dans le tempsΩ(n2k(n))k(n)=Θ(n)Ω(n2n) similaire à l'algorithme de force brute (et même cela était basé sur l'hypothèse que Cook-Levin peut être effectué sur des algorithmes résultant de circuits de taille linéaire dans le temps d'exécution de l'algorithme).