【算法研究】搜索算法-深度优先搜索
如果您觉得本文有用,可以在微博上关注我,每周我都会在微博上发布新博客发表的通知, 我的微博 ###深度优先搜索 ####介绍 如果您觉得这篇文章排版不舒服,请到我的微盘下载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] = GRAY for 每一个v的邻接节点 if (status[v] == WHITE) DFS-VISIT(t) status[v] =