[英]Why is the runtime of Knapsack Problem in terms of n and 2 number of bits of W
由于这篇文章,我最近开始了解伪多项式的含义。 但是,我的一个迫切问题是,为什么背包问题与动态编程一起使用时的运行时间为 并不是
. 其中 n 是考虑用于背包的物品数量,并且
这是编码 W 所需的位数和
是给定 x 位的可能状态(值)的数量。 考虑到时间复杂度的正式定义将问题的大小定义为
问题输入的大小是写出该输入所需的位数。
由于权重的位数不是固定的而是可变的,因此最多有 从 0 到 W 乘以值 n 的所有可能值的总位数或
. 话虽如此,为什么背包与动态编程配对时的运行时间为
并不是
. 我知道
但时间复杂度是指输入的大小为位数。 我做了什么假设,或者我遗漏了什么可以纠正这种脱节的知识。
这是与背包输入大小相关的解释。
因此,总输入大小为 O(lg n + n (lg W +lg V )) = O( n (lg W +lg V ))。
设b = lg W和v = lg V 。 那么输入大小是O( n ( b + v ))。 现在,请注意,在动态规划解决方案 v 的 O( nW ) 运行时间中, v没有明确显示,因此运行时间为 O( nW ) = O( n2^b )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.