(0-1)背包问题

1、0-1 背包问题

  • 一个小偷在洗劫一家商店时找到了n个物品:其中第 i 个物品价值v_i并且重w_i (v_i, w_i都是整数)
  • 小偷的背包只能承受W的重量
  • 物品要么被带走要么留下
  • 带哪些物品可以在指定的重量下达到价值最大呢?

2、可带碎片的背包问题

  • 与上述基本相同
  • 小偷可以带走一个物品的一部分

3、小偷有一个可承受 W 的背包,有n件物品: 第 i 个物品价值v_i并且重w_i 。

  目标:找到 xi 使得对于所有的 xi = {0, 1}, i = 1, 2, .., 并且 最大。

4、最优子结构

  • 考虑最多重W的物品且价值最高
  • 如果我们把j物品从背包中拿出来==> 剩下的装载一定是取自n-1个物品使得不超过载重量W – wj并且所装物品价值最高的装载

5、0-1 背包问题的动态规划

  V[i, w] :考虑前i件物品所能获得的最高价值,其中 w 是背包的承受力

  •    第1种情况:物品 i 的重量 w_i<=w,小偷对物品 i 可拿或者不拿

    V[i,w] = max{V[i-1, w], V[i-1,w-wi] + vi}

  •    第2种情况:物品i的重量 w_i>w,即小偷不拿物品 i

    V[i, w] = V[i - 1, w]

构造最优解法:

子问题的重复:

6、算法过程

 

 

猜你喜欢

转载自www.cnblogs.com/shenxiaolin/p/9806447.html