Kompleksitas menghitung paritas rumus CNF baca-dua kali berlawanan ( )

11

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.Rtw-Opp-CNF

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 ).#Rtw-Opp-CNF#P

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 SATRtw-Opp-SATP3SAT
  • 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-CNFRtw-Mon-CNFPRtw-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.ΔRtw-Opp-CNF


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-3CNFRtw-Opp-CNFPl-Rtw-Opp-3CNF

Giorgio Camerani
sumber
⊕Rtw-Opp-CNF sama sulitnya dengan ⊕Rtw-Mon-CNF. Anda dapat membuat gadget negasi: (i0 v x0 v x1) (x1 v x2) (i1 v x0 v x2). Jika i0 = i1, maka bobot = 0 (dalam modulo 2). Jika tidak, bobot = 1.
Saya tidak dapat menemukan pengurangan dari tRtw-Mon-CNF ke ⊕Rtw-Opp-CNF, tetapi saya menemukan algoritma polinomial untuk menyelesaikan ⊕Rtw-Opp-CNF. Jadi tRtw-Opp-CNF lebih sederhana.
Saya tidak dapat menemukan penyebutan tRtw-Opp-CNF di koran Valiant. Dia mengklaim bahwa ⊕Pl-Rtw-Opp-3CNF "merosot", tetapi itu melibatkan beberapa batasan tambahan.
Emil Jeřábek
@ EmilJeřábek: Anda benar sekali. Saya disesatkan oleh ketidaktahuan saya tentang makna "merosot" , dan saya menerapkan jenis penalaran yang sama yang biasanya diterapkan di hadapan hasil kelengkapan: jika masalah tertentu selesai untuk beberapa kelas, menghapus pembatasan dari itu jelas menjaga kelengkapan. Sekalipun saya masih tidak tahu apa sebenarnya arti "merosot" , paling tidak jelas bagi saya sekarang bahwa istilah semacam itu entah bagaimana merupakan sinonim dari kelemahan (yaitu kurangnya kekuatan ekspresif), maka alasan yang disebutkan di atas tidak dapat diterapkan. Saya telah memperbaiki pertanyaan itu.
Giorgio Camerani
1
@ Maciej: Benarkah? Bagaimana cara kerja algoritma polinomial Anda?
Giorgio Camerani

Jawaban:

3

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ϕxxϕ

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 ϕ GGGG 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Φ

  1. Φ benar-benar didefinisikan (setiap orientasi yang dapat diterima dipetakan di suatu tempat)
  2. Φ mengirimkan orientasi yang dapat diterima ke orientasi yang dapat diterima
  3. Φ ΦΦ adalah involusi ( adalah identitas)ΦΦ
  4. Φ tidak memiliki poin tetap

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ΦGGΦG

  1. Setiap grafik yang diarahkan dapat dipartisi menjadi komponen yang sangat terhubung.
  2. Pertimbangkan "DAG komponen yang sangat terhubung" di ; sebut saja grafik hasil bagi. Perhatikan bahwa akan memiliki struktur hasil bagi yang sama, karena tidak memengaruhi tepi antara SCC, dan grafik yang terhubung kuat tetap sangat terhubung saat membalikkan semua tepinya. Selain itu, jika SCC memiliki lebih dari satu simpul, maka semua simpul penyusunnya memiliki tepi masuk. Jika SCC hanya memiliki satu simpul dan bukan sumber dalam hasil bagi, maka semua simpul penyusunnya memiliki tepi yang masuk. Jadi untuk menunjukkan Φ(G )ΦΦ(G )GGΦ(G)ΦΦ(G)dapat diterima, cukup untuk menunjukkan bahwa SCC yang merupakan sumber dalam hasil bagi memiliki beberapa simpul. Tetapi ini mengikuti fakta bahwa setiap simpul dalam komponen memiliki tepi masuk, yang harus berasal dari simpul lain dalam komponen karena tidak memiliki loop-sendiri dan komponen adalah sumber dalam hasil bagi.G
  3. Ini mengikuti dari fakta bahwa struktur hasil bagi bertepatan dengan struktur hasil bagi .Φ(G)G
  4. Dengan diterimanya, memiliki siklus, dan karenanya beberapa SCC dengan tepi di dalamnya.G
Andrew Morgan
sumber
Pengamatan yang bagus! Cara yang lebih sederhana untuk melihat ini (seperti yang Anda katakan, "hilangkan terminologi grafik-teori") adalah dengan mengamati bahwa jika suatu penugasan memenuhi F maka penugasan a '(x) = 1-a (x) memenuhi F juga. Ini dapat ditunjukkan dengan mudah dengan induksi pada jumlah variabel F.
holf
Saya tidak berpikir seperti yang diberikan adalah suatu involusi. Misalnya, perhatikan grafik 4-elemen dengan tepi terarah . Ini adalah orientasi yang dapat diterima. Asumsikan siklus pertamanya adalah ; kemudian, setelah membalikkan siklus ini, sebuah siklus baru muncul, yaitu. . Jika siklus ini dipesan sebelum yang asli, kami dalam masalah. Φ01203101200310
Emil Jeřábek
@ Maaf pengamatanmu juga salah. Pertimbangkan CNF dengan klausa , , dan . Ini dipenuhi oleh tugas , tetapi tidak oleh . x¬xy¬z¬yz(1,1,1)(0,0,0)
Emil Jeřábek
Saya pikir definisi mungkin berfungsi. Misalkan adalah himpunan simpul dengan properti yang untuk setiap dapat dicapai oleh jalur (diarahkan) dari , dapat dicapai oleh jalur dari . (Sebagai ahli logika modal, saya akan menggambarkan ini sebagai penyatuan kluster akhir dari penutupan reflektif transitif dari grafik terarah, saya tidak tahu apa yang akan disebut oleh para ahli teori graf itu.) Kemudian balikkan semua tepi dengan sumber (karenanya juga target) di . ΦMxyxxyM
Emil Jeřábek
@ Emil: Ah ya, kamu benar. Jika saya memahami saran Anda dengan benar, Anda mengatakan memecah orientasi menjadi komponen yang sangat terhubung dan membalikkan tepi dalam komponen. Saya pikir ini berhasil. Saya akan memperbarui jawaban saya sesuai. Terima kasih banyak!!
Andrew Morgan
0

Saya tidak yakin apakah ide saya dapat dimengerti, jadi saya akan menjelaskan pada contoh Giorgio:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6) .

Pertama saya perlu mengubah ini di formulir DNF:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6) .

Ini harus memberikan jawaban yang sama. Dan tidak masalah jika saya menghitung jumlah solusi modulo 2 untuk ini:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6) = 0

atau untuk ini:

(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6) = 1.

Jadi saya memilih yang kedua. Saya memiliki implan:

i0 =(x1x2x3)

i1 =(¬x1¬x3x4)

i2 =(¬x4x5)

i3 =(¬x2¬x5¬x6)

Sekarang saya sedang membangun sistem persamaan:

j0j1=1

j0j3=1

j0j1=1

j2j3=1

j3=1

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

Maciej
sumber
Jika pemikiran saya baik-baik saja, maka jawabannya adalah "tidak". Tentu saja saya berasumsi bahwa variabel terjadi sekali dalam positif dan sekali dalam negasi.
Maciej
Saya lupa tentang persamaan untuk : = 1. Tetapi hasilnya sama. Satu solusi: = 1, = 0, = 1, = 0.x4j1j2j3j2j1j0
Maciej
-1

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-CNFf(X)g(X)f(X)g(X)f(X)g(X)

i0i1i2...in1 ,

di mana adalah (maksud saya variabel yang dihubungkan oleh operator AND; misalnya: ).ijx0x1¬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:2ki0i1i2...in1

i0i1i2...in1 .

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:ab=ab(ab)

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:x0i0x0i1

j0j1=1 .

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.j0j1i0i1i0j0j02l

Maciej
sumber
Hmmm .... Apakah ada kasus ketika = 1? Rtw-Opp-CNF
Maciej
@AndrewMorgan Tapi rumus dengan klausa unik yang berisi semua variabel tepat sekali tidak akan menjadi rumus baca-dua kali. Pembatasannya persis dua kali, paling banyak dua kali.
Giorgio Camerani
@AndrewMorgan Rumus berikut (yang tidak dibaca-dua kali karena hanya muncul sekali) memiliki jumlah tugas memuaskan yang ganjil: . Semua variabel dari rumus tersebut, kecuali , mematuhi batasan baca-dua kali yang berlawanan, dan jumlah penugasan yang memuaskan aneh meskipun rumusnya tidak "memiliki klausa unik yang memuat semua variabel tepat satu kali" . x6(x1x2x3)(¬x1¬x3x4)(¬x4x5)(¬x2¬x5¬x6)x6
Giorgio Camerani
@GiorgioCamerani I berarti bahwa di antara semua klausa yang berisi semua variabel, ada klausa unik yang ada dalam formula input. yaitu dalam rumus seperti , ada klausa unik dengan semua variabel yang ada satu kali, sedangkan di atau tidak ada. Saya tidak bermaksud mengecualikan keberadaan klausa lain dalam input. Tapi bagaimanapun juga saya pikir saya salah paham atas jawaban Maciej, jadi saya menghapus komentar saya sebelumnya. ( x 1x 2 ) ( ¯ x 1¯ x 2 ) ( x 1 ) ( ¯ x 1 ) ( x 2 ) ( ¯ x 2 )(x1x2)(x1¯)(x2¯)(x1x2)(x1¯x2¯)(x1)(x1¯)(x2)(x2¯)
Andrew Morgan
@AndrewMorgan OK, sekarang saya mengerti. Namun pertimbangkan juga dalam keluarga kasus yang Anda maksudkan, jumlah tugas yang memuaskan tampaknya tetap genap. Pertanyaan yang diajukan oleh Maciej dalam komentarnya ternyata sangat menantang.
Giorgio Camerani