版上两篇文章看过了,但有些还是不懂、想确认
我目前理解是这样:
0/1 knapsack problem 复杂度 O(nW)
n是物品数量(阵列有多少个‘’元素‘)
W就是一个数值(input 只会看到一个东西)
但数值跟物品数量都是人的定义,对电脑来说最后都是开了nW的二维阵列,算了nW格的东西。所以其实数值、数量对电脑程式来说没差吧?
所以不太懂要取 m=lgW 然后说复杂度是O(n2^m) 的理由
目前我是这样理解:
因为复杂度理论也是人定义的,所以当初我们要求的input 必须是一个可以数有多少个的东西,以此题来说,input就会真的出现n+1数字(n个价格、1个重量)
W我们没办法说他 size 是1,要找一个会随着W变大而增长的东西当input size,所以取 bit 数当他的size
这边再提一个疑问,如果我是取他有几位数可以吗?(取log 10为底,反正出来的是exponential)