Pemecah SAT deterministik

8

Saya punya pertanyaan berikut. Apakah pemecah SAT bersifat deterministik?

Maksud saya, misalnya, tentang algoritma miniSAT dan DPLL . Apakah mereka sepenuhnya deterministik?

Jika algoritma ini akan mengembalikan unSAT itu berarti bahwa solusinya tidak ada?

pengguna64231
sumber

Jawaban:

14

Algoritma inti seperti DPLL dan penyempurnaannya seperti CDCL sepenuhnya deterministik.

Perhatikan bahwa non-determinisme tidak selalu berarti bahwa algoritma dapat menyebabkan hasil yang salah. Misalnya kita bisa membedakan

  • Algoritma Monte Carlo , yang merupakan algoritma acak yang outputnya mungkin salah dengan beberapa probabilitas.

  • Algoritma Las Vegas , yang merupakan algoritma acak yang outputnya selalu benar , tetapi algoritma 'bertaruh' dengan sumber daya yang digunakan dalam perhitungan, misalnya waktu berjalan pada input yang identik dapat bervariasi.

Pada ekstrim lain adalah algoritma probabilistik untuk menyelesaikan k-SAT seperti Schöning [1] yang merupakan Monte-Carlo, dan sangat efektif dalam praktik mengingat kesederhanaannya. Menariknya algoritma Schöning dapat sepenuhnya derandomised tanpa kehilangan (banyak) keefektifannya [2].

Dalam praktiknya, pemecah SAT industri selalu menggunakan tingkat keacakan tertentu, sehingga dapat 'lepas' dari perilaku terburuk dari algoritma berbasis-DPLL. MiniSat adalah perangkat lunak yang sangat dapat dikonfigurasi dan berkembang. Yang mengatakan, MiniSat tidak sepenuhnya deterministik: pilihan variabel percabangan kadang-kadang acak, tergantung pada opsi baris perintah. (Defaultnya adalah 2% variabel percabangan dipilih secara acak IIRC.) Demikian juga, MiniSAT memiliki opsi untuk menginisialisasi skor VSIDS secara acak. (VSIDS adalah heuristik untuk 'mengukur' pengaruh variabel.)


  1. U. Schöning, Algoritma Probabilistik untukk-SAT Berdasarkan Pencarian dan Restart Lokal Terbatas .

  2. RA Moser, D. Scheder, Derandomisasi Penuh dari Schöning's kAlgoritma -AT .

Martin Berger
sumber
Referensi yang sangat bagus.
adrianN
apakah algoritma monte-carlo dapat mengatakan bahwa suatu masalah adalah SAT ketika tidak, tanpa solusi kepuasan atau hanya pada kasus unSAT, bahwa masalahnya mungkin SAT?
Xavier Combelle
@ XavierCombelle Itu akan tergantung pada algoritma spesifik, walaupun saya kesulitan memikirkan algoritma yang bisa membuat SAT salah. Schöning hanya mendapatkan unSAT salah.
Martin Berger
Satu ekstensi kecil - sementara MiniSat menggunakan keacakan, itu bukan keacakan "benar". Setiap menjalankan MiniSat akan menghasilkan jawaban yang sama, dalam jumlah waktu yang sama (jika Anda tidak mengkonfigurasi ulang opsi apa pun), karena pilihan "acak" yang sama dipilih setiap kali solver dijalankan.
Chris Jefferson
@ChrisJefferson Tidakkah MiniSAT memiliki cara untuk menentukan seed acak?
Martin Berger
6

Itu benar. DPLL mengeksplorasi ruang secara mendalam. Jika mengembalikan 'unsat' maka tentu tidak ada tugas yang memuaskan.

Baru-baru ini, para peneliti telah mengembangkan pemecah SAT yang mensertifikasi yang juga memberikan bukti ketidakpuasan, ketika mereka mengembalikan "tidak". Bukti ini dapat diperiksa oleh orang lain, yang menyediakan cara bagi orang lain untuk memverifikasi bahwa rumus tidak memuaskan tanpa mereka harus menjalankan kembali algoritma SAT. Ini dapat bermanfaat dalam beberapa konteks.

MiniSAT adalah implementasi, bukan algoritma. Perilakunya tergantung pada kodenya. Saya tidak dapat berbicara dengan apa yang dilakukan kode.

DW
sumber
Semua pemecah DPLL / CDCL dapat "ditambah" untuk menghasilkan bukti ketidakpuasan.
Yuval Filmus
5

Kata kunci yang mungkin Anda lewatkan adalah kelengkapan . Secara umum, algoritma pencarian dikatakan lengkap jika ia menemukan solusi jika sudah ada (diberikan waktu yang cukup). Secara khusus, DPLL adalah contoh metode pencarian deterministik, lengkap.

Juho
sumber
3

Pemecah SAT dapat bersifat deterministik atau tidak tergantung pada bagaimana penerapannya. Perhatikan bahwa nondeterminisme di sini hanya dapat memengaruhi model yang dihasilkan, bukan jawaban (SAT atau UNSAT) dari pemecah! Untuk tujuan diversifikasi dan lain-lain, pemecah SAT umumnya memperkenalkan keacakan pada titik tertentu: misalnya untuk menginisialisasi kegiatan variabel atau membuat keputusan acak. Dalam minisat misalnya, keputusan acak dibuat dengan memanggil fonction yang selalu mengembalikan nomor acak yang sama saat menggunakan seed acak yang sama. Jadi pada titik ini ketika Anda tidak mengubah konfigurasi pemecah apa pun, Anda akan selalu memiliki jawaban dan model yang sama. Mengubah benih acak misalnya tidak akan mempengaruhi jawaban (SAT atau UNSAT) tetapi dapat mengubah model dan waktu eksekusi.

RTK
sumber