当前位置:   article > 正文

动态规划法解决0/1背包问题详解_0-1背包问题动态规划数据量大

0-1背包问题动态规划数据量大

强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

是什么

         动态规划(dynamic programming)是求解决策过程最优化的数学方法,把多阶段过程转换为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法。

基本思想

          将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。

求解步骤

  1. 找出最优解的性质,刻画出结构特征
  2. 递归的定义最优解的值
  3. 自底向上的方式计算最优值(例如0/1背包问题将价值从低到高排序,再依次像背包中放入,调整)
  4. 根据最优值构造最优解(求出哪些物品放在了背包中,标记为1,否则标记为0)

0-1背包问题

问题描述

         现在有5个物品,第i个物品的价值为vi,重量为wi,背包的容量为W,其中的参数都为非负数,W=17。求解如何放物品使得背包的总价值最大。假设我们将物品的价值从低到高排好序如下表:

  

物品的价值和重量
物品编号 1 2 3 4 5
价值v 4 5 10 11 13
重量w 3 4 7 8 9


 

问题分析

  • 尝试将1号物品放入背包

            1号物品重量为3,我们先将背包分成从0到17,共18份,当背包容量是0时,物品1无法放入背包,所以最大价值为0,依次类推,当背包的容量为3时,刚好可以将1号物品放入背包,则此时背包中最大价值为4(即为物品1的价值,位置为下表格标红处),背包容量依次增大到17,背包中还是盛放1号物品,所以,将1号物品放入背包的最大价值为4。

动态规划法示例
 I\W   0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1 0 0 0 4 4 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/795480
推荐阅读