Apa kompleksitas Median-SAT?

14

Misalkan menjadi rumus CNF dengan n variabel dan klausa m . Misalkan t { 0 , 1 } n mewakili penugasan variabel dan f φ ( t ) { 0 , ... , m } menghitung jumlah klausa yang dipenuhi oleh penugasan variabel ke φ . Kemudian definisikan Median-SAT sebagai masalah perhitungan nilai median f φ ( t ) di atas semua t { 0 , 1φnmt{0,1}nfφ(t){0,,m}φfφ(t) . Misalnya, jika φ adalah tautologi maka solusi untuk Median-SAT akan m karena terlepas dari penugasan setiap klausa akan terpenuhi. Namun dalam kasus ¯ S A T solusi untuk Median-SAT bisa di mana saja antara 0 dan m - 1 .t{0,1}nφmSAT¯0m1

Pertanyaan ini muncul ketika saya merenungkan dua ekstensi alami SAT, MAX-SAT dan #SAT, dan apa kesulitan dari masalah yang dihasilkan jika mereka disatukan. Untuk MAX-SAT kita harus menemukan tugas variabel tertentu untuk memaksimalkan jumlah variabel yang dipenuhi oleh . Untuk #SAT kita harus menghitung berapa banyak tugas memenuhi semua m klausul φ . Varian ini berakhir terutama sebagai perpanjangan dari #SAT (dan pada kenyataannya #WSAT ), tetapi mempertahankan beberapa rasa MAX-SAT di mana kita menghitung jumlah klausa yang puas daripada hanya memutuskan apakah mereka semua puas atau tidak.φmφ

Masalah ini tampaknya lebih sulit daripada #SAT atau #WSAT. Untuk setiap tugas #SAT variabel memutuskan masalah Boolean apakah yang memenuhi tugas atau tidak sedangkan Median-SAT menentukan "sejauh mana" φ puas dalam hal jumlah klausul bahwa memenuhi tugas.φφ

Saya menyadari bahwa masalah ini agak sewenang-wenang; menghitung rata-rata atau jumlah mode klausa yang dipenuhi oleh setiap penugasan variabel tampaknya menangkap kualitas yang sama. Mungkin banyak masalah lain juga.

Apakah masalah ini telah dipelajari, mungkin dengan kedok yang berbeda? Seberapa sulit dibandingkan dengan #SAT? Tidak jelas bagi saya apriori bahwa Median-SAT bahkan terkandung dalam FPSPACE, meskipun tampaknya terkandung dalam FEXPTIME.

Huck Bennett
sumber
3
Ada dalam : untuk setiap k m kita dapat menghitung jumlah tugas yang memenuhi setidaknya kFP#PFPSPACEkmk klausa menggunakan oracle #P.
Colin McQuillan
1
@Colin membuat ini menjadi jawaban?
Suresh Venkat
Ya, ini akan menjadi jawaban yang bagus. Bisakah Anda menguraikan bagaimana cara menanyakan oracle #P untuk memeriksa apakah klausa puas? Saya tidak tahu bagaimana melakukannya dengan efisien. km
Huck Bennett
@ Tsuyoshi, apa definisi Anda tentang SAT? Apakah kita mengizinkan pengulangan klausa? atau literal dan / atau variabel dalam klausa yang diberikan? Karena jika Anda tidak mengizinkan pengulangan literal dan / atau variabel dalam klausa yang diberikan, Anda tidak dapat memiliki rumus CNF yang merupakan tautologi ..
Tayfun Bayar
@Ayfun - Saya benar-benar mengajukan pertanyaan ini, Tsuyoshi membantu dengan sedikit perubahan. Anda benar tentang tautologi dalam formula CNF yang membutuhkan literal berulang. Varian SAT mana pun akan menarik, pengulangan CNF-SAT tanpa klausa dalam klausa (dalam hal ini tautologi tidak mungkin), atau mungkin CIRCUIT-SAT lebih umum. Saya tidak berpikir pilihan ini mengubah rasa pertanyaan.
Huck Bennett

Jawaban:

13

Diberikan instance SAT, integer , dan penugasan variabel, kita dapat memutuskan dalam waktu polinomial apakah tepatnya kkk klausa terpenuhi, hanya dengan menghitung jumlah klausa yang dipenuhi dan menguji apakah angka itu sama dengan . Oleh karena itu kita dapat menghitung jumlah total variabel assigments yang memenuhi tepat k klausa menggunakan oracle #P .kk

Jadi seperti Max-SAT, Median-SAT dapat dihitung dalam waktu polinomial menggunakan oracle Ini menunjukkan bahwa masalahnya ada di F P # PF P S P#P .FP#PFPSPACE

Colin McQuillan
sumber
Anda benar sekali. Ini adalah argumen yang sangat bersih, dan saya kira cukup jelas dari definisi #P. Saya belajar sesuatu.
Huck Bennett
1
Biarkan saya menguraikan ini sedikit lebih: Colin mengatakan bahwa karena kita dapat menentukan dalam waktu polinomial apakah penugasan variabel tertentu memenuhi klausa bahwa kita dapat secara nondeterministik menebak penugasan variabel dan kemudian menghitung berapa banyak jalur yang menerima (yaitu menerima penugasan variabel) kueri ini telah menggunakan oracle # P (dengan definisi # P ). Dengan iterasi melalui k = 1 sampai m, kita dapat menghitung jumlah rata-rata klausul puas di F P # P . k#P#PFP#P
Huck Bennett
3

Masalah ini dapat diselesaikan dengan menggunakan doa oracle untuk MAJSAT.lgm+1

Misalkan menunjukkan nilai median yang diinginkan untuk φ . Untuk fixed k , tentukan rumus ψ k sehingga benar untuk penugasan x jika f x memenuhi setidaknya k dari klausa φ . Perhatikan bahwa diberikan φ dalam bentuk CNF dan diberikan k , Anda dapat dengan mudah membuat ψ k dalam bentuk CNF dalam waktu polinomial.M(φ)φkψkxxkφφkψk

Sekarang anggaplah kita memiliki ramalan untuk MAJSAT. Query pada formula akan memberitahu kita apakah mayoritas tugas membuat formula ψ k benar, atau ekuivalen, apakah M ( φ ) k . Jadi, untuk mempelajari M ( φ ) , terapkan pencarian biner (mulai dengan k = m / 2 , lalu tambah atau kurangi k sesuai dengan hasil dari oracle). Setelah lg m + 1 iterasi, pencarian biner mengungkapkan nilai M ( φ )ψkψkM(φ)kM(φ)k=m/2klgm+1M(φ). Setiap iterasi membutuhkan satu permintaan ke oracle kami untuk MAJSAT.

DW
sumber