Dalam rumus CNF berlawanan baca-dua kali setiap variabel muncul dua kali, sekali positif dan sekali negatif.
Saya tertarik dengan masalah , yang terdiri dalam menghitung paritas dari jumlah penugasan yang memuaskan dari rumus CNF baca-berlawanan dua kali.
Saya tidak dapat menemukan referensi tentang kompleksitas masalah tersebut. Yang paling dekat yang dapat saya temukan adalah bahwa versi penghitungan adalah -complete (lihat bagian 6.3 dalam makalah ini ).
Terima kasih sebelumnya atas bantuan Anda.
Perbarui 10 April 2016
- Dalam makalah ini , masalah ditunjukkan sebagai -complete, namun rumus yang dihasilkan oleh reduksi dari tidak dalam CNF, dan segera setelah Anda mencoba mengubahnya kembali menjadi CNF Anda mendapatkan formula baca-tiga kali.⊕ P 3 SAT
- Versi monoton ditampilkan sebagai -lengkap dalam makalah ini . Dalam makalah seperti itu, dengan cepat disebutkan di akhir bagian 4: Valiant mengatakan itu merosot. Tidak jelas bagi saya apa yang dimaksud degenerasi secara tepat, atau apa artinya dalam hal kekerasan.⊕ P ⊕ Rtw-Opp-CNF
Perbarui 12 April 2016
Akan sangat menarik untuk mengetahui apakah ada orang yang pernah mempelajari kompleksitas masalah . Diberikan rumus CNF yang kebalikannya baca-dua kali, masalah seperti itu meminta untuk menghitung perbedaan antara jumlah penugasan yang memuaskan memiliki jumlah ganjil variabel yang diset ke true dan jumlah penugasan yang memuaskan yang memiliki sejumlah variabel yang disetel ke true. Saya belum menemukan literatur tentang hal itu.
Pembaruan 29 Mei 2016
Seperti yang ditunjukkan oleh Emil Jeřábek dalam komentarnya, tidak benar bahwa Valiant mengatakan bahwa masalah merosot. Dia hanya mengatakan bahwa versi yang lebih terbatas dari masalah seperti itu, , semakin merosot. Sementara itu, saya terus tidak tahu apa sebenarnya yang merosot, tetapi setidaknya sekarang tampak jelas bahwa itu adalah sinonim dari kurangnya kekuatan ekspresif.⊕ Pl-Rtw-Opp-3CNF
sumber
Jawaban:
Ternyata setiap formula bertolak belakang yang dibaca memiliki jumlah penugasan yang genap. Inilah bukti yang bagus tentang hal itu, meskipun orang mungkin bisa menghilangkan terminologi grafik-teoretis.
Biarkan menjadi rumus CNF berlainan-baca-dua kali. Tanpa kehilangan keumuman, tidak ada klausa yang mengandung variabel dan negasinya.ϕ
Pertimbangkan grafik yang himpunan verteksnya adalah klausa dari , dan untuk setiap variabel , kami menambahkan tepi (tidak terarah) yang terjadi pada dua klausa yang berisi . Asumsi WLOG kami di mengatakan grafik ini tidak memiliki loop otomatis. Selain itu, pikirkan memberi label pada setiap sisi dengan variabel yang mendefinisikannya; dengan cara ini kita dapat membedakan antara tepi paralel.ϕ x x ϕG ϕ x x ϕ
Orientasi adalah graf berarah yang ujung-ujungnya dibentuk dengan menetapkan arah untuk setiap sisi di . Panggil orientasi dapat diterima jika setiap simpul memiliki tepi keluar. Sangat mudah untuk melihat bahwa memuaskan tugas untuk dalam korespondensi bijective dengan orientasi diterima dari .G G G ϕ GG G G G ϕ G
Sekarang saya mengklaim bahwa jumlah orientasi yang dapat diterima dari adalah genap. Argumennya adalah "dengan involusi": Saya membuat peta dengan properti berikut:ΦG Φ
Setelah ini didirikan, kita dapat mengamati bahwa orbit memiliki ukuran 2 dan partisi orientasi diterima dari . Oleh karena itu jumlah orientasi yang dapat diterima adalah genap.GΦ G
Untuk mendefinisikan , biarkan menjadi orientasi yang dapat diterima, dan pertimbangkan untuk memecah menjadi komponen-komponen yang sangat terhubung. kemudian mengirimkan ke orientasi yang dibentuk dengan membalik semua tepi dalam komponen yang terhubung kuat. Properti kemudian diperiksa dengan jelas:→ G → G Φ → GΦ G⃗ G⃗ Φ G⃗
sumber
Saya tidak yakin apakah ide saya dapat dimengerti, jadi saya akan menjelaskan pada contoh Giorgio:
Pertama saya perlu mengubah ini di formulir DNF:
Ini harus memberikan jawaban yang sama. Dan tidak masalah jika saya menghitung jumlah solusi modulo 2 untuk ini:
atau untuk ini:
Jadi saya memilih yang kedua. Saya memiliki implan:
Sekarang saya sedang membangun sistem persamaan:
Sistem ini memiliki satu solusi. 1 mod 2 = 1, jadi jawabannya adalah 1. Tetapi hanya terjadi satu kali. Jika setiap variabel muncul dua kali, ada kemungkinan untuk memiliki jawaban = 1?x6
sumber
maaf atas keterlambatan besar. Hingga saat ini mungkin masalahnya sudah terpecahkan. Jika tidak, saya akan menyajikan algoritma polinomial saya untuk menyelesaikan . Pertama mari kita coba hitung jumlah solusi modulo 2 dari persamaan ini: . Di mana f dan g adalah fungsi logika dan X adalah vektor variabel. Bagian umum, , muncul dua kali (satu kali dalam f (X) dan satu kali dalam g (X)). Jadi dalam modulo 2 bagian umum tidak penting. Kita dapat menghitung jumlah solusi modulo 2 dari dan jumlah solusi modulo 2 dari dan kemudian menjumlahkan hasil ini modulo 2. Sekarang mari kita asumsikan bahwa fungsi disajikan dalam bentuk ini:⊕Rtw-Opp-CNF f(X)⊕g(X) f(X)∧g(X) f(X) g(X)
di mana adalah (maksud saya variabel yang dihubungkan oleh operator AND; misalnya: ).ij x0∧x1∧¬x2
Untuk menghitung jumlah solusi dari fungsi ini modulo 2 kita bisa menghitung jumlah solusi masing-masing modulo 2 implan dan menjumlahkan semua hasil modulo 2. Jika kita memiliki vektor variabel X dan dalam implan tidak ada semua variabel dari vektor ini, maka kita tahu jumlah solusi modulo 2 untuk implan ini adalah 0, karena ada solusi, di mana k adalah jumlah variabel yang hilang. Jika implant memiliki semua variabel, maka jumlah solusi adalah 1 (k = 0). Jadi menghitung jumlah solusi modulo 2 dari itu mudah. Sekarang mari kita pertimbangkan:2k i0⊕i1⊕i2⊕...⊕in−1
Kita tahu bahwa . Secara umum, operasi ATAU dapat diganti dengan XOR dari setiap subset implan yang terhubung oleh operator AND. Dan ini adalah langkah penting: kami hanya tertarik pada himpunan bagian yang:a∨b=a⊕b⊕(a∧b)
1) memiliki semua variabel,
2) setiap variabel terjadi tepat satu (jika variabel terjadi dua kali, maka kita memiliki positif dan negatif dalam satu implan, jadi ini akan memberi sebagai 0).
Katakanlah kita memiliki positif di dan negatif di . Kemudian kita bisa menulis dan menyamakan:x0 i0 x0 i1
Dalam persamaan ini variabel dan sesuai dengan dan . Maksud saya jika, misalnya, terjadi dalam subset, maka = 1. Jika tidak, = 0. Jika kita membuat ini untuk semua variabel, kita akan mendapatkan set persamaan XOR dan kita harus menghitung jumlah solusi dari set ini. Masalah ini mudah. Jumlah soltion jika selalu , ketika l bernilai untuk ditemukan. Itu saja. Saya tahu ini bukan bukti formal, tapi saya harap ini bisa dimengerti.j0 j1 i0 i1 i0 j0 j0 2l
sumber