程序设计综合实践教学课件2-3-2 回溯法 - 01背包问题.pptxVIP

  • 4
  • 0
  • 约4.78千字
  • 约 15页
  • 2021-10-13 发布于安徽
  • 举报

程序设计综合实践教学课件2-3-2 回溯法 - 01背包问题.pptx

3.1 0-1背包问题 ; 任何物品都有选择或不选择两种可能,不考虑总价值最高情况下,总可选方案数为 。 按照贪心法思路,将物品按单位重量价值递减次序排队,先优先选择单位重量价值高的物品,在不超出总重量的前提下,获得一种选择方案和它相应总价格,这样的方案并不能保证是最优解。 ; 我们可以用试探-回溯法解决0-1背包问题,试探每一个物品是否放入背包。为了提高算法效率,我们需要结合贪心法思想,尽量快速找出比较优的方案,这样,我们可以在试探-回溯过程中,判断出在当前选择状态下,预估背包剩余容量摆放剩余物品可能达到的最大值,如果背包里已有物品总价值加上这个预估值也无法超过现有最优方案,就放弃继续往下试探,直接回溯,减去不必要树枝,减少状态空间树的结点数,优化算法。试探完所有物品,到达状态空间树叶子结点位置时,获得一种摆放方案,如果这一方案优于原最优方案,则替换原最优方案。无论何种情况,都需要继续回溯;回溯退回到最初出发状态时,现有最优方案就是最佳方案。;主要数据结构设计: #define MaxN 500 struct SGoods { int iWeight; //商品重量 int iPrice; //商品价值 double dPriceRatio; //每单位重量的价值 }; struct SSolut

文档评论(0)

1亿VIP精品文档

相关文档