dfs:深度优先搜索算法

(英语:Depth-First-Search,DFS)
是一种用于遍历或搜索树或图的算法.沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。
2ffb4ce826e04da398eff16120a8b591.png
2.算法思想
dfs使用的数据结构是stack 栈,空间复杂度为o(n);dfs中最重要的算法思想是回溯和剪枝。另外dfs不具有最短性。

回溯是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。

剪枝,就是减小搜索树规模、尽早排除搜索树中不必要的分支的一种手段。形象地看,就好像剪掉了搜索树的枝条,故称之为“剪枝”。

最后修改:2023 年 03 月 20 日
如果觉得我的文章对你有用,只需评论或转发支持,谢绝投喂!