子集合加总问题研究

子集合加总问题可以简化为:

假设有一个整数集合[0,N],有一个负整数M,那么需要证明有一个集合x∩[0,N] == x的情况下,∑y (y 在x集合内) = |M|。

也就是x的子集和,与M的绝对值相等。

简单的算法,复杂度比较高。首先需要一个算法来提取[0,N]的子集。它的非空子集是2n-1个。该算法的时间复杂度也就是O(2n)。

因为算法的时候复杂度与N相关,所以该问题是一个NP问题,且是一个NPC问题。

 

该问题有两种特例

假设y∈[0,N] > |M|,那么就不存在这样的集合。
假设y∈[0,N] == |M|,那么一定存在

而且这种复杂度就会比较小,遍历N个的话,复杂度是O(n).这种特殊的情况,属于NP问题。

posted on 2009-03-19 16:05  yurow  阅读(661)  评论(1编辑  收藏  举报

导航