Iya. Jika adalah konstanta (atau 1 / polylog ( n ) ), dan Anda berjanji bahwa setidaknya ϵ 2 n dari semua kemungkinan penugasan memenuhi input 3CNF, maka Anda dapat menemukan penugasan tersebut dalam polinomial deterministik- waktu.0<ϵ<11/polylog(n)ϵ2n
Algoritma tidak sulit:
Klaim: Di bawah janji menyatakan, harus ada ukuran yang konstan set variabel yang menyentuh semua klausul dalam 3CNF, dalam arti bahwa setiap 3-klausul harus berisi variabel dari S .SS
Bukti klaim (sketsa): Jika tidak, harus ada keluarga yang cukup besar dengan 3 klausa dari 3CNF, di mana setiap variabel hanya muncul satu kali. Tetapi keluarga ini, ketika cukup besar, sudah kurang dari bagian dari tugas yang memuaskan. QEDϵ
Dengan demikian, Anda dapat menjalankan lebih dari semua kemungkinan (jumlah konstan) dari tugas ke . Di bawah setiap penetapan tetap untuk S , 3CNF menjadi 2CNF, dengan asumsi bahwa S mencapai 3CNF asli. Sekarang, Anda dapat menggunakan algoritma deterministik polytime yang dikenal untuk menemukan tugas yang memuaskan untuk rumus 2CNF. Secara keseluruhan, Anda mendapatkan batas waktu polinomial atas.SSS
Algoritma untuk 2SAT adalah saya pikir sudah di kertas 1971 S. Cook yang terkenal.
Algoritma untuk 3CNF adalah dari: L. Trevisan
Catatan tentang Penghitungan Perkiraan Deterministik untuk k-DNF
Di Proc. dari APPROX-RANDOM, Springer-Verlag, halaman 417-426, 2004
Makalah asli menunjukkan hasil untuk 3CNF adalah: E. Hirsch, Algoritma deterministik cepat untuk formula yang memiliki banyak tugas yang memuaskan , Jurnal IGPL, 6 (1): 59-71, 1998