回溯法是一种选优搜索法,按照选优条件进行深度优先搜索(简单来讲就是遍历)。当搜索进行到某一步时,发现原先选择并不是最优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术称为回溯法,而满足回溯条件的某个状态点称为“回溯点”。
1.算法思想
回溯法是从初始状态出发,按照深度优先搜索得到方式,根据产生子节点的条件约束,搜索问题的解。当发现当前结点不满足求解条件时,就回溯,尝试其他路径。回溯法是一种“能进则进,进不了则换,换不了则退”的搜索方法。
2.算法要素
(1)解空间:
- 解的组织形式:回溯法解的组织形式可以规范为一个n元组{x1,x2,x3,……,xn},例如一个有三个物品的0-1背包问题,解的组织形式就是:{x1,x2,x3}。
- 显约束:对解分量的取值范围的限定。例如有三个物品的0-1背包问题,解的组织形式是{x1,x2,x3}。它的解分量 xi 的取值范围很简单,xi 是1 或者 0 表示一个物品是否放入背包。
- 解空间:顾名思义,就是由所有可能解组成的空间。如图所示:
假设图中每一个点都有可能是我们要的解,这些解就组成了解空间,我们现在