一、回溯法基础知识
(一)基本思想
回溯法基本思想是:从初始状态出发,搜索其所能到达的所有“状态”;当一条路走到尽头,再后退一步或若干步,从另外一种状态出发,继续搜索,直到所有路径都搜索过。这种不断前进、不断回溯寻找解的方法叫回溯法。
(二)重点与难点
1.回溯法通常将问题解空间组织成“树”结构,采用系统的方法搜索解空间树,从而得到问题解。
2.搜索策略:深度优先为主,也可以采用广度优先、函数有限、广度深度结合等。
3.避免无效搜索策略:
(1)约束函数:在扩展结点处剪去不满足约束条件的子树
(2)界限函数:在扩展结点处剪去得不到最优解的子树
(三)回溯法适用条件
1.回溯法适用条件:搜索问题和优化问题
2.必要条件:多米诺性质
(四)子集树和排列树
二、回溯法解题算法框架
二、回溯法案例分析
(一)货郎担问题递归求解
(二)货郎担问题递归实现
(三)高精度数递归求解
(四)高精度数递归实现
(五)N皇后问题递归求解
(六)N皇后问题迭代求解
(七)N皇后问题递归实现
三、子集树与排列树
子集树时间复杂度为O()
排列树时间复杂度为O(n!)