背包伪多项式时间算法

时间:2013-10-13 13:48:47

标签: algorithm knapsack-problem

我正在学习背包(0/1)问题。 该解决方案的运行时间为NW,其中N是项目数,W是允许携带的总重量。

为什么解决方案被称为伪多项式时间算法?

我从(http://www.stanford.edu/class/archive/cs/cs161/cs161.1138/lectures/20/Small20.pdf

中读取了一个参数

该解决方案讨论了写出输入W所需的位 如何写出比特所需的比特(log W)?

1 个答案:

答案 0 :(得分:1)

算法是其输入的中的多项式。然而,以普通方式(例如,基数2)表示的数字的存储大小是log(number),使得算法在输入的 size 中呈指数时间。 O()表示法通常与输入大小有关,而与值无关,因此伪多项式算法不能被视为多项式时间。

这很重要,因为您可以只为两个1KB的数字提供算法,并且需要几千年才能完成。相反,实数多项式时间算法会根据其输入的物理大小进行多项式缩放:例如,计算机可以在几毫秒内乘以1KB的数字。

相关问题