我正在学习背包(0/1)问题。 该解决方案的运行时间为NW,其中N是项目数,W是允许携带的总重量。
为什么解决方案被称为伪多项式时间算法?
我从(http://www.stanford.edu/class/archive/cs/cs161/cs161.1138/lectures/20/Small20.pdf)
中读取了一个参数该解决方案讨论了写出输入W所需的位 如何写出比特所需的比特(log W)?
答案 0 :(得分:1)
算法是其输入的值中的多项式。然而,以普通方式(例如,基数2)表示的数字的存储大小是log(number)
,使得算法在输入的 size 中呈指数时间。 O()表示法通常与输入大小有关,而与值无关,因此伪多项式算法不能被视为多项式时间。
这很重要,因为您可以只为两个1KB的数字提供算法,并且需要几千年才能完成。相反,实数多项式时间算法会根据其输入的物理大小进行多项式缩放:例如,计算机可以在几毫秒内乘以1KB的数字。