从PARTITION到SUBSET SUM的Karp减少

时间:2017-02-06 08:59:57

标签: complexity-theory np-complete

PARTITION:给定一组正整数A = {a_1,...,a_n}是否存在A的子集,其总和等于其补码的总和?

SUBSET SUM:给定一组正整数A = {a_1,...,a_n}和另一个正整数B,是否存在A的子集,使得它的和等于B?

我试图证明如果PARTITION是NP-complete,那么SUBSET SUM也是NP完全的,通过将PART减少到SSUM。

我的解决方案是:让A = {a1,...,an}是一组正整数。然后,如果A输入PART时给出解I = {k1,...,km}(其中k_i是解子集成员的索引),那么我们构造A'= {a1,... an, S}其中S是{a_k1,a_k2,...,a_km}的总和。 A'是SSUM的解决方案。

我的问题是,这只是一种方式,这意味着我们无法证明给定A',那么A是PART的解决方案。这是一个问题吗?我怎么能修改证据来掩盖呢?

1 个答案:

答案 0 :(得分:3)

SubsetSum的分区实际上比你在这里做的更容易。

如果分区满足意味着有一些子集P1和P2使得sum(P1)= sum(P2)正确吗?因为sum(P1)+ sum(P2)= Sum(A),这意味着sum(P1)= sum(P2)=(1/2)sum(A)

我们甚至不需要为子集和构造A'。只需设置A'= A和目标和=(1/2)总和(A)。应该很清楚,这与分区完全相同,几乎没有抽象。

换句话说,Partion总是只是子集和,其中目标sum =(1/2)sum(A)