Di sini saya menunjukkan bahwa masalahnya adalah NP-complete.
Kami mengonversi CNF ke instance masalah Anda sebagai berikut. Misalkan variabel CNF adalah dan klausa adalah , di mana . Misalkan mana semua set dalam gabungan sepenuhnya terpisah. Faktanya, dan , sedangkan adalah kumpulan kardinalitas . Juga tunjukkan dan perbaiki untuk setiap keluarga yang bertambah panjang di dalamnya, dilambangkan dengan untukx i m C j n < m U = ∪ i ( A i ∪ B i ∪ Z i ) A i = { a i , j ∣ x i ∈ C j } ∪ { a i , 0 } B i = { b i , j ∣ x i ∈ C j } ∪n xsayam Cjn < mU=∪i(Ai∪Bi∪Zi)Ai={ai,j∣xi∈Cj}∪{ai,0}Z i k = 2 n + 1 Z = ∪ i Z i Z i k Z i , l l = 1 .. k x i 2 k F A i ∪ Z i , l B i ∪ Z i , l C j F Z x i ∈ C j { aBi={bi,j∣xi∈Cj}∪{bi,0}Zik=2n+1Z=∪iZiZikZi,ll=1..k . Untuk setiap variabel , kami menambahkan set ke , setiap set formulir dan . Untuk setiap klausa , kami menambahkan satu set ke , yang berisi , dan untuk setiap elemen dan untuk setiap elemen .xi2kFAi∪Zi,lBi∪Zi,lCjFZxi∈Cj ˉ x i ∈ C j { b i , j }{ai,j}x¯i∈Cj{bi,j}
Misalkan rumusnya memuaskan dan memperbaiki tugas yang memuaskan. Kemudian pilih set dari formulir atau , tergantung pada apakah benar atau tidak. Ini adalah set inkremental . Sekarang tambahkan set sesuai dengan klausa. Ini juga terus meningkatkan ukuran, karena klausa tersebut memuaskan. Akhirnya, kita bahkan dapat menambahkan set lebih (satu untuk setiap variabel) untuk membuat penutup urutan .A i ∪ Z i , l B i ∪ Z i , l x i n k m k UkAi∪Zi,lBi∪Zi,lxinkmkU
Sekarang anggaplah bahwa set diletakkan dalam urutan tambahan. Perhatikan bahwa paling banyak set yang sesuai dengan dapat dipilih untuk setiap . Jadi, jika tidak ada set klausa dalam urutan inkremental, paling banyak dapat dipilih, yang terlalu sedikit. Perhatikan bahwa segera setelah set klausa dipilih, kita dapat memilih paling banyak dua set yang sesuai dengan masing-masing , total paling banyak set . Oleh karena itu, kita harus memilih setidaknya set variabel sebelum set klausa diambil. Tetapi karena kita dapat memilih paling banyak untuk setiap , ini berarti bahwa untuk masing-masing kita telah memilih setidaknyak + 1 x i x i n ( k + 1 ) x i 2 n n ( k - 1 ) k + 1 x i 1 k = 2 n + 1n(k+1)+mk+1xixin(k+1)xi2nn(k−1)k+1xi1 , seperti . Ini menentukan "nilai" dari variabel, sehingga kita hanya dapat memilih klausa "benar".k=2n+1
Pembaruan: Mengubah nilai dari menjadi seperti yang ditunjukkan oleh Marzio.n 2 n + 1kn2n+1