[讨论] 0-1 knapsack

楼主: Nien1027 (随便)   2012-06-09 21:46:48
就是作业四的某一题,他问说
一个复杂度为 O(nW) 的 0-1 knapsack 的算法是否为 polynomial time
我一开始的理解是,因为 W 和 n 并没有一定关系,所以不能确定它是否为polynomial
time
但在询问了某位上学期修过算法的强者之后,我大概了解题目想干嘛了~
就是在判断一个复杂度对 input 的大小为何种关系的时候,要有个比较的基准
比如说 merge sort ,复杂度 O(n lg n) ,比较的基准就是被排序的阵列大小 n
但是 n 和 W 之间没有特定的关系,没办法就 nW 来判断它是哪一种函数关系
因此要取它们共同的基准─ bit 的长度,来决定这个函数
首先 n 就是 item 数目的大小, n 个东西就 n 个 bit ( 1 或 0 代表拿或不拿),所以
是线性的
至于 W ,是背包的大小,用 bit 来表示的话是一个二进制的数字
所以当 bit 长度变为 2 倍时, W 其实是变成 W^2 ,是指数关系
所以 nW 不是 polynomial time
如果有什么错的话还请不吝指教,谢谢!
作者: globaltruth (普世价值)   2012-06-09 22:23:00
题目貌似是问说是否为polynomial time
作者: anfranion (南‧生命的意義是經歷)   2012-06-09 23:07:00
其实上面把linear time改成polynomial time也可XD
楼主: Nien1027 (随便)   2012-06-09 23:08:00
抱歉一时打错了,谢谢提醒!
作者: anfranion (南‧生命的意義是經歷)   2012-06-10 10:50:00
推原PO分享:D

Links booklink

Contact Us: admin [ a t ] ucptt.com