前言
回溯算法其实就是我们常说的 DFS 算法,本质上就是一种暴力穷举算法。
回溯法
采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:
- 找到一个可能存在的正确的答案;
- 在尝试了所有可能的分步方法后宣告该问题没有答案。
深度优先搜索 (英语:Depth-First-Search,DFS)
一种用于遍历或搜索树或图的算法。这个算法会 尽可能深 的搜索树的分支。当结点 v
的所在边都己被探寻过,搜索将 回溯 到发现结点 v
的那条边的起始结点。这一过程一直进行到已发现从源结点可达的所有结点为止。如果还存在未被发现的结点,则选择其中一个作为源结点并重复以上过程,整个进程反复进行直到所有结点都被访问为止。
解决一个回溯问题,实际上就是一个决策树的遍历过程。你只需要思考 3 个问题:
-
<