zoukankan      html  css  js  c++  java
  • (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、算法过程

     

    【应用】最小邮票数问题:

    https://www.nowcoder.com/questionTerminal/83800ae3292b4256b7349ded5f178dd1

     

  • 相关阅读:
    CSS 引入方式
    css的选择器效率分析
    CSS样式优先级
    JSONP
    javascript跨域的几种方法
    精确获取对象的类型:Object.prototype.toString()
    MooseFS
    使用tmpfs作为缓存加速缓存的文件目录
    nginx auth
    memcached
  • 原文地址:https://www.cnblogs.com/shenxiaolin/p/9806447.html
Copyright © 2011-2022 走看看