首页 > 其他 > 详细

Depth-first Search(DFS)

时间:2014-06-13 08:38:53      阅读:442      评论:0      收藏:0      [点我收藏+]

There are generally two methods to write DFS algorithm, one is using recursion, another one is using stack. (reference from Wiki Pedia)

Pseudocode for both methods:

A recursive implementation of DFS:

bubuko.com,布布扣
1 procedure DFS(G,v):
2       label v as discovered
3       for all edges from v to w in G.adjacentEdges(v) do
4           if vertex w is not labeled as discovered then
5               recursively call DFS(G,w)
bubuko.com,布布扣

A non-recursive implementation of DFS(using stack):

bubuko.com,布布扣
1   procedure DFS-iterative(G,v):
2       let S be a stack
3       S.push(v)
4       while S is not empty
5             v ← S.pop() 
6             if v is not labeled as discovered:
7                 label v as discovered
8                 for all edges from v to w in G.adjacentEdges(v) do
9                     S.push(w)
bubuko.com,布布扣

The non-recursive implementation is similar to breadth-first search but differs from it in two ways: it uses a stack instead of a queue, and it delays checking whether a vertex has been discovered until the vertex is popped from the stack rather than making this check before pushing the vertex.

Depth-first Search(DFS),布布扣,bubuko.com

Depth-first Search(DFS)

原文:http://www.cnblogs.com/EdwardLiu/p/3781128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!