動態規劃法求解簡單的 0 1 揹包問題

2021-04-18 14:52:55 字數 754 閱讀 3614

動態規劃法是一種強有力的演算法設計技術, 它被廣泛用於求解組合最優化問題。這種技術採用自底向上的方式遞推求值, 將待求解的問題分解成若干個子問題, 先求解子問題, 並把子問題的解儲存起來以便以後用來計算所需要求的解。

為了設計一種動態規劃演算法, 需要推導出乙個遞推關係, 用較小例項的解的形式來表示揹包問題的例項的解。 解決0- 1 揹包問題的遞推式如下:v[i,j]= max如果j- wi ≥0 v[i- 1,j],如果j- wi< " 0

namespace backpackalgorithm

; int value=;

int maxweight = 5;

dynamicprogram dynamicprogram = new dynamicprogram(weight, value, maxweight);

dynamicprogram.initial();

console.writeline(dynamicprogram.algorithm());}}

class dynamicprogram

public void initial()

for(int i=0;i0) && (j > 0))

else}}

}return matrix[matrix.getupperbound(0), matrix.getupperbound(1)];

}public int major(int a, int b)

}}

動態規劃法求解0 1揹包問題

有n個重量分別為的物品,它們的價值分別為,給定乙個容量為w的揹包。設計從這些物品中選取一部分物品放入該揹包的方案,每個物品要麼選中要麼不選中,要求選中的物品不僅能夠放到揹包中,而且重量和為w具有最大的價值。對於可行的揹包裝載方案,揹包中物品的總重量不能超過揹包的容量。最優方案是指所裝入的物品價值最高...

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揹包問題。資料...