0_1背包题的多种解法.docVIP

  • 21
  • 0
  • 约5.77千字
  • 约 14页
  • 2016-12-07 发布于贵州
  • 举报
0_1背包题的多种解法

问题描述 0/1背包问题: 现有n种物品,对1=i=n,已知第i种物品的重量为正整数Wi,价值为正整数Vi,背包能承受的最大载重量为正整数W,现要求找出这n种物品的一个子集,使得子集中物品的总重量不超过W且总价值尽量大。(注意:这里对每种物品或者全取或者一点都不取,不允许只取一部分) 算法分析 根据问题描述,可以将其转化为如下的约束条件和目标函数: 于是,问题就归结为寻找一个满足约束条件(1),并使目标函数式(2)达到最大的解向量。 首先说明一下0-1背包问题拥有最优解。 假设是所给的问题的一个最优解,则是下面问题的一个最优解:。如果不是的话,设是这个问题的一个最优解,则,且。因此,,这说明是所给的0-1背包问题比更优的解,从而与假设矛盾。 穷举法: 用穷举法解决0-1背包问题,需要考虑给定n个物品集合的所有子集,找出所有可能的子集(总重量不超过背包重量的子集),计算每个子集的总重量,然后在他们中找到价值最大的子集。由于程序过于简单,在这里就不再给出,用实例说明求解过程。下面给出了4个物品和一个容量为10的背包,下图就是用穷举法求解0-1背包问题的过程。 四个物品和一个容量为10的背包 序号 子集 总重量 总价值 序号 子集 总重量 总价值 1 空集 0 0 9 {2,3} 7 52 2 {1} 7 42 10 {2,4} 8 37 3 {2} 3 12

文档评论(0)

1亿VIP精品文档

相关文档