分支界限算法【0-1背包问题】按照优先队列式(LC)分支限界法求解0-1背包问题, 并给出限界函数,并画出该实例的状态空间树。
目? ?錄
回溯算法【0-1背包問題】
分支界限算法【0-1背包問題】
作業題(期末考試必考)
小結
回溯算法【0-1背包問題】
分支界限算法【0-1背包問題】
解決思路:采用優先隊列式分支限界
? 確定目標函數上、下界; ? 確定目標函數的計算方法;一般情況下,假設當前已對前i個物品進行了某種特定的選擇,且背包中已裝入物品的重量是w,獲得的價值是v,計算該結點的目標函數上界的一個簡單方法是,將背包中剩余容量全部裝入第i+1個物品,并可以將背包裝滿,于是,得到限界函數:
? 依上計算從根結點到葉子結點的目標函數值直到表PT(待處理活結點列表)中取得極大值。分支限界法求解0/1背包問題算法用偽代碼描述如下:
算法7.1:分枝限界法求解0/1背包問題
輸入:n個物品的重量w[n],價值v[n],背包容量W
輸出:背包獲得的最大價值和裝入背包的物品
1. 根據限界函數計算目標函數的上界up;采用貪心法得到下界down;
2. 計算根結點的目標函數值并加入待處理結點表PT;
3. 循環直到某個葉子結點的目標函數值在表PT中取極大值
?? 3.1? i = 表PT中具有最大值的結點;
?? 3.2 對結點i的每個孩子結點x執行下列操作:
???????? 3.2.1 如果結點x不滿足約束條件,則丟棄該結點;
???????? 3.2.2 否則,估算結點x的目標函數值lb,
????????????????? 將結點x加入表PT中;
4. 將葉子結點對應的最優值輸出,回溯求得最優解的各個分量。
作業題(期末考試必考)
按照優先隊列式(LC)分支限界法求解0-1背包問題, 并給出限界函數,并畫出該實例的狀態空間樹。
老師講解此題的板書:
博主課堂筆記(僅供參考):
背包容量下界的計算:
背包容量W=16。
①放入物品1(w1=10;v1=100)和物品4(w4=4;v4=12),背包物品總重量w=14,v=112;
②放入物品2(w1=? 7;v1=63? )和物品4(w4=4;v4=12),背包物品總重量w=11,v= 75;
③放入物品3(w1=? 8;v1=56? )和物品4(w4=4;v4=12),背包物品總重量w=12,v= 68。
下界取最大值,即下界w=112。
小結
回溯算法和分支限界算法在最壞情況下需要遍歷所有的節點,因此其最壞的算法時間效率也是指數級的。
總結
以上是生活随笔為你收集整理的分支界限算法【0-1背包问题】按照优先队列式(LC)分支限界法求解0-1背包问题, 并给出限界函数,并画出该实例的状态空间树。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bootstrap4+MySQL前后端综
- 下一篇: 回溯算法【0-1背包问题】