Di seguito espongo un po 'il punto nella risposta di Peter, cercando di eseguire la rimozione del quantificatore per più di un numero costante di passaggi per vedere dove fallisce e se qualcosa può essere salvato da un simile tentativo.
Proviamo ad amplificare P = N P per più di un numero costante di volte.
Si supponga che P = N P . Pertanto esiste una macchina del tempo polinomiale che risolve Ext-Circuit-SAT (esiste un'estensione soddisfacente per un dato circuito e un'assegnazione parziale ai suoi ingressi?).
Più formalmente, abbiamo un algoritmo polytime UN con tempo di esecuzione polinomiale p ( n ) ∈ p o l y ( n ) st
Dato un circuito booleano φ e un'assegnazione parziale τ agli ingressi,
UN restituisce "sì" se esiste un'estensione di τ che soddisfa φ e restituisce "no" in caso contrario.
Per superare tempi costanti, è necessario eseguire la rimozione del quantificatore in modo efficace. Possiamo farlo perché la Cook-Levin teorema è un teorema costruttiva, infatti dà un polinomio tempo algoritmo di Co o k st
Dato un DTM M riceve due ingressi, e tre numeri unari n , m , e t ,
Co o k ( M, n , m , t ) restituisce un circuito booleano di dimensione O ( t2) che simula M su input di largo ( n , m ) per t passi.
Proviamo a usarli per estendere l'argomento di P = P H per ottenere un algoritmo che risolve TQBF (in realtà TQBCircuit, ovvero il problema del circuito booleano totalmente quantificato).
L'idea dell'algoritmo è il seguente: useremo ripetutamente Co o k su UN per rimuovere le occorrenze di un dato circuito quantificato. Ci sono certo numero lineare di occorrenze quindi speriamo di ottenere un algoritmo di tempo polinomiale (abbiamo un algoritmo con polinomialmente molti passaggi utilizzando il polinomio tempo subroutine Co o k ). Alla fine di questo processo di eliminazione del quantificatore avremo un circuito privo di quantificatore che può essere valutato in tempo polinomiale (il problema del valore del circuito è in P , lascia che CV sia un algoritmo del tempo polinomiale per calcolare il valore del circuito di un dato circuito) .
Tuttavia vedremo che questa idea non funziona (per lo stesso motivo indicato da Peter).
- Sia φ un circuito quantificato (inizializzato con la formula quantificata fornita).
- Sia K il numero di quantificatori in φ .
Per io da K a 1 do
- Lasciare ψ = Q xKσ( x1, . . . , xK) l'ultimo quantificatore e la parte libera-quantificatore.
Se , Q = " ∃ "
- Calcola , C= Co o k ( A , | σ| , | X1| +. . . + | XK- 1 | , p )
- Sostituire i bit di ingresso con nel circuito , σC
- Sostituisci con in . ψCφ
Se , Q = " ∀ "
- Considera come , ψ¬ ∃ xK¬ σ
- Calcola , C= Co o k ( A , | ¬ σ| , | X1| +. . . + | XK- 1 | , p )
- Sostituire i bit di ingresso con nel circuito , ¬ σC
- Sostituisci con in .ψ¬ Cφ
- Calcola e ritorna CV( φ ) .
L'algoritmo risultante sembra tempo polinomiale: abbiamo molti passaggi polinomiali, ogni passo è calcolabile nel tempo polinomiale. Tuttavia, ciò non è corretto, l'algoritmo non è il tempo polinomiale.
L'uso delle subroutine di tempo polinomiale in un algoritmo di tempo polinomiale è tempo polinomiale. Il problema è che in generale questo non deve essere vero se i valori restituiti dalle subroutine non hanno dimensioni polinomiali nell'input originale e supponiamo che eseguiamo assegnazioni sui valori restituiti dalle subroutine. (Nel modello TM dobbiamo leggere l'uscita di ogni bit tempo subroutine polinomiale per bit.) Qui la dimensione del valore restituito da algoritmo Co o k sta aumentando (può essere una potenza della dimensione della sollecitazione che gli , la potenza esatta dipende dal tempo di esecuzione di UN ed è intorno a p2( | i n p u t | ), quindi poiché sappiamo che UN non può essere inferiore al tempo lineare, | output |è almeno | Input |2 ).
Il problema è simile al semplice codice seguente:
- Dato X ,
- Sia n = | x |,
- Lascia y= x ,
- Per io da 1 a n fare
- Lascia y= y| y|, (ovvero concatenazione di | y| copie di y )
- Ritorna y
Ogni volta che eseguiamo y=y|y|quadriamo la dimensione di y . Dopo n esecuzioni avremo una y che è x2n e ha dimensione n2n , ovviamente non un polinomio nella dimensione dell'input.
Supponiamo che prendiamo in considerazione solo le formule quantificate con alternanze di quantificatori k(n) (dove n è la dimensione totale della formula quantificata).
Supporre che A viene eseguita in tempo p (es lineare di tempo che non è esclusa finora), e hanno forse un più efficiente Cook algoritmo uscita un piccolo circuito di dimensioni l(t) al posto del t2 , otteniamo un algoritmo per ExtCircuitSat che viene eseguito nel tempo (l∘p)O(k)(n)=l(p(l(p(…(l(p(n)))))))O(k) compositions . Anche nel caso in cui sialepè lineare (ma con coefficiente totalea≥2) si otterrebbe un algoritmo che esegue in un tempoΩ(n2k(n))e sek(n)=Θ(n)it sarebbeΩ(n2n) simile all'algoritmo a forza bruta (e anche questo si basava sull'ipotesi che Cook-Levin potesse essere eseguito su algoritmi risultanti circuiti di dimensione lineare nel tempo di esecuzione dell'algoritmo).