我很难理解为什么使用动态规划的0/1背包问题不是多项式时间可解的。类似的问题已经在这里提出了。 为什么背包问题是伪多项式? 有人给出了解释,但我仍然不明白为什么我们应该考虑将重量输入表示为二进制。如果考虑n的二进制表示,那么它是否可以说是与物品数量呈指数关系?同样地,对于任何其他多项式时间算法,我都可以声称它们具有指数时间复杂度,因为计算机中的每个输入都用二进制数字表示。我知道我错了。有人能以易于理解的方式指出为什么吗?谢谢。
我很难理解为什么使用动态规划的0/1背包问题不是多项式时间可解的。类似的问题已经在这里提出了。 为什么背包问题是伪多项式? 有人给出了解释,但我仍然不明白为什么我们应该考虑将重量输入表示为二进制。如果考虑n的二进制表示,那么它是否可以说是与物品数量呈指数关系?同样地,对于任何其他多项式时间算法,我都可以声称它们具有指数时间复杂度,因为计算机中的每个输入都用二进制数字表示。我知道我错了。有人能以易于理解的方式指出为什么吗?谢谢。
一个非常简单的思考方式是,如果你将限制加倍,输入的大小只会增加一位(因为限制是输入的一部分),而运行时间会加倍。这显然是与输入大小呈指数关系的行为。
然而,尽管加倍了项目数量也会使运行时间加倍,但它也会使输入项的大小加倍,因此输入大小和运行时间之间的这部分关系只是线性的。
W
是用二进制编码表示的。如果它是用一元编码表示的话,那么它将是多项式。 - amit