Tidak. Jika instance 3-SAT memiliki klausa , maka Anda dapat menguji kepuasan dalam O ( m 2 N )mO(m2N) . Karena adalah konstanta tetap, ini adalah algoritma waktu polinomial yang memecahkan semua contoh masalah Anda.N
Algoritma ini bekerja dalam tahap . Biarkan φ i menunjukkan rumus yang terdiri dari klausa yang hanya menggunakan variabel dari x 1 , ... , x i . Misalkan S i ⊆ { 0 , 1 } n menunjukkan set penugasan ke x i - N , x i - N + 1 , ... , x i yang dapat diperluas ke penugasan yang memuaskan untuk φ i . Perhatikan bahwa diberikan Smφix1,…,xiSi⊆{0,1}nxi−N,xi−N+1,…,xiφi , kita dapat menghitungSi−1 dalam O ( 2 N ) waktu: untuk setiap ( x i - N - 1 , … , x i - 1 ) ∈ S i - 1 , kami mencoba kedua kemungkinan untuk x i dan memeriksa apakah itu memenuhi semua klausa dari φ i yang berisi variabel x i ; jika demikian, kami menambahkan ( x i - N , ...SiO(2N)(xi−N−1,…,xi−1)∈Si−1xiφixi ke S i . Di i(xi−N,…,xi)Sii tahap ke- , kita menghitung . Setelah kami menyelesaikan semua tahap m , instance 3-SAT memuaskan jika dan hanya jika S m ≠ ∅ . Setiap tahap membutuhkan waktu O ( 2 N ) , dan ada tahap m , sehingga total waktu berjalan adalah O ( m 2 N ) . Ini jumlahnya banyak dalam ukuran input, dan dengan demikian merupakan algoritma waktu-polinomial.SimSm≠∅O(2N)mO(m2N)
Bahkan jika Anda mengizinkan sejumlah klausa untuk melanggar batasan, masalahnya masih dapat diselesaikan dalam waktu polinomial. Secara khusus, jika menghitung jumlah klausa yang melanggar batasan, Anda dapat menyelesaikan masalah dalam waktu O ( m 2 ( t + 1 ) N ) , dengan terlebih dahulu menghitung semua nilai yang mungkin untuk variabel dalam klausa tersebut, kemudian melanjutkan dengan algoritma di atas. Ketika t adalah konstanta tetap, ini adalah waktu polinomial. Mungkin ada algoritma yang lebih efisien.tO(m2(t+1)N)t