Poniżej rozwijam nieco kwestię odpowiedzi Petera, próbując usunąć kwantyfikator przez więcej niż stałą liczbę kroków, aby zobaczyć, gdzie zawodzi i czy cokolwiek można uratować po takiej próbie.
Spróbujmy wzmocnić P=NP więcej niż stałą liczbę razy.
Załóżmy, że P=NP . Dlatego istnieje wielomianowa wehikuł czasu, który rozwiązuje Ext-Circuit-SAT (czy istnieje zadowalające rozszerzenie dla danego obwodu i częściowe przypisanie do jego wejść?).
Mówiąc bardziej formalnie, mamy algorytm wielogodzinny A z wielomianowym czasem działania p(n)∈poly(n) st
Biorąc pod uwagę obwód boolowski φ i częściowe przypisanie τ do wejść,
A zwraca „tak”, jeśli istnieje rozszerzenie τ które spełnia φ , a w przeciwnym razie zwraca „nie”.
Aby przejść przez stały czas, musimy skutecznie usunąć kwantyfikator. Możemy to zrobić, ponieważ Twierdzenie Cooka Twierdzenie to konstruktywne, w rzeczywistości daje czasie wielomianowym algorytm Cook st
Biorąc DTM M otrzymaniu dwóch wejść, oraz trzy jednoargumentowy liczby n , m i t ,
Cook(M,n,m,t) zwraca logiczny obwód rozmiaru O(t2) , która symuluje M na wejściach długości (n,m) dla t kroków.
Spróbujmy wykorzystać do rozszerzenia argumentu dla P=PH uzyskanie TQBF rozwiązywania algorytm (właściwie TQBCircuit, czyli Totally problemem Ilościowy Boolean obwodu).
Idea algorytmu jest następujący: to wielokrotne użycie Cook na A w celu usunięcia kwantyfikatorów z danego obwodu ilościowo. Istnieją numer liniowy kwantyfikatorów więc mamy nadzieję uzyskać algorytm czasu wielomianu (mamy algorytm z wielomianowo wielu kroków wykorzystujących czasie wielomianowym podprogramów Cook ). Pod koniec tego procesu eliminacji kwantyfikatora będziemy mieli obwód bez kwantyfikatora, który można ocenić w czasie wielomianowym (problem z wartością obwodu jest w P , niech CV będzie algorytmem wielomianowym do obliczania wartości obwodu w danym obwodzie) .
Zobaczymy jednak, że ten pomysł nie działa (z tego samego powodu, na który wskazał Piotr).
Wynikowy algorytm wygląda na czas wielomianowy: mamy wielomian wiele kroków, każdy krok jest obliczalny w czasie wielomianowym. Jednak nie jest to poprawne, algorytm nie jest czasem wielomianowym.
Korzystanie z podprogramów czasu wielomianowego w algorytmie czasu wielomianowego jest czasem wielomianowym. Problem polega na tym, że generalnie nie musi to być prawdą, jeśli wartości zwracane przez podprogramy nie mają wielomianowego rozmiaru w oryginalnych danych wejściowych i zakładamy, że wykonujemy przypisania dotyczące wartości zwracanych z podprogramów. (W modelu TM musimy odczytywać dane wyjściowe dowolnego podprogramu wielomianowego bit po bicie). Tutaj wielkość zwracanej wartości z algorytmu Cook rośnie (może być potęgą wielkości przekazanego jej wejścia , dokładna moc zależy od czasu przebiegu A i wynosi około p2(|input|), skoro wiemy, że A nie może być krótszy niż czas liniowy, |output|jest przynajmniej |input|2 ).
Problem jest podobny do prostego kodu poniżej:
- Biorąc pod uwagę x ,
- Niech n=|x|,
- Niech y=x ,
- Dla i od 1 do n zrobić
- Niech y=y|y|, (tj. konkatenacja |y| kopii y )
- Zwróć y
Za każdym razem, gdy wykonujemy y=y|y|kwadratowy rozmiar y . Po n wykonaniach będziemy mieć y które jest x2n i ma rozmiar n2n , oczywiście nie jest wielomianem w wielkości wejściowej.
Załóżmy, że bierzemy pod uwagę tylko formuły kwantyfikowane z k(n) przemianami kwantyfikatora (gdzie n jest całkowitą wielkością formuły kwantyfikowanej).
Załóżmy, że A jest uruchamiany w czasie p (np liniowy czasu, który nie jest wykluczone, do tej pory), i być może bardziej skuteczne Cook algorytm wyprowadzania mniejszy obwód wielkości l(t) w miejsce t2 , to uzyskać algorytm dla ExtCircuitSat działający w czasie (l∘p)O(k)(n)=l(p(l(p(…(l(p(n)))))))O(k) compositions . Nawet w przypadku, gdy zarównoljakipbyły liniowe (ale o współczynniku całkowityma≥2) otrzymalibyśmy algorytm działający w czasieΩ(n2k(n))i gdybyk(n)=Θ(n)to byłobyΩ(n2n) podobny do algorytmu brutalnej siły (a nawet to było oparte na założeniu, że Cook-Levin można wykonać na algorytmach, uzyskując obwody o rozmiarach liniowych w czasie działania algorytmu).