Pengurangan waktu-poli dari ILP ke SAT?

14

Jadi, seperti diketahui, masalah keputusan 0-1 ILP adalah NP-complete. Menampilkannya dalam NP mudah, dan pengurangan aslinya dari SAT; sejak itu, banyak masalah NP-Lengkap lainnya telah terbukti memiliki formulasi ILP (yang berfungsi sebagai pengurangan dari masalah tersebut ke ILP), karena ILP sangat berguna secara umum.

Pengurangan dari ILP tampaknya jauh lebih sulit untuk dilakukan sendiri atau dilacak.

Jadi, pertanyaan saya adalah, apakah ada yang tahu pengurangan waktu-poli dari ILP ke SAT, yaitu menunjukkan bagaimana menyelesaikan masalah keputusan ILP 0-1 menggunakan SAT?

codetaku
sumber

Jawaban:

12

0-1 ILP diformulasikan sebagai:

Apakah ada vektor , tunduk pada batasan:x

Sebuah11x1+Sebuah12x2...+Sebuah1nxnb1Sebuah21x1+Sebuah22x2...+Sebuah2nxnb2...Sebuahm1x1+Sebuahm2x2...+Sebuahmnxnbm

Domain x: xjxxj{0,1}

Pengurangan ke k-sat:

Perkecil dahulu ke sirkuit sat:

Mulailah dengan baris pertama, membuat variabel boolean untuk mewakili masing-masing bit dalam dan satu variabel boolean untuk x j . Kemudian buat variabel untuk b 1 . Buat sirkuit tambahan (pilih favorit Anda) menambahkan baris ke atas.Sebuah1jxjb1

Kemudian buat sirkuit perbandingan, nyatakan jumlahnya kurang dari .b1

Sebuah1jb1

xj

CNF final akan berisi semua kendala.

Realz Slaw
sumber
Ah, saya mengerti sekarang ... Saya entah bagaimana lupa tentang pilihan untuk melalui rangkaian sat .... Terima kasih banyak atas bantuan Anda.
codetaku
0

Ini semacam necro-jawaban untuk pertanyaan yang sudah dijawab dan diterima, tetapi saya ingin mencatat, bahwa ada cara yang lebih mudah.

Pertimbangkan Anda memiliki salah satu ketidaksetaraan seperti ini:

5x1+2x2+3x36

(1,1,1)(1,1,0)(1,0,1)

(1,1,1)¬(x1x2x3)(¬x1¬x2¬x3)

(¬x1¬x2¬x3)(¬x1¬x2x3)(¬x1x2¬x3)

Melintasi semua ketidaksetaraan dan mengumpulkan klausa Anda akan mendapatkan cnf pada akhirnya. Seringkali cnf ini adalah CARA SIMPLER, kemudian satu, yang dihasilkan dari jawaban yang diterima. Biaya lebih sulit pra-pemrosesan.

Konstantin Vladimirov
sumber