基础
复杂问题的解是由若干个小的决策步骤组成的决策序列,解决一个问题所有可能的决策序列构成该问题的解空间
使用回溯法求解问题的时候应该首先明确解空间。
解空间中满足约束条件的解就是可行解了,能用最低代价完成的可行解就是最优解
问题的解空间一般都是树的形式,所以也称为解空间树 -> 树根节点表示搜索的初始状态,每一层的节点是上一层节点做出决策之后状态的转换
比如下图就是求集合{a,b,c}的幂集的解空间树
求解过程分为3步,分别决定选择不选择a\b\c三个元素,每个叶子节点构成一个解
回溯法需要在包含所有解的解空间树中,使用DFS策略从根节点开始搜索解。之所以叫回溯法,就是在搜索过程中如果Si+1节点发现不满足条件,走不通,就会回退到Si节点中去,从这里再找其它路径。
在回溯法中,通常具有约束函数和限界函数来避免无效搜索,统称为剪枝函数
所以 回溯法 = DFS + 剪枝