Jawaban:
Pencarian Resolusi (hanya menerapkan aturan resolusi dengan beberapa heuristik yang baik) adalah strategi lain yang mungkin untuk pemecah SAT. Secara teoritis itu secara eksponensial lebih kuat (yaitu ada masalah yang memiliki bukti lebih pendek eksponensial) daripada DPLL (yang hanya melakukan resolusi pohon meskipun Anda dapat menambahnya dengan pembelajaran nogood untuk meningkatkan kekuatannya - apakah itu membuatnya sekuat resolusi umum masih buka sejauh yang saya tahu) tetapi saya tidak tahu implementasi aktual yang berkinerja lebih baik.
Jika Anda tidak membatasi diri untuk menyelesaikan pencarian, maka WalkSat adalah pemecah pencarian lokal yang dapat digunakan untuk menemukan solusi yang memuaskan dan mengungguli pencarian berbasis DPLL dalam banyak kasus. Seseorang tidak dapat menggunakannya untuk membuktikan ketidakpuasan meskipun kecuali satu cache semua tugas yang gagal yang berarti persyaratan memori eksponensial.
Sunting: Lupa menambahkan - Pesawat pemotongan juga dapat digunakan (dengan mengurangi SAT ke program integer). Khususnya pemotongan Gomory cukup untuk menyelesaikan semua program integer ke optimal. Sekali lagi dalam kasus terburuk, nomor eksponensial mungkin diperlukan. Saya pikir buku Komputasi Kompleksitas Arora & Barak memiliki beberapa contoh sistem pembuktian yang secara teori dapat digunakan untuk sesuatu seperti pemecahan SAT. Sekali lagi, saya belum benar-benar melihat implementasi cepat dari apa pun selain metode berbasis pencarian DPLL atau lokal.
Propagasi survei adalah algoritma lain yang telah digunakan dengan sukses pada beberapa jenis masalah SAT, terutama contoh SAT acak. Seperti halnya WalkSAT, ini tidak dapat digunakan untuk membuktikan ketidakpuasan, tetapi didasarkan pada ide yang sangat berbeda (algoritma penyampaian pesan) dari WalkSAT.
Ada pemecah SAT berdasarkan pencarian lokal. Lihat, misalnya, makalah ini untuk penjelasan.
Anda juga bisa mengatakan, bahwa semua pemecah CSP juga pemecah SAT. Dan sejauh yang saya tahu ada dua metode yang digunakan dalam CSP:
Pencarian Pohon Monte Carlo (MCTS) baru-baru ini mencapai beberapa hasil mengesankan pada permainan seperti Go. Ide dasarnya adalah interleaving simulasi acak dengan pencarian pohon. Ini ringan dan mudah diimplementasikan, halaman hub penelitian yang saya tautkan mengandung banyak contoh, makalah dan beberapa kode juga.
Previti et al. [1] melakukan beberapa penyelidikan awal MCTS yang diterapkan pada SAT. Mereka menyebut algoritma pencarian berbasis MCTS UCTSAT ("batas kepercayaan tertinggi diterapkan pada pohon SAT", jika Anda mau). Mereka membandingkan kinerja DPLL dan UCTSAT pada contoh dari repositori SATLIB, dengan tujuan untuk melihat apakah UCTSAT akan menghasilkan pohon pencarian yang jauh lebih kecil daripada DPLL.
Untuk contoh pewarnaan acak 3-SAT dan grafik datar dengan ukuran berbeda, tidak ada perbedaan signifikan. Namun, UCTSAT berkinerja lebih baik untuk contoh di dunia nyata. Ukuran pohon rata-rata (dalam hal jumlah node) untuk empat instance analisis kesalahan rangkaian SSA yang berbeda ada beberapa ribu untuk DPLL, sementara selalu kurang dari 200 untuk UCTSAT.
DPLL tidak secara spesifik menentukan pemesanan variabel-kunjungan dan ada banyak penelitian menarik yang melihat strategi serangan pemesanan variabel optimal. beberapa di antaranya dimasukkan ke dalam logika pemilihan variabel dalam algoritma SAT. dalam beberapa hal penelitian ini adalah pendahuluan karena menunjukkan bahwa urutan serangan variabel yang berbeda menyebabkan kendala sekuensial yang berbeda (yang sangat berkorelasi dengan kekerasan misalnya), dan menyusun heuristik atau strategi paling efektif untuk mengeksploitasi wawasan yang tampaknya kunci ini tampaknya menjadi pada tahap awal penelitian.