证明数字问题的NP完备性时数基的影响

时间:2011-12-11 08:48:00

标签: np-complete subset-sum

我正在从tardos的算法设计书中读到关于NP完整性的内容,在证明子集和是NP完全的部分,写的是 -
为子集求和开发的算法具有O(nW)的运行时间。如果给出100个数字的实例,每个数字为100位长,则输入仅为100 * 100 = 10000位,但W大约为2 ^ 100。 我不明白这个说法,为什么W 2 ^ 100?什么是基于这个问题的影响,我的意思是如果我们将它改为其他基数x,W是x ^ 100?如果我们把它变成一元基础怎么办? 感谢。

1 个答案:

答案 0 :(得分:0)

要理解这一点,您需要考虑算法的运行时间如何随着问题集中数字的大小的增加而变化。我假设您的教科书描述了对子集和的常见动态编程攻击。该算法的运行时间随着问题集的宽度线性增长。 (问题集宽度是集合中正数与负数之和的总和。)当您增加集合中数字的 size 时,此宽度呈指数增长。 例如,如果使用101位数而不是100位数,则问题集的宽度加倍。移至102位数,问题集宽度再次翻倍。由于算法的运行时间随问题集宽度线性增长,因此运行时间也会增加一倍。随着输入大小线性增长,这种倍增是运行时间的指数增长,因此这不是多项式时间算法。

如果数字是用不同的基数写的> 1,然后是的,你会看到该基数中问题宽度的指数增长。例如,在基数10中添加另一个数字会使问题宽度增大十倍。如果你切换到一元,你会失去问题集大小的指数增长,但是对于任何给定问题,输入大小比指数大小的指数大得多吗? 1,所以你什么也得不到。