演算法 動態規劃解決0 1揹包的三個疑惑及思路

2021-08-28 09:07:10 字數 2252 閱讀 8917

描述: 給定 n 種商品,每種商品有對應的重量weight和價值value,乙個容量為 maxweight 的揹包,問:應該如何選擇裝入揹包的商品,使得裝入揹包中的商品的總價值最大?

過程

a) 把揹包問題抽象化(x1,x2,…,xn,其中 xi 取0或1,表示第 i 個商品選或不選),vi表示第 i 個商品的價值,wi表示第 i 個商品的體積(重量);

b) 建立模型,即求max(v1x1+v2x2+…+vnxn);

c) 約束條件,w1x1+w2x2+…+wnxnd) 定義v(i,j):當前揹包容量 j,前 i 個商品最佳組合對應的價值;

案例:number=4,capacity=8

i

1

2

3

4

w(體積)

v(價值)

第乙個疑惑(solved):

既然j表示容量,為什麼在大多數文章中,j=1,2,3,...n,而不是與重量有關的數列?

答:分解為小問題後,就變成了更小容量的問題,所以j由小到大地生長,看能放商品情況。這裡沒毛病。

尋找遞推關係式,面對當前商品有兩種可能性:

第一,包的容量比該商品體積小,裝不下,此時的價值與前i-1個的價值是一樣的,即v(i,j)=v(i-1,j);

第二,還有足夠的容量可以裝該商品,但裝了也不一定達到當前最優價值,所以在裝與不裝之間選擇最優的乙個,即v(i,j)=max{ v(i-1,j),v(i-1,j-w(i))+v(i) }

其中v(i-1,j)表示不裝,v(i-1,j-w(i))+v(i) 表示裝了第i個商品,揹包容量減少w(i)但價值增加了v(i);

由此可以得出遞推關係式:

1)j2)j>=w(i)v(i,j)=maxv(i-1,j)v(i-1,j-w(i))+v(i)

第二個疑惑(solved):

為什麼會出現v(i-1,j-w(i)),尤其是其中的j-w(i)。

因為為了表示這個商品裝進揹包裡了,即:揹包容量變小了。

如果物品重量為小數,那麼尋優過程中的「j-w(i)

就要找不大於j的最大整數。

3. 找出解的具體形式

經過遞推關係式,可以得到一張類似如下的圖表

第三個疑惑(solved):

如何從圖中找出最終的揹包商品?

答:**填完,要根據最優解回溯找出解的組成。尋解方式如下:

1) v(i,j)=v(i-1,j)時,說明沒有選擇第i 個商品,則回到v(i-1,j);(備註:豎著的兩個值相等,沒選商品i —> 跳到i-1)

2) v(i,j)=v(i-1,j-w(i))+v(i)時,說明裝了第i個商品,該商品是最優解組成的一部分,隨後我們得回到裝該商品之前,即回到v(i-1,j-w(i));(備註:豎著兩個值不等,選了商品i —> 按重量跳到不裝商品i的那個j的位置)

3) 一直遍歷到i=0結束為止,所有解的組成都會找到。

舉例說明:

1) 最優解為v(4,8)=10,而v(4,8)!=v(3,8)卻有v(4,8)=v(3,8-w(4))+v(4)=v(3,3)+6=4+6=10,所以第4件商品被選中,並且回到v(3,8-w(4))=v(3,3);

2) 有v(3,3)=v(2,3)=4,所以第3件商品沒被選擇,回到v(2,3);

3) 而v(2,3)!=v(1,3)卻有v(2,3)=v(1,3-w(2))+v(2)=v(1,0)+4=0+4=4,所以第2件商品被選中,並且回到v(1,3-w(2))=v(1,0);

4) 有v(1,0)=v(0,0)=0,所以第1件商品沒被選擇;

01揹包 動態規劃(三)

測試資料 int n 5 物品個數 int m 20 揹包容量 int weight new int 物品重量 int value new int 物品價值 1.遞迴版本 private static int knapsack int n,int m,int w,int v else if m w ...

動態規劃解決01揹包問題

0 1揹包 動態規劃 問題描述 給定n種物品和一揹包。物品i的重量是wi,其價值是vi,揹包的容量為c。問應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大?問題分析 對於一種問題,要麼裝入揹包,要麼不裝。所以對於一種物品的裝入狀態可以取0和1。eg 物品個數n 5,物品重量w n 物品價值v...

動態規劃解決0 1揹包問題

把揹包問題抽象化 x1,x2,xn,其中 xi 取0或1,表示第 i 個物品選或不選 vi表示第 i個物品的價值,wi表示第 i 個物品的體積 重量 建立模型,即求max v1x1 v2x2 vnxn 約束條件,w1x1 w2x2 wnxn定義v i,j 當前揹包容量 j,前 i 個物品最佳組合對應...