Saya berharap bahwa seseorang mungkin dapat menjelaskan kepada saya mengapa masalah subset produk sangat NP-hard sedangkan masalah subset sum lemah NP-hard.
Subset Sum: Mengingat dan T , tidak terdapat subset X ' sehingga Σ i ∈ X ' x i = T .
Subset Produk: Mengingat dan T , tidak terdapat subset X ' sehingga Π i ∈ X ' x i = T .
Saya selalu berpikir dua masalah itu setara - sebuah instance dari SS dapat ditransformasikan ke sebuah instance dari SP melalui eksponensial dan sebuah instance dari SP ke SS melalui logaritma. Ini membuat saya menyimpulkan bahwa mereka berdua termasuk dalam kelas NP-hard yang sama - yaitu, mereka keduanya NP-hard lemah.
Lebih lanjut, tampak bahwa perulangan yang sama dapat digunakan untuk menyelesaikan kedua masalah menggunakan pemrograman dinamis dengan perubahan yang sangat kecil (mengganti pengurangan dalam SS dengan divisi di SP).
Itu sampai saya membaca bab 8 "Theory of Computation" oleh Bernard Moret (bagi mereka yang tidak memiliki buku, ia memiliki bukti kekerasan produk subset melalui X3C - masalah yang sangat sulit NP).
Saya memahami pengurangan, tetapi tidak dapat menemukan apa yang salah dengan kesimpulan saya sebelumnya (ekuivalen dari dua masalah).
UPDATE : Ternyata produk subset hanya NP-complete lemah (produk target eksponensial dalam ). Gary dan Johnson menerbitkan ini di kolom NP-completeness mereka pada tahun 1981 , tapi saya kira itu kurang terlihat daripada klaim mereka sebelumnya dalam buku mereka.
Jawaban:
Mengenai masalah kesetaraan Jumlah Subset dan Produk Subset Ada teknis tentang Subset Produk. Produk x's = T sebenarnya Psuedopolinomial jika T tidak eksponensial! Jadi bukti Subset Produk menjadi NP Hard tidak (karena alasan teknis !!!) cukup benar!
Namun diberi janji bahwa T Besar, maka pengurangan via Logaritma ke Subset Sum memberikan SUM SUBSET NON STANDAR yang melebihi real! Ini berarti bahwa algoritma Psuedopolynomial untuk Subset Jumlah Tidak berlaku! Meskipun Logaritma kecil, tempat desimal mengacaukan Pemrograman Dinamis Psuedopolinomial!
saya harap ini membantu
Zelah
sumber
Pertama, menggunakan eksponensial untuk beralih dari karya SS ke SP (menggunakan basis 2 daripada basis ), tetapi meledakkan ukuran angka yang terlibat. Kekerasan NP yang lemah berarti bahwa jika jumlahnya kecil (atau lebih tepatnya, dinyatakan dalam unary), masalahnya tidak lagi sulit. Oleh karena itu, menggunakan eksponensial membuat instance SP berukuran eksponensial bahkan untuk instance SS yang mudah, di mana angkanya ditulis dalam unary.e
Kedua, menggunakan logaritma untuk beralih dari SP ke SS tidak berfungsi, karena logaritma biasanya menghasilkan nilai non-integer. SS dan SP didefinisikan menggunakan angka integer, dan logaritma sering menghasilkan nilai transendental, yang sulit untuk diwakili atau dilakukan perhitungan matematika.
Biarkan menjadi bilangan bulat, A > 0 , lalu log 2 A adalah rasional jika dan hanya jika A adalah kekuatan 2, dan sebaliknya transendental. Pertama, jika log 2 A = pA A>0 log2A A untuk bilangan bulat bukan nolpdanq, makaA=2 plog2A=pq p q ,Aq=2p. Karena itu kami memilikiA=2rdengan dekomposisi prima. SelanjutnyaArq=2p, jadi dengan diberiAkita dapat memilihq=1danp=runtuk membuktikanlog2Aadalah rasional.A=2pq Aq=2p A=2r Arq=2p A q=1 p=r log2A
Kita hanya perlu menunjukkan bahwa tidak pernah transendental. Ini mengikuti dari teorema Gelfond-Schneider , untuk formulasi yang setara (seperti dapat ditemukan pada halaman Wiki) adalah "jika α dan γ adalah bilangan aljabar bukan nol, dan kami mengambil logaritma bukan-nol dari α , lalu ( log γ ) / ( log α ) = log α γ bisa rasional atau transendental. " Juga mudah untuk memverifikasi dengan mengambil kebalikan dari teorema dan mengatur α β = γ dan karenanya βlog2A α γ α (logγ)/(logα)=logαγ αβ=γ β=logαγ .
Lastly, consider what happens when we try the dynamic programming algorithm from SS on SP. Because we use products rather than sums, the numbers involved blow up enormously, and the arbitrary precision math required suddenly becomes a factor in the running time. This is why the algorithm cannot solve SP instances quickly even if the numbers are in unary.
sumber
The literal explanation is that Subset Product problem is NP-complete by a reduction from strongly NP-complete problem such as exact cover by 3-sets. In such "strong" reduction, the input integers are bounded by some polynomial function in the number of integers in the resulting instance of Subset Product problem.
Such a "strong" reduction is impossible from any strongly NP-complete problem to Subset Sum Problem unlessP=NP . We have polynomial-time dynamic programming algorithm for solving Subset Sum problem if input integers are bounded by a polynomial.
sumber