Algorithm 背包伪多项式时间算法

Algorithm 背包伪多项式时间算法,algorithm,knapsack-problem,Algorithm,Knapsack Problem,我正在学习背包(0/1)问题。 该解决方案的运行时间为NW,其中N为物品数量,W为允许携带的总重量 那么为什么解被称为伪多项式时间算法呢 我从()中读到一个论点 该解决方案涉及写入输入W所需的位 写出位(logw)需要多少位?算法的输入值是多项式的。然而,以普通方式(例如,基数2)表示的数字的存储大小是log(number),使得算法在输入大小中的时间成指数。O()表示法通常与输入大小有关,而不是与值有关,因此伪多项式算法不能被视为多项式时间 这很重要,因为你只需要输入两个1KB的数字就可以完成

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

那么为什么解被称为伪多项式时间算法呢

我从()中读到一个论点

该解决方案涉及写入输入W所需的位
写出位(logw)需要多少位?

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

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