不进则退,不喜则忧,不得则亡,此世人之常。
一种选优搜索算法,以深度优先,按选优条件搜索,以达到目标。
算法思想
能进则进,进不了则换,换不了就退。
算法要素
首先确定解的形式,定义解空间。
- 解空间
- 解的组织形式{x1, x2, ..., xn}
- 显约束{0, 1, ..., 0}
- 解空间
- 解空间的组织结构(树)
- 搜索解空间
- 隐约束(剪枝函数):能否得到答案的约束
- 隐约束包括约束函数(能否有解)和限界函数(能否最优解)
- 几个术语
- 扩展结点:正在生成孩子的结点
- 活结点:已生成,孩子没有全部生成
- 死结点:所有孩子已经生成
- 子孙:子树上的所有结点
- 祖宗:根路径上所有结点
解题秘籍
- 定义解空间
- 确定解空间组织结构:通常用解空间树表示,有子集树,排列树,m叉树
- 搜索解空间:根据隐约束搜索,当前结点不满足就回溯。可行(约束函数)最优(+限界函数)
回溯法解题关键是设计有效的显约束(解分量取值范围)和隐约束