回溯深度优先

一、回溯法

回溯法是一种选优搜索法(试探法),按选优条件向前搜索,以达到目标。

但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择

这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

void backtracking(参数) {  
    if (终止条件) {  
        存放结果;  
        return;  
    }   
    处理节点;  
    backtracking(路径,选择列表); // 递归  
    回溯,撤销处理结果  
}  

回溯法可以用递归实现也可以用非递归实现

二、深度优先搜索

当回溯用于树的时候,就是深度优先搜索。如果一个问题解决的时候显式地使用了树,那么我们就叫它DFS。

递归是DFS的一种实现方式,DFS是动态规划的一种实现方式。回溯法是DFS过程中可以进行的可选操作。

三、访问次数比较

深度优先遍历:已经访问过的节点不再访问,所有点仅访问一次。

回溯法:已经访问过的点可能再次访问,也可能存在没有被访问过的点。

posted @ 2021-05-11 16:45  BrunoLan  阅读(182)  评论(0)    收藏  举报