分支限界法
定义
分支限界法类似与回溯法,也是一种在问题的解空间树上搜索问题的解法。但后者的目标是找到满足约束条件的所有解,而前者要求找到某种意义下的最优解(极大值、极小值)。
分支限界法采用广度优先的策略,依次搜索活结点的所有分支,也就是所有相邻结点。
设计思想
- 设计合适的限界函数,排除该活结点不可能产生最优解的孩子结点,来提高搜索效率。
- 组织活结点表,可采用队列式分枝限界法和优先队列式分枝限界法。
(1)队列式:
a.将根结点加入活结点队列
b.从活结点队中取出队头结点,作为当前扩展结点
c.对当前扩展结点,从左到右的产生它的所有孩子结点,用约束条件检查,把所有满足约束条件的孩子结点加入活结点队列
d.重复步骤b和c,直到找到一个解或活结点队列为空为止
(2)优先队列式:
与(1)相似,每次先计算起始结点的优先级再将它加入优先队列 - 确定最优解的解向量
方法一:对每个扩展节点保存从根节点到该结点的路径
方法二:在搜索过程中构建搜所经过的树结构,利用双亲结点指针来实现对该树结构的保存
题目介绍
题目内容
定义一个二维数组,例如:
int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0,