我希望有人能够向我解释为什么子集乘积问题恰好是NP难题,而子集和问题却是弱NP难题。
子集和:鉴于和,确实存在一个子集使得。
子产品:鉴于和,确实存在一个子集使得。
我一直认为这两个问题是等效的-SS的实例可以通过取幂转换为SP实例,SP的对数可以通过对数转换为SS。这使我得出结论,它们都属于NP-hard的同一类-即它们都是弱NP-hard。
此外,似乎可以使用变化很小的动态编程(用SP中的除法代替SS中的减法)来解决相同的问题。
直到我读完Bernard Moret的“计算理论”第8章(对于那些没有这本书的人来说,它都有通过X3C证明子集产品硬度的证明-一个很强的NP难题)。
我了解这种减少,但无法弄清楚我先前的结论出了什么问题(两个问题相等)。
更新:结果表明子集乘积仅是弱NP完全的(目标乘积在是指数的)。加里(Gary)和约翰逊(Johnson)于1981年在《NP完整性》专栏中发表了这篇论文,但是我想它不如他们先前在书中声称的那样可见。