Aşağıda, Peter'ın cevabındaki noktada, nerede başarısız olduğunu ve böyle bir denemeden bir şey kurtarılıp kurtarılamayacağını görmek için sabit sayıda adımdan fazla nicelik giderici gerçekleştirmeye çalışarak biraz genişletiyorum.
P = N P'yi yükseltmeye çalışalımP=NPSabit sayıdan daha uzun süre .
P = N P olduğunu varsayınP=NP . Bu nedenle Ext-Circuit-SAT'ı çözen polinom zaman makinesi vardır (belirli bir devre için tatmin edici bir uzatma ve girişlerine kısmi atama var mı?).
Daha resmi olarak, polinom çalışma süresi p ( n ) ∈ p o l y ( n ) st olan bir çoklu zaman algoritması A sahibiz.p(n)∈poly(n)
Bir Boole devresi φ ve girişlere kısmi atama τ verildiğinde, φ değerini karşılayan bir τ uzantısı varsa
A "evet" değerini döndürür , aksi takdirde "no" döndürür.τφ
Sabit zamanların üzerinden geçmek için nicelleştiricinin çıkarılmasını etkili bir şekilde yapmamız gerekir. Bunu yapabiliriz çünkü Cook-Levin teoremi yapıcı bir teoremdir, aslında polinom zaman algoritması verir Cook st
İki giriş ve üç tekli sayı n , m ve t alan bir DTM M verildiğinde , C o o k ( M , n , m , t ) uzunluk girişlerinde M'yi simüle eden O ( t 2 ) boyutunda bir Boole devresi döndürür t adımları için ( n , m ) .nmt
Cook(M,n,m,t)O(t2)M(n,m)t
P = P H argümanını genişletmek için bunları kullanmaya çalışalımP=PH bir algoritma çözme TQBF (aslında TQBCircuit, yani Tamamen Quantified Boole Devre sorun) elde etmek.
Aşağıdaki gibi algoritma fikir: tekrar tekrar kullanımı Cook hakkında A , belirli bir sayısal devresinden nicelik kaldırın. Doğrusal sayıda niceleyici vardır, bu yüzden bir polinom zaman algoritması almayı umuyoruz (polinom zaman alt rutini Cook kullanarak polinom olarak birçok adım içeren bir algoritmaya sahibiz ). Bu nicelleştirici eliminasyon işleminin sonunda, polinom zamanında değerlendirilebilen bir nicelleştirici içermeyen devreye sahip olacağız (Devre Değeri problemi P , CV verilen bir devrenin devre değerini hesaplamak için bir polinom zaman algoritması olsun) .
Ancak bu fikir olmadığını göreceksiniz değil (aynı nedenden Peter tarafından işaret için) çalışır.
- Izin vermek φ nicel bir devre, (verilen nicelikli formüle ilklendirilir).
- Let k içinde niceleyicilerin sayısını φ .
For i dan k için 1 do
- Let ψ = Qxkσ(x1,...,xk) son nicelik ve nicelik içermeyen bir parçası olabilir.
Eğer Q="∃" ,
- Bilgi İşlem C=Cook(A,|σ|,|x1|+...+|xk−1|,p) ,
- Giriş bitlerini C devresinde σ ile değiştirin , C
- Değiştir ψ ile C de φ .
Eğer Q="∀" ,
- ψ¬∃xk¬σ olarak düşünün ,
- Bilgi İşlem C=Cook(A,|¬σ|,|x1|+...+|xk−1|,p) ,
- Giriş bitlerini C devresinde ¬σ ile değiştirin , C
- Değiştir ψ ile ¬C de φ .
- Hesaplayın ve döndürünCV(φ) .
Ortaya çıkan algoritma polinom zamanına benziyor : polinom birçok adımımız var, her adım polinom zamanı hesaplanabilir. Ancak bu doğru değildir, algoritma polinom zamanı değildir.
Bir polinom zaman algoritmasında polinom zamanı alt rutinlerinin kullanılması polinom zamanıdır. Sorun, alt rutinlerin döndürdüğü değerlerin orijinal girdide polinom boyutunda olmaması durumunda genel olarak bunun doğru olması gerekmemesidir ve alt rutinlerden dönen değerler hakkında atamalar yaptığımızı varsayıyoruz. (TM modelinde, herhangi bir polinom zaman altyordamının bitini yavaş yavaş okumalıyız.) Burada Cook algoritmasından döndürülen değerin boyutu artıyor (kendisine verilen girişin boyutunun gücü olabilir) , kesin güç A çalışma süresine bağlıdır ve p2(|input|), yani A doğrusal zamandan daha az olamayacağını bildiğimiz için , |output|en azından |input|2 ).
Sorun aşağıdaki basit koda benzer:
- x verildiğinde ,
- Let n=|x|,
- Let y=x ,
- İçin i dan 1 için n do
- Let y=y|y|(Yani birleştirme |y| kopyaları y )
- Dönüş y
Her seferinde y=y|y|biz y büyüklüğünde kare . n yürütme işleminden sonra , x 2 n olan ve n 2 n boyutunda bir y sahip olacağız , açıkçası giriş boyutunda bir polinom değil.x2nn2n
Diyelim ki sadece k(n) niceleyici değişimleri olan nicelenmiş formülleri göz önünde bulunduruyoruz (burada n nicelenen formülün toplam büyüklüğüdür).
Ap zamanında çalıştığını varsayın (örn. Şimdiye kadar dışlanmayan doğrusal zaman) ve belki t 2 yerine l ( t ) boyutunda daha küçük bir devre veren daha verimli bir Cook algoritması var , o zaman ExtCircuitSat için zamanında çalışan bir algoritma ( l ∘ p ) O ( k ) ( n ) = l ( p ( l ( p ( … ( l ( p (l(t)t2(l∘p)O(k)(n)=l(p(l(p(…(l(p(n)))))))O(k) compositions . Hatta hem bu durumdalvepdoğrusal idi (ama toplam katsayısı ilea≥2) biz zaman içinde çalışan bir algoritma alacağıΩ(n2k(n))ve eğerk(n)=Θ(n)onu olacaktırΩ(n2n) kaba kuvvet algoritmasına benzer (ve hatta bu, Cook-Levin'in algoritmanın çalışma süresinde lineer boyutta devrelerle sonuçlanan algoritmalarda gerçekleştirilebileceğini varsaymaya dayanıyordu).