子集总和的NP完全约简

时间:2014-12-08 06:24:17

标签: algorithm reduce reduction np-complete subset-sum

我正在参加期末考试,过去考试给我们的一个练习题如下:

Practice Problem

我的直觉说要将此问题减少到子集总和问题。

我的初步解决方案是:

让' 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完整的。

请告诉我我的解决方案有什么问题或是否有效。

由于

1 个答案:

答案 0 :(得分:1)

实际上这个问题(最小化差异)是NP难的。决策版本(不要与决策问题相混淆)是否存在分区的解决方案,以便差异为零,这是一个NP完全问题。

请参阅http://en.wikipedia.org/wiki/Partition_problem

摘自维基页面: 存在分区问题的优化版本,其将多集S分成两个子集S1,S2,使得S1中的元素之和与S2中的元素之和之间的差异最小化。优化版本是NP-hard。