Itu masih NP -lengkap, bahkan untuk k=2 . Diberikan contoh jumlah himpunan bagian, kita dapat mengubahnya ke varian ini dengan memisahkan angka-angka dan menambahkan beberapa bit tambahan.
Pertama, jumlah semua angka dalam masalah akan kurang dari 2m untuk beberapa nilai m .
Sekarang, mari kita ambil angka dari masalah awal yang memiliki bit set. Kami akan membagi angka ini menjadi angka dengan set tepat 2 bit sehingga jumlah angka-angka itu adalah . Kita dapat melakukan ini secara rekursif, dengan menemukan nomor yang meringkas hingga bit ditambah dan nomor yang jumlah hingga bit terakhir ditambah .k k n + 2 k + m ⌈ k ⌉ ⌈ k ⌉ 2 k + m - 1 ⌊ k ⌋ ⌊ k ⌋ 2 k + m - 1nkkn+2k+m⌈k⌉⌈k⌉2k+m−1⌊k⌋⌊k⌋2k+m−1
Selain nomor itu, kami juga akan menambahkan angka ke masalahnya. Suatu solusi harus mengandung angka ini atau semua angka dibangun sebelumnya. Jika nilai target asli adalah , nilai target baru adalah . k t t + 2 k + m2k+mktt+2k+m
Jika masalah awal memiliki lebih dari satu angka, kita dapat mengulangi proses ini dengan mengambil untuk nilai baru .mk+m+1m
Hanya ada dua cara bit pada posisi dapat diatur: jawabannya dapat berisi angka atau semua angka yang berjumlah . Jadi kami telah mengurangi jumlah subset ke varian jumlah subset Anda.2 k + mk+m2k+mn + 2 k + mkn+2k+m
Sebagai contoh, mari kita ambil dengan nilai target . Masalah ini dapat dikodekan sebagai varian jumlah subset yang disajikan di sini dengan mengambil nomor biner berikut: 7{2,3,5}7
2 dipetakan ke dan . (Menggunakan bit ekstra tidak sepenuhnya diperlukan di sini.)0000 10100 10000 1
3 dipetakan ke dan0000 00 011000 00 1,0100 00 10000 00 01
5 dipetakan ke dan .1000 00 000 1,0010 00 000 10000 00 000 01
Nilai target baru akan menjadi .1110 10 010 01
Jika masalah asli direpresentasikan dengan bit, maka masalah yang ditransformasi memiliki paling banyak bit. Masalah aslinya akan memiliki paling banyak angka masing-masing dengan paling banyak bit, jadi jumlah semuanya juga O (n). Masalah yang ditransformasikan akan memiliki angka (karena setiap nomor bit dibagi menjadi bit, dengan panjangnya paling banyak karena kami menggunakan bit tambahan untuk setiap angka. Jadi ukuran total dari masalah yang ditransformasikan adalah bit.O ( n 4 ) O ( n ) O ( n ) O ( n 2 ) n n + 1 2 O ( n 2 ) n O ( n 4 )nO(n4)O(n)O(n)O(n2)nn+1 2O(n2)nO(n4)