我正在参加期末考试,过去考试给我们的一个练习题如下:
我的直觉说要将此问题减少到子集总和问题。
我的初步解决方案是:
让' A'是Subset Sum NP-Complete问题。
让' B'是我们试图证明的分区问题是NP完全
' A'采用实例alpha,即:集合S和值' b'
' B'采用实例测试版,即:一组S'和决定的k值
我们希望多边形地将alpha减少到实例beta
我会从alpha中取b,将它放入集合S中以制作S'然后设置k = 0制作 beta等于:S' = S union' b',K = 0
让我们假设' B'可以解决这个问题。因为它可以,它使用由α形成的β产生输出。
因为' B'可以解决这个问题,这意味着' A'可以在多项式时间内解决,但是我们知道这不是真的,因为' A'是NP完全的。我们有矛盾。由于这种矛盾,我们知道' B'至少是“艰难的”#39;作为' A'因此它也是NP完整的。
请告诉我我的解决方案有什么问题或是否有效。
由于
答案 0 :(得分:1)
实际上这个问题(最小化差异)是NP难的。决策版本(不要与决策问题相混淆)是否存在分区的解决方案,以便差异为零,这是一个NP完全问题。
请参阅http://en.wikipedia.org/wiki/Partition_problem
摘自维基页面: 存在分区问题的优化版本,其将多集S分成两个子集S1,S2,使得S1中的元素之和与S2中的元素之和之间的差异最小化。优化版本是NP-hard。