Mengapa CNF digunakan untuk SAT dan bukan DNF?

22

Saya tidak begitu mengerti mengapa hampir semua pemecah SAT menggunakan CNF, bukan DNF. Menurut saya menyelesaikan SAT lebih mudah menggunakan DNF. Setelah semua, Anda hanya perlu memindai set implan dan memeriksa apakah salah satu dari mereka tidak mengandung variabel dan negasi. Untuk CNF, tidak ada prosedur sederhana seperti ini.

Kaveh
sumber
5
Tidak semua pemecah kendala menggunakan CNF sebagai input. Beberapa memilih untuk tidak, karena struktur set kendala asli dipertahankan.
Dave Clarke
1
pertanyaan ini memiliki premis yang salah & tidak berpikir itu layak peringkat tinggi seperti yang diungkapkan saat ini. SAT didefinisikan sebagai solusi dari formula CNF. ada masalah penyelesaian DNF (Anda bahkan bisa menyebutnya mencari tugas yang memuaskan ) tetapi tidak disebut / dijuluki SAT di CS. & imho ini harus dimigrasikan ke cs.se ... note lain - mengonversi CNF ke DNF dan sebaliknya sebenarnya sangat mirip dengan, atau dapat dilihat sebagai, algoritme kompresi yang gagal parah pada kasus-kasus tertentu (mengarah ke ledakan eksponensial) dalam ukuran)
vzn
10
@vzn: sebenarnya, "SAT" kadang-kadang digunakan untuk merujuk pada masalah menemukan tugas yang memuaskan untuk rumus boolean apa pun . CNF-SAT hanyalah kasus khusus yang paling menarik, sehingga kita cenderung menggunakan "SAT" untuk merujuk ke CNF-SAT khususnya sebagai semacam synechdoche. DNF-SAT, tentu saja, dapat dipecahkan secara efisien, dengan cara yang sama seperti CNF-TAUTOLOGY dapat dipecahkan secara efisien. Pertanyaannya memang tampaknya didasarkan pada tidak menyadarinya.
Niel de Beaudrap

Jawaban:

56

Pengurangan buku teks dari SAT ke 3SAT, karena Karp, mengubah rumus boolean sewenang-wenang menjadi formula boolean CNF ekuivalen " dari ukuran polinomial , sehingga memuaskan jika dan hanya jika memuaskan. (Sebenarnya, kedua formula ini tidak setara, karena memiliki variabel tambahan, tetapi nilai sebenarnya tidak tergantung pada variabel-variabel baru itu.)Φ Φ Φ Φ Φ ΦΦ ΦΦΦΦ

Tidak ada pengurangan serupa dari formula boolean yang berubah-ubah menjadi formula DNF yang diketahui; semua transformasi yang diketahui meningkatkan ukuran rumus secara eksponensial. Selain itu, kecuali P = NP, tidak ada pengurangan seperti itu!

Jeffε
sumber
afaik konversi DNF ke CNF dan sebaliknya tidak persis sama dengan P vs NP meskipun mungkin berhubungan dengan beberapa pemisahan kelas kompleksitas penting (tampaknya untuk kelas "lebih besar" dari NP) ... masalahnya adalah hal itu dapat menyebabkan sebuah ledakan eksponensial dalam ukuran ... dan dalam hal apapun konversi antara CNF dan DNF bukan masalah keputusan ... ada beberapa cara untuk mengubahnya menjadi masalah keputusan ...
vzn
10
Saya pikir poin JeffE adalah bahwa DNF-SAT dalam P, jadi tidak bisa NP-lengkap kecuali P = NP.
Luke Mathieson
2
"semua transformasi yang diketahui" tidak benar mengingat pengetahuan saat ini, afaik ada DNF <=> rumus / konversi CNF yang terbukti membutuhkan ruang eksponensial terlepas dari algoritme ... tebak sepertinya diskusi tentang CNF <=> Konversi DNF sangat relevan untuk pertanyaan ini & jawaban ini mengisyaratkan ... apakah singkatan "DNF-SAT" digunakan di mana saja dalam literatur? jangan ingat melihatnya sendiri ... sepertinya secara inheren membingungkan bagi saya ... Memuaskan DNF adalah masalah keputusan, DNF <-> Konversi CNF adalah masalah fungsi & jawabannya tidak membuat perbedaan itu terlalu jelas; jawaban yang bagus akan ...
vzn
@ Jɛ ff E: apakah Anda keberatan mengklarifikasi apa yang Anda maksud dengan "formula boolean sewenang-wenang" di sini? Melihat kertas Karp , halaman 92, KEPUASAN didefinisikan dalam formula CNF. Ini tidak memengaruhi jawaban Anda terhadap pertanyaan OP, tetapi saya mencoba memastikan tidak ada hasil yang lebih umum untuk rumus boolean yang sewenang-wenang (yaitu, rumus yang tidak harus dalam CNF). Terima kasih
lyes
22

Sebagian besar hal-hal penting dikatakan tetapi saya ingin menekankan beberapa poin.

  1. kepuasan formula DNF adalah P
  2. kepuasan formula CNF adalah NP
  3. menguji apakah rumus CNF adalah tautologi adalah P
  4. menguji apakah formula DNF adalah tautologi adalah CoNP
  5. meniadakan hasil DNF CNF dan sebaliknya

Jadi pemecah SAT menggunakan CNF karena mereka menargetkan kepuasan dan formula apa pun dapat diterjemahkan ke CNF sambil mempertahankan kepuasan dalam waktu linier.

Mikolas
sumber
1
Referensi yang bagus: soe.ucsc.edu/classes/cmps132/Winter05/hw/hw8sols.pdf
MS Dousti
1
@ PayfunPay mereka lakukan. Misalnya, . Jika Anda melarang klausa yang berisi variabel yang sama dua kali, maka ada satu representasi tautologi, yang merupakan set klausa kosong. {{¬xx}}
Mikolas
3
@ Tayfun sementara saya setuju bahwa definisi biasanya tidak mengizinkan variabel berulang dalam klausa, saya tidak berpikir saya pernah melihat definisi yang akan melarang set klausa kosong. (Dan tidak jelas bagi saya mengapa Anda ingin melakukan itu)
Mikolas
2
@Tayfun 1) dapatkah Anda mengarahkan saya ke publikasi yang mengatakan bahwa tidak ada tautologi di CNF atau bahwa kumpulan klausa kosong bukan CNF? 2) jika Anda melarang set klausa kosong, maka Anda juga harus melarang klausa kosong dan Anda tidak dapat mewakili salah 3) jika Anda tidak mengizinkan benar dan / atau salah dalam CNF, Anda kehilangan properti karena dapat mewakili semua fungsi Boolean, mengapa Anda ingin melakukan itu?
Mikolas
1
"Seharusnya tidak ada pengulangan variabel atau literal dalam klausa yang diberikan." --- itu tidak melarang formula atau klausa kosong. BTW Jika Anda melarang klausa kosong, Anda tidak lagi dapat melakukan bukti penyangkalan resolusi, yang merupakan bagian yang cukup penting dari penalaran otomatis.
Mikolas
18

Pemecah SAT tidak "menggunakan" CNF - mereka (sering) diberi CNF sebagai input dan melakukan yang terbaik untuk menyelesaikan CNF yang diberikan. Seperti yang ditunjukkan oleh pertanyaan Anda, representasi adalah segalanya - jauh lebih mudah untuk mengatakan apakah DNF lebih memuaskan daripada CNF dengan ukuran yang sama.

Ini mengarah pada pertanyaan mengapa pemecah SAT tidak bisa hanya mengubah CNF yang diberikan menjadi DNF dan memecahkan DNF yang dihasilkan, dan mencoba ini adalah latihan yang baik untuk dilakukan dalam memahami masalah representasi.

Lev Reyzin
sumber
11

7 th September 2013: jawaban lebih lanjut menambahkan, cek bagian bawah halaman


c1...cmci=li,1...li,kcil¬l2nksolusi formula. Jadi keseluruhan DNF hanyalah sebuah enumerasi solusi. Rumus mungkin memiliki banyak solusi secara eksponensial, sehingga rumus DNF yang sesuai mungkin memiliki banyak klausa secara eksponensial. Coba konversi rumus CNF ini:

l1l2l3l4

l5l6l7l8

l9l10l11l12

l13l14l15l16

l17l18l19l20

ke rumus DNF yang sesuai: Anda akan mendapatkan terlalu banyak klausa. Dalam satu kata: CNF kompak, sedangkan DNF tidak; CNF tersirat, sedangkan DNF eksplisit.

Masalah berikut adalah NP-complete: diberikan contoh DNF, apakah ada penugasan variabel yang memalsukan semua klausa?

Giorgio Camerani
sumber
4
Untuk mendapatkan pemformatan LaTeX yang benar, ganti \ dan dan \ atau dengan \ land dan \ lor (atau \ wedge dan \ vee).
Jeffε
2
Tidak ada yang secara inheren lebih kompak tentang transformasi ke CNF biasa, kunci nyata untuk pertanyaan OP adalah fakta bahwa Anda dapat membuat fungsi CNF yang "memuaskan" dengan variabel tambahan. Mungkin ada perkiraan serupa yang dapat Anda lakukan dengan DNF untuk memecahkan masalah yang berbeda, bukannya menguji untuk kepuasan. (fungsi equi-ketidakpuasan? ...)
dividebyzero
1
Wawasan dari Giorgio Camerani ini tidak baik. Peningkatan eksponensial yang sama dalam jumlah klausa dapat terjadi jika Anda mengonversi sesuatu ke CNF. Pilih contoh yang sama dan ganti "and" s dengan "atau" s. Konversi dari ekspresi DNF kecil ini ke CNF akan sangat besar. Mereka memiliki sedikit hubungan ying-dan-yang dengan mereka.
dividebyzero
@dividebyzero: Saya telah mencurahkan jawaban terpisah untuk menanggapi komentar Anda.
Giorgio Camerani
6

Saya baru menyadari satu hal lagi, yang semoga layak mendapat jawaban terpisah. Anggapan pertanyaan itu tidak sepenuhnya benar. Diagram keputusan biner (BDD) dapat dilihat sebagai representasi DNF yang ringkas / halus. Ada beberapa pemecah SAT yang menggunakan BDD tetapi saya yakin mereka tidak lagi muncul.

Ada sebuah makalah yang bagus dari Darwiche dan Marquis yang mempelajari sifat-sifat berbeda dari berbagai representasi fungsi Boolean.

Mikolas
sumber
4

Jawaban lebih lanjut ini dimaksudkan sebagai umpan balik untuk membagi komentar nol dengan jawaban saya sebelumnya.

Seperti yang dikatakan dividebyzero, memang benar bahwa CNF dan DNF adalah dua sisi dari koin yang sama.

PNPcomplete

PNPcomplete

Pada satu ekstremitas kita memiliki Kontradiksi, yaitu formula yang tidak memuaskan. Pada ekstremitas yang berlawanan kita memiliki Tautologi, yaitu formula yang tidak dapat dibenarkan. Di tengah, kami memiliki formula yang memuaskan dan bisa dipalsukan.

nk2nk

nk2nk

k=02nNPcomplete

k=02nNPcomplete

2n

2n

Di bawah cahaya ini menjadi lebih jelas mengapa Kepuasan CNF dan DNF Falsifiability setara dalam hal kekerasan komputasi. Karena mereka sebenarnya adalah masalah yang sama, karena tugas yang mendasarinya persis sama: untuk mengetahui apakah penyatuan beberapa set sama dengan ruang semua kemungkinan . Tugas semacam itu membawa kita ke ranah penghitungan yang lebih luas, yang menurut pendapat saya sederhana salah satu jalan yang harus dieksplorasi dengan sungguh-sungguh untuk berharap dapat membuat beberapa kemajuan yang tidak dapat diabaikan pada masalah-masalah ini (saya ragu bahwa penelitian lebih lanjut tentang pemecah berbasis resolusi pada akhirnya dapat membawa kemajuan teoretis yang inovatif, sementara itu tentu saja terus membawa kemajuan praktis yang mengejutkan).

Kesulitan dari tugas tersebut adalah bahwa set tersebut tumpang tindih secara liar, dengan cara inklusi - eksklusi.

Kehadiran yang tumpang tindih seperti itulah tepatnya di mana kekerasan berhitung berada. Selain itu, fakta bahwa kita membiarkan set tersebut tumpang tindih adalah alasan yang memungkinkan kita untuk memiliki formula ringkas yang ruang solusinya tetap besar secara eksponensial.

Giorgio Camerani
sumber
4

Saya telah memutuskan untuk mengubah semua jawaban ini di utas ini (terutama jawaban Giorgio Camerani) menjadi tabel yang bagus sehingga dualitas dapat dilihat dalam satu pandangan:

DNFCNFtautology/unfalsifiabilitycoNP-completeP(each clause has a pair of P and ¬P)satisfiabilityP(sat. assignments are explicit)NP-completefalsifiabilityNP-completeP(fals. assignments are explicit)unsatisfiabilityP(each clause has a pair of P and ¬P)coNP-completeconversion to normal form, retaining equivalence()()conversion to normal form, retaining satisfiability()FPconversion to normal form, retaining falsiabilityFP()

()

()()FPNP[1]

Jawaban terpendek untuk pertanyaan: menunjukkan kepuasan (penyelesaian SAT) melalui DNF hanya dapat dilakukan dalam waktu eksponensial sesuai dengan tabel di atas.

mcb
sumber
1
Apa itu "formula PL" dan apa artinya "NF"?
Joshua Grochow
4
Ada beberapa masalah di sini. (1) Saya pikir dengan "ketidakabsahan" maksud Anda "tautologi". (2) KNF harus CNF.
Huck Bennett
2
A(φ)φφA(φ)φA(φ)
1
(1) "logika predikat" harus "logika proposisional". (2) Konversi ke bentuk normal bukan masalah keputusan, tetapi masalah fungsi (atau lebih tepatnya, masalah pencarian, karena "bentuk normal" tidak unik). Jadi, kelas keputusan yang diberikan dalam tabel tidak tepat.
Emil Jeřábek mendukung Monica
1
Δ3P