next up previous
Next: Up: Previous:

DFS

\(1. \;\;\;\) Given G
\(2. \;\;\;\;\;\;\) Pick an unvisited vertex v, remember the rest
\(3. \;\;\;\;\;\;\) Recurse on vertices adjacent to v

DFS(G)
$\;\;\;\;\;$foreach v in V
$\;\;\;\;\;$ $\;\;\;\;\;$visited(v) = False
$\;\;\;\;\;$ $\;\;\;\;\;$pred(v) = NIL
$\;\;\;\;\;$time = 0
$\;\;\;\;\;$foreach u in V
$\;\;\;\;\;$ $\;\;\;\;\;$if not visited(u)
$\;\;\;\;\;$ $\;\;\;\;\;$then Visit(u)



Visit(u)
$\;\;\;\;\;$visited(u) = True
$\;\;\;\;\;$time = time + 1
$\;\;\;\;\;$discover(u) = time
$\;\;\;\;\;$foreach v in Adj[u] $\;\;\;\;\;$ $\;\;\;\;\;$ $\;\;\;\;\;$; $\Theta(E)$
$\;\;\;\;\;$ $\;\;\;\;\;$if not visited(v)
$\;\;\;\;\;$ $\;\;\;\;\;$then pred(v) = u
$\;\;\;\;\;$ $\;\;\;\;\;$ $\;\;\;\;\;$Visit(v)
$\;\;\;\;\;$time = time + 1
$\;\;\;\;\;$finished(u) = time



The total running time for DFS is $\Theta(V+E)$


next up previous
Next: Up: Previous: