動態規劃法 0 1揹包問題 二

2021-07-02 14:35:24 字數 1696 閱讀 9893

假如我們用c表示最大價值,那麼c[n,w]就表示n個物品,在揹包容量為w時,揹包的最大價值。

在求這個最大價值之前,我們可能會考慮某一子問題的最大價值,用c[i,w]表示,意思是該子問題中,有i個物品,揹包的最大容量為w時的最大價值。

現在,結合具體問題來說明。

物品編號12

345重量

3478

9價值45

1011

13

舉個例子說明。現在揹包容量為4,所以要求的問題就是c[5,4],現在我假如要考慮物品4是不是進揹包,發現w4>4,屬於第二種情況,所以我們求解的問題轉化成c[5-1,4](c[4,4])的問題,這裡可以看出來,i和wi是不一樣的。我們書上一樣是因為,每次都按5,4,3,2,1的順序考慮。接著我們考慮物品5,那麼w5>w,所以問題由剛才的c[4,4]變成了c[4-1,4]的問題(c[3,4])。同理,當你考慮物品3的時候,也是這樣。

更直接地說,因為當揹包容量為5時,因為就兩個可選的物品,物品1和物品2,所以我們要求解的問題c[5,4]就可以轉化成c第三種情況的[2,4]的問題,這時如果我們先考慮1在不在揹包裡,就是c[2-1,4-3]+4和c[2-1,4]即c[1,1]+4和c[1,4]。然後在分別對兩種情況下的子問題,考慮物品2在揹包裡。對於c[1,1]這個子問題,物品4放不進去,該子問題就轉換成c[0,1]這個子問題,這個子問題可以直接算出解為0;對於c[1,4]這個子問題,物品2在不在揹包裡面就是c[0,0]+5和c[0,4]。

c[5,4]->c[4,4]->c[3,4]->c[2,4]->max(c[1,1]+4,c[1,4])

按上述順序求解,如圖所示:

現在來解決揹包容量為17的問題,從揹包容量為0的時候開始考慮。見下面4張表:

表1表示在揹包容量為某個值時,可選項和不可選項。

表2表示按物品單位價值比由高到低的順序考慮問題的最優解。

表3表示按物品重量由大到小的順序考慮。

表4表示按物品單位價值比由低到高的順序考慮。

在上述問題中,我們可以發現,當揹包容量為0時,問題屬於情況1;容量為1-8時,問題最初屬於情況2;容量為9-17時,問題最初屬於情況3。而且,通過三個**的對比,我們發現問題的最優解和我們按何種順序考慮是沒有關係的,最終求得的最優解和最大價值都是一樣的。

0 1揹包問題 動態規劃法

問題描述 給定n種物品和一揹包。物品i的重量是w i 其價值為v i 揹包的容量為c。問應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大?分析 對於一種物品,要麼裝入揹包,要麼不裝。所以對於一種物品的裝入狀態可以取0和1。設物品i的裝入狀態為xi,xi 0,1 此問題稱為0 1揹包問題。資料...

0 1揹包問題 動態規劃法

問題描述 給定n種物品和一揹包。物品i的重量是w i 其價值為v i 揹包的容量為c。問應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大?分析 對於一種物品,要麼裝入揹包,要麼不裝。所以對於一種物品的裝入狀態可以取0和1。設物品i的裝入狀態為xi,xi 0,1 此問題稱為0 1揹包問題。資料...

動態規劃法 01揹包問題

一 幾個概念 最優化問題 有 n個輸入。它的解由這 n個輸入的乙個子集組成,這個子集必須滿足某些事先給定的條件。這些條件稱為約束條件。滿足約束條件的解稱為問題的可行解。滿足約束條件的可行解可能不止乙個,為了衡量這些可行解的優劣,事先給出一定的標準,這些標準通常以函式的形式給出。這些標準函式稱為目標函...