计算机算法设计与分析-复习18
计算机算法设计与分析-复习18(回溯法解决0-1背包问题)
步骤
- 按照单位收益排序(递减)
- 约束函数(左孩子有用,右孩子没用)
- 限界函数(左孩子没用,右孩子有用)
- cw代表当前重量
- L为最优解下界,初始为0,知道算到叶子节点再更新(谁大谁更新),
- 右儿子产生需要估计最优解上界(除了叶子节点)(前几个放进去(按照树的实际情况),当前不放,剩余按照贪心做(可以分割背包))(如果大于L,就生成)(小于L左右孩子均不生成)
- 当选择结点时,发现大于总重量,那么不生成,否则生成。
- 整个问题最优解,就是求完解之后的L
例题
致谢
[1] 以上图片来自于中国科学院大学马丙鹏老师计算机算法设计与分析课程