用动态编程解决0/1背包问题,但最大值似乎是错误的

时间:2019-05-02 03:52:48

标签: algorithm dynamic-programming knapsack-problem

假设我们希望拣选物品(可能有重复的物品),以使总容量正好为C,同时使拣选物品的总价值最小。

要使用动态编程解决此问题,我们可以创建表Copt[w],这是每个0 ≤ w ≤ C的容量为C所需的最小总值。

基本情况为Copt[0] = 0。动态程序的过渡是: Copt[w] = mini= w[i]≤ C (Copt[w-wi] + vi)

假设我们有C = 8和以下三个项目:

计算Copt[1]Copt[8]的值,这是组成权重1…8的最小值。

对背包0/1使用动态算法后;我获得的最大值是5。

但是,以肉眼看,我希望该值为24。

您可以在这些图像中看到

enter image description here

enter image description here

0 个答案:

没有答案