Biarkan variabel menjadi . Jarak antara dua variabel didefinisikan sebagai. Jarak antara dua literal adalah jarak antara dua variabel yang sesuai.
Misalkan saya memiliki instance 3-SAT sehingga untuk setiap klausa kita memiliki untuk beberapa nilai tetap .
Secara konseptual Anda dapat membayangkan ini karena semua literal secara fisik berada pada satu garis dan semua klausa tidak mampu menjangkau melampaui batas tertentu karena alasan fisik.
Mengingat kendala ini, adakah contoh keras 3-SAT? Seberapa kecil saya bisa membuat lingkungan dan masih menemukan contoh sulit? Bagaimana jika saya membiarkan beberapa klausul melanggar batasan?
Dengan keras saya maksudkan pemecah heuristik akan jatuh kembali pada kasus terburuk.
np-hardness
sat
IIAOPSW
sumber
sumber
Jawaban:
Tidak. Jika instance 3-SAT memiliki klausa , maka Anda dapat menguji kepuasan dalam O ( m 2 N )m O(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 φi x1,…,xi Si⊆{0,1}n xi−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 , ...Si O(2N) (xi−N−1,…,xi−1)∈Si−1 xi φi xi ke S i . Di i(xi−N,…,xi) Si i 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.Si m Sm≠∅ O(2N) m O(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.t O(m2(t+1)N) t
sumber
Grafik insiden rumus SAT adalah grafik bipartit yang memiliki titik untuk setiap klausa dan setiap variabel. Kami menambahkan tepi antara klausa dan semua variabelnya. Jika grafik insiden telah membatasi treewidth maka kita dapat memutuskan rumus SAT dalam P, sebenarnya kita dapat melakukan lebih banyak lagi. Grafik insiden Anda sangat terbatas. Misalnya itu adalah grafik jalur terbatas, jadi itu adalah waktu polinomial yang dapat dipecahkan. Untuk hasil struktural yang diketahui di atas misalnya lihat di: https://www.sciencedirect.com/science/article/pii/S0166218X07004106 .
sumber