回溯算法的理解与使用

       最近在做题的过程中发现很多我不会的题目的解决方法都使用了回溯算法的思想,说明我对这个算法目前掌握的还不够牢固,因此今天花时间来好好了解这个算法。

       回溯算法是一种算法思想,而递归则是具体的代码结构。

       就我的学习感受:回溯算法就是树结构的思维过程。

       图示:

       回溯算法的理解与使用_第1张图片

       回溯算法解决问题的例子:n皇后问题,0-1背包问题,货郎问题。

       这些问题的共同点是它们的解或者解集都是向量或者向量集,它们的搜索空间:树。可能是n叉树、子集树、排列树等。树的节点对应于部分向量,可行解在叶节点。 搜索方法有:DFS、BFS,或者二者结合。

       回溯算法适用于求解搜索问题和优化问题,它采用DFS/BFS隐含的遍历搜索树。

       回溯算法的使用条件:多米诺性质,即:X1...Xn+1成立→X1...Xn成立,逆否命题也成立。 

你可能感兴趣的:(数据结构&算法设计)