如果您觉得本文有用,可以在微博上关注我,每周我都会在微博上发布新博客发表的通知,我的微博
###深度优先搜索
####介绍
如果您觉得这篇文章排版不舒服,请到我的微盘下载pdf:搜索算法-深度优先搜索
深度优先搜索是一种用来遍历或者搜索树(TREE)或图(GRAPH)结构的算法。搜索开始于某个根节点(从图中选取某个节点),然后在开始回溯前尽可能远地探索到这一支的终点。
对于DFS的实际应用程序来说,DFS常常因为要搜索的图的某一条搜索路径太长(甚至是无限的)而陷入性能瓶颈,所以我们经常制定DFS只能搜索到某个深度,
如果用一个图来代表深度优先搜索的过程,即如下图:
####深度优先遍历的伪码实现
相应的伪码实现在《算法导论》这本书中有讲解,书中用的方法十分巧妙,它用三种颜色来代表三种状态
WHITE代表未访问的结点
GRAY代表该节点第一次被访问
BLACK代表该节点的所有邻接节点都被访问,即回溯完毕的第二次访问
以下是一个深度优先遍历的递归实现:
DFS(G, s)
for 在图G中的每一个节点v
status[v] = WHITE
// 进行其他初始
DFS-VISIT(s)
DFS-VISIT(v)
status[v] = G