Bagaimana saya bisa mengurangi Jumlah Subset ke Partisi?

20

Mungkin ini cukup sederhana tetapi saya memiliki beberapa kesulitan untuk mendapatkan pengurangan ini. Saya ingin mengurangi Jumlah Subset ke Partisi tetapi saat ini saya tidak melihat hubungannya!

Apakah mungkin untuk mengurangi masalah ini menggunakan Pengurangan Levin?

Jika Anda tidak mengerti menulis untuk klarifikasi!

dbonadiman
sumber

Jawaban:

19

Misalkan (L,B) adalah turunan dari jumlah subset, di mana L adalah daftar (multiset) angka, dan B adalah jumlah target. Biarkan S=L . Biarkan L menjadi daftar yang dibentuk dengan menambahkan S+B,2SB ke L .

(1) Jika ada sublist ML penjumlahan ke B , maka L dapat dipartisi menjadi dua bagian yang sama: M{2SB} dan LM{S+B} . Memang, bagian pertama berjumlah B+(2SB)=2S , dan yang kedua ke (SB)+(S+B)=2S .

(2) Jika L dapat dibagi menjadi dua bagian yang sama P1,P2 , maka ada subdaftar L menjumlahkan untuk B . Memang, karena (S+B)+(2SB)=3S dan masing-masing bagian berjumlah 2S , kedua elemen tersebut memiliki bagian yang berbeda. Tanpa kehilangan sifat umum, 2SBP1 . Sisa elemen dalam P1 termasuk dalamL dan jumlah untukB .

Yuval Filmus
sumber
2
Tetapi masalah subset-sum standar menggunakan semua bilangan bulat, dan masalah partisi hanya menggunakan bilangan bulat non-negatif ...
gukoff
SUBSET-SUM adalah NP-lengkap bahkan dengan bilangan bulat non-negatif, misalnya pengurangan dari 3SAT berakhir dengan bilangan bulat non-negatif. Juga, mungkin ada pengurangan langsung dari SUBSET-SUM integer ke integer SUBSET-SUM non-negatif.
Yuval Filmus
1
Ya, saya tahu, dan pengurangan ini sangat mudah. Hanya mencatat bahwa itu bukan jumlah bagian dalam bentuk "default". :)
gukoff
Apakah itu juga berfungsi jika AdalahL{B,S-B}? sebagai| {B,S-B}| =B, seperti| L| =BLL{B,SB}|{B,SB}|=B|L|=B
Penasaran
1
@Issam Tidak, ini contoh PARTISI akan selalu memiliki solusi . L,{B,SB}
Yuval Filmus
1

Jawaban yang disebutkan oleh @Yuval Filmus salah (HANYA benar jika tidak ada bilangan bulat negatif). Pertimbangkan multiset berikut:

{5,2,2,2,2,2}

dan jumlah targetnya adalah . Kita tahu bahwa tidak ada himpunan bagian. Sekarang, kami membuat instance untuk masalah partisi. Dua elemen baru yang ditambahkan adalah 2 σ - t = 12 dan σ + t = 3 . Multiset sekarang: { - 5 , 2 , 2 , 2 , 2 , 2 , 3 , 12 } dan jumlah totalnya adalah 2022σt=12σ+t=3

{5,2,2,2,2,2,3,12}
20 .

Masalah partisi memecahkan jawaban memberikan subset Di sini, 2 elemen baru berada di subset yang sama (tidak ada cara lain untuk mempartisi menjadi setengah jumlah). Karenanya, ini adalah contoh balasan. Jawaban yang benar adalah sebagai berikut:

{2,2,2,2,2}

Tambahkan elemen yang nilainya . Jumlah total multiset sekarang 2 t . Selesaikan masalah partisi yang akan memberikan 2 himpunan bagian dari jumlah t . Hanya satu partisi yang akan mengandung elemen baru. Kami memilih partisi lain yang jumlahnya t dan kami telah memecahkan masalah subset dengan menguranginya menjadi masalah partisi. Inilah yang dijelaskan tautan .2tσ2ttt

Rohit Kumar Jena
sumber
1
Tapi, seperti kata Yuval dalam komentarnya, subset jumlah adalah NP- lengkap bahkan jika kita membatasi bilangan bulat positif. Jadi kita dapat berasumsi bahwa tidak ada angka negatif.
David Richerby
1
Ya, saya setuju, jumlah subset adalah NP-complete bahkan dalam kasus bilangan bulat positif. Saya hanya memberikan bukti yang lebih lengkap untuk bilangan bulat apa pun.
Rohit Kumar Jena
1
"Hanya memberikan bukti yang lebih lengkap" dan juga salah mengklaim bahwa jawaban yang ada salah.
David Richerby
1
Ini salah dalam arti bahwa itu tidak berfungsi untuk bilangan bulat negatif. :) Damai :)
Rohit Kumar Jena
1

Berikut ini adalah bukti langsung:

Sangat mudah untuk melihat bahwa SET-PARTITION dapat diverifikasi dalam waktu polinomial; diberi partisi P1,P2 hanya menjumlahkan keduanya dan memverifikasi bahwa jumlah mereka sama satu sama lain, yang jelas merupakan verifikasi waktu polinomial (karena penjumlahan adalah operasi polinomial dan kami hanya melakukan paling banyak |X| banyak penjumlahan).

Inti dari buktinya adalah dalam mengurangi SUBSETSUM menjadi PARTISI; untuk itu diberikan himpunan X dan nilai t (kueri jumlah himpunan bagian) kami membentuk himpunan X=X{s2t} di manas=xXx . Untuk melihat bahwa ini adalah pengurangan:

  • () Menganggap terdapat beberapa SX sehingga t=xSx maka kita akan memiliki bahwa

    st=xS{s2t}x,
    st=xX(S{s2t})x
    dan kita akan memilikiS{s2t} danX(S{s2t}) membentuk partisiX

  • () Misalkan ada partisi P1,P2 dari X sehingga xP1x=xP2x . Perhatikan bahwa menginduksi ini partisi alami P1 dan P2 dari X sehingga WLOG kita memiliki

    s2t+xP1x=xP2x
    s2t+xP1x+xP1x=xP2x+xP1x=s
    s2t+2xP1x=s
    xP1x=t

Maka dari solusi t=xSx kita dapat membentuk parition P1=S{s2t} , P2=X(S{s2t}) dan sebaliknya dari partisi P1,P2 kita dapat membentuk soltuion t=xP1{s2t}xdan karenanya pemetaanf:(X,t)X adalah pengurangan (karena(X,t) adalah dalam bahasa / himpunan SUBSETSUMX=f(X,t) adalah dalam bahasa / set PARTISI) dan jelas untuk melihat bahwa transformasi dilakukan dalam waktu polinomial.

Pedrpan
sumber
0

Jumlah Subset:

Input: {a1, a2, ..., am} st M = {1..m} dan ai adalah bilangan bulat tidak negatif dan S⊆ {1..k} dan Σai (i∈S) = t

Partisi:

Input: {a1, a2, ..., am} dan S⊆ {1, · · ·, m} st Σai (i∈S) = Σaj (j∉S)

Partition Np Proof: jika prover menyediakan partisi (P1, P2) untuk verifier, verifier dapat dengan mudah menghitung jumlah P1 dan P2 dan memeriksa apakah hasilnya 0 dalam waktu linier.

NP_Hard: SubsetSum ≤p PARTITION

Biarkan x menjadi input dari SubsetSum dan x = 〈a1, a2, ..., am, t〉 dan Σai (i dari 1 hingga m) = a

Case1: 2t> = a:

Biarkan f (x) = 〈a1, a2, ..., am, am + 1〉 di mana + 1 = 2t − a

Kami ingin menunjukkan bahwa xSubsetSum ⇔ f (x) ∈PARTISI

jadi ada S⊆ {1, ..., m} st T = {1..m} - S dan Σai (i∈T) = at

dan Biarkan T '= {1 ... m, m + 1} - S so Σaj (j∈T') = a-t + 2t-a = t

yang persis Σai (i∈S) = t dan itu menunjukkan f (x) ∈PARTISI

sekarang Kami juga akan menunjukkan itu f (x) ARTPARTISI ⇔ x∈SubsetSum

jadi ada S⊆ {1, ..., m, m + 1} st T = {1, ..., m, m + 1} - S dan Σai (i∈T) = [a + (2t-a ) -t] = t

dan ini menunjukkan Σai (i∈T) = Σaj (j∈S) jadi m + 1∈T dan S⊆ {1, · · ·, m} dan Σai (i∈S) = t

jadi x∈SubsetSum

Kasus 2: 2t = <a :

kita bisa mengecek sama tetapi kali ini +1 adalah − 2t

Behrooz Tabesh
sumber
-3

tautan ini memiliki deskripsi yang baik tentang reduksi, partisi ke subset-sum dan subset-sum ke partisi. Saya pikir ini lebih jelas daripada jawaban YUVAL . tautan bermanfaat

pengguna44970
sumber
4
Tolong jangan posting jawaban hanya tautan. Jika konten pada tautan berubah atau menjadi tidak tersedia, jawaban Anda akan menjadi tidak berguna. Harap ubah jawaban Anda sehingga sangat berguna, bahkan jika tautan tidak tersedia (misalnya, nyatakan ulang konten dengan kata-kata Anda sendiri dan berikan tautan sebagai referensi dan sumber).
Tom van der Zanden