第 6 章 分支限界法
1.分支限界 VS 回溯
回溯:求出满足问题的所有解,深度优先
分支限界:求出满足问题的一个解(或者是找出问题中的一个最优解),广度优先
都要先定义解空间结构
两者对当前扩展节点所采取的扩展方式不同。
2.分支限界法常见方式
队列式分支限界法(FIFO)
优先队列式分支限界法(可以理解为OS中的优先级,一般是代价越低、或者是收益越多)
3.0-1背包
队列式FIFO分支限界法
就是数构中的广度优先算法
优先队列式分支限界法
用一个极大堆来存储结果(也就是价值越多且重量不超过的放在最上面,可以被优先扩展)
4.TSP问题
队列式FIFO分支限界法
依次拓展,当求出一个解后,其他分支中的当前结果都比这个大时,就忽略(其实复杂度是一样的)
优先队列分支限界法:
优先拓展当前费用最小的路径(用一个极小堆存储)
5.单源最短路径
求一个地点到另外一个地点的最短路径
优先队列式分支限界法
将可行解放入到一个极小堆中,优先拓展当前路径最小的节点(可以提前剪枝)
6.装载问题
两艘船装n个集装箱
方法:先一艘船装尽可能多的集装箱,然后判断剩下的集装箱第二艘船能否装下
子集树
队列式FIFO分支限界法
遍历所有的节点,然后求出最大的解
改进:提前剪枝,当前装载+剩余 与 当前最优解进行比较判断
优先队列式分治限界法
不懂?????!!!
7.布线问题
往距离缩短的方向拓展
8.八码难题
方法一:不在位最少优先扩展
方法二:优先拓展需要移动步数少的(差的绝对值最小)
9.分配问题
先分配,从未分配中的挑最好的作为优先函数