關於完全揹包問題用二進位制優化的可行性證明

2021-06-07 01:17:42 字數 457 閱讀 2968

完全揹包用 二進位制 優化 的可行性怎麼證明。

問題簡化一下:

10個1

它可行的組合數 是1至10

將10 分解為 1 + 2 + 4 +3

怎麼證明用 1 2 3 4  同樣可以組合為 1至10 這十個數呢?

在二進位制優化的時候相當於分成了兩部分,一部分是1、2、4、這樣是2的冪,不妨記作一共有n個,還有乙個是剩餘的部分不妨記作x。

接著我們考慮對於構造體積為v的物體。

首先如果v大於本身的總體積,那麼就不必考慮了,即便不優化成二進位制也肯定構造不出來。

接著假設v能用前面n個二進位制位表示出來的話,必然就能構造出來,也就是說v小於等於某個值(這n個數(2的冪)的和)時一定可以用n個二進位制位表示出來。

再接著考慮不能這n個二進位制位表示的情況,那麼v減去剩餘的那個部分x之後,v-x就必然在n個二進位制位的表示範圍之內了。

這樣,就完成證明了。

用二進位制優化多重揹包問題

多重揹包是這樣的乙個問題 有n種物品,第i種物品的體積為ci,價值是wi,但是每種物品的數量都是有限的,為ni。現在有容量為v的揹包,請你放入若干物品,使獲得的價值盡量大。樸素演算法 把n種物品逐個拆分,得到 ni個物品,則原問題可轉化為01揹包求解。這樣做的時間複雜度為o v n 或者是在列舉種類...

混合揹包問題(01 完全 多重揹包二進位制優化)

題意 給n件物品和乙個容積為v的揹包,有些物品只可以拿一次,有些物品可以無限拿,有些物品可拿規定的次數,問你在揹包容量內,可獲得最大的價值是多少。思路 把不同的物品種類分開處理即可。注意多重揹包應該使用二進位制優化與01揹包視為同類處理,否則tle include using namespace s...

揹包問題 (二進位制優化模版)

51 nod 有n種物品,每種物品的數量為c1,c2 cn。從中任選若干件放在容量為w的揹包裡,每種物品的體積為w1,w2 wn wi為整數 與之相對應的價值為p1,p2 pn pi為整數 求揹包能夠容納的最大價值。input 第1行,2個整數,n和w中間用空格隔開。n為物品的種類,w為揹包的容量。...