回溯法

1. 回溯法定义:
主要思想,每次只构造一个分量,然后按照下面的方法来评估这个部分构造解。如果这个构造解可以继续构造而不违反问题的约束,我们就接受对解的下一个分量所做的第一个合法选择。如果下一个分量违反问题约束,就不必对剩下的任何分量进行任何选择。这种情况下,该算法进行回溯。
2 . 基本思想:

  1. 针对所给问题,定义问题的解空间。
  2. 确定易于搜索的解空间结构。
  3. 以dfs遍历解空间,使用剪枝函数,避免无效搜索。
    特征:在任何一个状态空间树的情况下,算法只保留从根节点到当前节点的路径。
    模板:
    回溯法
  4. 实例分析:
    4皇后问题:任何+两个皇后既不能同行也不能同列,也不能位于同一对角线上。
    回溯法
    我们先从一个空的状态空间树入手,把第一个皇后放在第一行第一列,然后把第二个皇后放在第二行第一列,违反问题约束 ,这条路报废,接着
    往下走一个状态空间树,也就是第二行第二列,同样不行,因为处于同一对角线上,接着往下走一个状态空间树,第二行第二列,发现可行,接着往下走一行,发现无论第三个怎么放都违反问题约束,于是回溯到第二个皇后,到第二行第四列。就是不断
    往下走,有可行状态空间树,就大胆往下走,没有就回头,浪子回头金不换!‘详细分析看图解:

回溯法