Dưới đây tôi mở rộng một chút về vấn đề trong câu trả lời của Peter bằng cách cố gắng thực hiện loại bỏ định lượng cho số bước không đổi để xem nó thất bại ở đâu và liệu có thể cứu vãn được gì từ nỗ lực đó không.
Hãy thử khuếch đại trong hơn số lần không đổi.P=NP
Giả sử rằng . Do đó, có cỗ máy thời gian đa thức giải quyết Ext-Circuit-SAT (có phần mở rộng thỏa mãn cho một mạch nhất định và gán một phần cho đầu vào của nó không?).P=NP
Chính thức hơn, chúng ta có một thuật toán đa thời gian với thời gian chạy đa thức st Ap(n)∈poly(n)
Đưa ra một mạch Boolean và gán một phần cho các đầu vào, trả về "có" nếu có phần mở rộng của thỏa mãn và trả về "không" nếu không.φτ
Aτφ
Để vượt qua thời gian không đổi, chúng ta cần thực hiện loại bỏ định lượng một cách hiệu quả. Chúng ta có thể làm điều này bởi vì định lý Cook-Levin là một định lý mang tính xây dựng, trên thực tế, nó đưa ra thuật toán thời gian đa thức stCook
Cho một DTM nhận hai đầu vào và ba số đơn vị , và , trả về một mạch Boolean có kích thước mô phỏng trên các đầu vào có độ dài cho các bước .Mnmt
Cook(M,n,m,t)O(t2)M(n,m)t
Chúng ta hãy thử sử dụng những điều này để mở rộng đối số cho để có được thuật toán giải TQBF (thực ra là TQBCircuit, tức là bài toán Boolean Circuit được định lượng hoàn toàn).P=PH
Ý tưởng của thuật toán như sau: chúng tôi liên tục sử dụng on để loại bỏ các bộ lượng hóa khỏi một mạch định lượng nhất định. Có số lượng định lượng tuyến tính, vì vậy chúng tôi hy vọng sẽ có được thuật toán thời gian đa thức (chúng tôi có một thuật toán với nhiều bước đa thức sử dụng chương trình con thời gian đa thức ). Khi kết thúc quá trình loại bỏ bộ định lượng này, chúng ta sẽ có một mạch không có bộ định lượng có thể được đánh giá theo thời gian đa thức (Bài toán giá trị mạch nằm trong , hãy để là thuật toán thời gian đa thức để tính giá trị mạch của mạch đã cho).CookACookPCV
Tuy nhiên chúng ta sẽ thấy rằng ý tưởng này không hoạt động (vì lý do tương tự được Peter chỉ ra).
Thuật toán kết quả trông thời gian đa thức: chúng ta có nhiều bước đa thức, mỗi bước là thời gian đa thức tính toán. Tuy nhiên điều này không đúng, thuật toán không phải là thời gian đa thức.
Sử dụng chương trình con thời gian đa thức trong thuật toán thời gian đa thức là thời gian đa thức. Vấn đề là nói chung, điều này không cần phải đúng nếu các giá trị được trả về của chương trình con không có kích thước đa thức trong đầu vào ban đầu và chúng tôi giả sử rằng chúng tôi thực hiện các bài tập về các giá trị trả về từ chương trình con. (Trong mô hình TM, chúng ta phải đọc đầu ra của bất kỳ chương trình con thời gian đa thức nào từng bit.) Ở đây kích thước của giá trị được trả về từ thuật toán đang tăng (có thể là sức mạnh của kích thước của đầu vào được cung cấp cho nó, chính xác công suất phụ thuộc vào thời gian chạy của và khoảng , vì vậy chúng ta biết rằng không thể nhỏ hơn thời gian tuyến tính, ít nhất làCookAp2(|input|)A|output||input|2).
Vấn đề tương tự như mã đơn giản dưới đây:
- Cho ,x
- Đặt,n=|x|
- Đặt ,y=x
- Đối với từ đến làm
i1n
- Đặt , (nghĩa là ghép bản sao của )y=y|y||y|y
- Trả lại y
Mỗi lần thực hiện chúng ta bình phương kích thước của . Sau thực hiện, chúng ta sẽ có một là và có kích thước , rõ ràng không phải là đa thức về kích thước của đầu vào.y=y|y|ynyx2nn2n
Giả sử rằng chúng ta chỉ xem xét các công thức được định lượng với các thay thế định lượng (trong đó là tổng kích thước của công thức được định lượng).k(n)n
Giả sử rằng chạy trong thời gian (ví dụ: thời gian tuyến tính không được loại trừ cho đến nay) và có thể có thuật toán hiệu quả hơn xuất ra một mạch nhỏ hơn có kích thước thay cho , sau đó chúng ta có được thuật toán cho ExtCircuitSat chạy trong thời gian . Ngay cả trong trường hợp cả và đều tuyến tính (nhưng với tổng hệ số ), chúng ta sẽ có được một thuật toán chạy theo thời gian và nếu sẽ làApCookl(t)t2(l∘p)O(k)(n)=l(p(l(p(…(l(p(n)))))))O(k) compositionslpa≥2Ω(n2k(n))k(n)=Θ(n)Ω(n2n) tương tự như thuật toán brute-force (và thậm chí điều này dựa trên giả định Cook-Levin có thể được thực hiện trên các thuật toán dẫn đến các mạch có kích thước tuyến tính trong thời gian chạy thuật toán).