回溯深度优先
一、回溯法
回溯法是一种选优搜索法(试探法),按选优条件向前搜索,以达到目标。
但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择
这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
void backtracking(参数) {
if (终止条件) {
存放结果;
return;
}
处理节点;
backtracking(路径,选择列表); // 递归
回溯,撤销处理结果
}
回溯法可以用递归实现也可以用非递归实现
二、深度优先搜索
当回溯用于树的时候,就是深度优先搜索。如果一个问题解决的时候显式地使用了树,那么我们就叫它DFS。
递归是DFS的一种实现方式,DFS是动态规划的一种实现方式。回溯法是DFS过程中可以进行的可选操作。
三、访问次数比较
深度优先遍历:已经访问过的节点不再访问,所有点仅访问一次。
回溯法:已经访问过的点可能再次访问,也可能存在没有被访问过的点。
浙公网安备 33010602011771号