子集合加总问题研究
子集合加总问题可以简化为:
假设有一个整数集合[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问题。