Kurangi masalah berikut menjadi SAT

21

Inilah masalahnya. Diberikan , di mana setiap . Apakah ada subset dengan ukuran paling banyak sehingga untuk semua ? Saya mencoba mengurangi masalah ini menjadi SAT. Gagasan saya tentang solusi adalah memiliki variabel untuk masing-masing 1 hingga . Untuk setiap , buat klausa jika . Kemudian dan semua klausa ini bersama. Tapi ini jelas bukan solusi yang lengkap karena tidak mewakili kendala bahwak,n,T1,,TmTi{1,,n}S{1,,n}kSTiixinTi(xi1xik)Ti={i1,,ik}Spaling banyak harus memiliki elemen. Saya tahu bahwa saya harus membuat lebih banyak variabel, tapi saya tidak yakin bagaimana caranya. Jadi saya punya dua pertanyaan:k

  1. Apakah ide saya tentang solusi berada di jalur yang benar?
  2. Bagaimana seharusnya variabel baru dibuat sehingga mereka dapat digunakan untuk mewakili kardinalitas kendala?k
Aden Dong
sumber
5
Hanya komentar: Masalah Anda dikenal sebagai HITTING SET , yang merupakan formulasi setara dari masalah SET COVER .
A.Schulz

Jawaban:

13

Sepertinya Anda mencoba menghitung transversal hypergraph dengan ukuran . Artinya, { T 1 , ... , T m } adalah Anda hipergraf, dan S adalah Anda transversal. Terjemahan standar adalah untuk mengekspresikan klausa seperti yang Anda miliki, dan kemudian menerjemahkan batasan panjang menjadi kendala kardinalitas.k{T1,,Tm}S

Jadi gunakan encoding yang ada, yaitu, dan kemudian menambahkan klausul encoding Σ 1 i n x ik .1jmiTjxi1inxik

adalah kendala kardinalitas. Ada berbagai terjemahan kendala kardinalitas yang berbeda ke dalam SAT.1inxik

Terjemahan kendala kardinalitas yang paling sederhana namun agak besar hanyalah . Dengan cara ini setiap disjungsi mewakili kendala ¬ i X x i - untuk semua himpunan bagian X dari { 1 , , n }X{1,,n},|X|=k+1iX¬xi¬iXxiX{1,,n}ukuran k + 1. Yaitu, kami memastikan bahwa tidak ada cara lebih dari variabel k dapat diatur. Perhatikan bahwa ini bukan ukuran polinomial dalam k

Beberapa tautan ke makalah tentang terjemahan kendala kardinalitas yang lebih hemat ruang yang berukuran polinomial dalam k :

Jika Anda benar-benar tertarik untuk memecahkan masalah seperti itu, mungkin lebih baik memformulasikannya sebagai masalah pseudo-boolean (lihat artikel wiki tentang masalah pseudo-boolean ) dan menggunakan pemecah pseudo-boolean (lihat kompetisi pseudo-boolean ). Dengan cara itu kendala kardinalitas hanyalah kendala pseudo-boolean dan merupakan bagian dari bahasa - semoga pemecah pseudo-boolean kemudian menanganinya secara langsung dan karenanya lebih efisien.

MGwynne
sumber
1
Tolong jelaskan semua tautan segera (setidaknya penulis dan judul) sehingga orang dapat menemukan dokumen yang harus diputus tautannya. Mungkin terbaik untuk menggunakan DOI jika tersedia.
Raphael
1
@Raphael Poin bagus! Maaf saya harus melakukan itu sejak awal. Sekarang saya telah memperbarui semua tautan; Saya tidak yakin apakah Springer menyediakan DOI tetapi harus ada cukup informasi sekarang untuk menemukan mereka jika tautan rusak. Catatan: Saya tidak menautkan ke PDF resmi dari Springer untuk menghindari masalah akses.
MGwynne
Tetapi sepertinya pengurangan yang Anda berikan tidak dalam waktu polinomial, bukan?
Aden Dong
@ AdenDong Anda tidak mengatakan apa-apa tentang polinomial;). Terjemahan kendala kardinalitas sederhana yang saya sebutkan bukan polinomial dalam (tetapi untuk k tetap ). Terjemahan kendala kardinalitas yang diberikan dalam makalah I daftar adalah polinomial dalam k - menggunakan variabel baru. Saya telah memperbarui jawaban saya untuk membuatnya lebih jelas. kkk
MGwynne
MGwynne, saya cenderung selalu menautkan DOI resmi bahkan jika paywalled untuk menjadi bukti masa depan, dan versi gratis juga. Tetapi seperti sekarang, siapa pun harus dapat menemukan surat-surat itu, jadi semuanya baik-baik saja.
Raphael
6

k

Γ2,1+Γ2,1+

Saya berasumsi Anda sedang mencari pengurangan eksplisit, tetapi jika tidak, Anda selalu bisa kembali ke Teorema Cook-Levin .

Luke Mathieson
sumber