01揹包動態規劃兩種解決方案的比較

2021-12-25 18:33:22 字數 675 閱讀 3009

else//當前物品不裝入包,當前包容量下的最大價值仍然是原來的價值

nvaluetable[i][j]=nvaluetable[i-1][j];

} else//包容量不足以裝入當前物品時,沿用原來的包容量最大價值

nvaluetable[i][j]=nvaluetable[i-1][j];

} cout<<"最大值為:"< return nvaluetable[nres][ntotlew];

}; 方式二:採用遞迴方式,遍歷二叉樹,並通過對映表來剪枝。

**如下:

int recursionbag(int nr,int nw)//傳入資源數,包容量

if(nvaluetable[nr][nw]!=0)

if(nw>=nresweight[nr])//包容量大於等於當前物品重

else//包容量不足以放入當前物品

nvaluetable[nr][nw]=recursionbag(nr-1,nw);

return nvaluetable[nr][nw];

} 對比兩種方式可知,第二種方式遍歷的資料量為黃色標註結點,要小於第一種方式的資料訪問量。

不過當節點深度上千後,如果包容量遠小2^n,比如為 10000,這時前一種方法要快得多。估計這時,遞迴對訪問過的節點雖然不再訪問它的子節點,但是這樣重複訪問到的父節點數量過於龐大。

利用動態規劃求解01揹包問題

演算法分析與設計 實驗報告 班級 0209404班 學號 020940410 姓名 楊洲 上機時間 2011 11 7 1 實驗目的與要求 1 掌握動態規劃演算法求解問題的一般特徵和步驟 2 使用動態規劃法程式設計,求解0 1揹包問題。2 實驗題目 利用動態規劃求解0 1揹包問題 3 實驗內容 0 ...

編寫程式,用動態規劃法求解0 1揹包問題

要求 編寫程式,用動態規劃法求解0 1揹包問題。一 實驗目的與要求 1 明確0 1揹包問題的概念 2 利用動態規劃解決0 1揹包問題問題 二 實驗題 0 1揹包問題 knapsack problem 某商店有n個物品,第i個物品價值為vi,重量 或稱權值 為wi,其中vi和wi為非負數,揹包的容量為...

揹包問題的動態規劃法

揹包問題 在m件物品取出若干件放在空間為w的揹包裡,每件物品的重量為w1,w 2 wn,與之相對應的價值為p1,p2 pn。求出獲得最大價值的方案。注意 在本題中,所有的重量值均為整數。演算法分析 對於揹包問題,通常的處理方法是搜尋。用遞迴來完成搜尋,演算法設計如下 function make i ...