Algorithm 为什么使用动态规划的0/1背包不是多项式时间算法
我很难理解为什么使用动态规划的0/1背包不是多项式时间可解的。这里也有人问过类似的问题。有人给出了解释,但我仍然不明白为什么我们要考虑权重输入的二进制表示。那个么n呢,若用二进制表示,我能说它和项数成指数关系吗?类似地,对于任何其他多项式时间算法,我可以声称它们具有指数时间复杂度,因为在计算机中,每个输入都用二进制数字表示。我知道我错了。有人能用简单易懂的方式指出原因吗?提前感谢。一种非常简单的方法是,如果将限制加倍,则输入的大小只增加一位(因为限制是输入的一部分),而运行时间则增加一倍。这显然是相对于输入大小的指数行为Algorithm 为什么使用动态规划的0/1背包不是多项式时间算法,algorithm,big-o,time-complexity,Algorithm,Big O,Time Complexity,我很难理解为什么使用动态规划的0/1背包不是多项式时间可解的。这里也有人问过类似的问题。有人给出了解释,但我仍然不明白为什么我们要考虑权重输入的二进制表示。那个么n呢,若用二进制表示,我能说它和项数成指数关系吗?类似地,对于任何其他多项式时间算法,我可以声称它们具有指数时间复杂度,因为在计算机中,每个输入都用二进制数字表示。我知道我错了。有人能用简单易懂的方式指出原因吗?提前感谢。一种非常简单的方法是,如果将限制加倍,则输入的大小只增加一位(因为限制是输入的一部分),而运行时间则增加一倍。这显然
然而,虽然项目数量翻倍也会使运行时间翻倍,但它也会使输入项目的大小翻倍,因此输入大小和运行时间之间的部分关系只是线性的。鉴于背包问题与以下输入有关:n个项目值vi、n个权重wi和容量K值(由K位表示),我们有:
W
是用二进制编码表示的。如果用一元编码表示,那就是多项式。