Graph Searching:
Depth-First Search
Prepared by
Md. Shafiuzzaman
Lecturer, Dept. of CSE, JUST
2
Depth-First Search
• Graph G(V, E) directed or undirected
• Adjacency list representation
• Goal: Systematically explore every vertex and
every edge
• Idea: search deeper whenever possible
– Using a LIFO queue (Stack; FIFO queue used in BFS)
Md. Shafiuzzaman
3
Depth-First Search
• Maintains several fields for each vV
• Like BFS, colors the vertices to indicate their
states. Each vertex is
– Initially white,
– grayed when discovered,
– blackened when finished
• Like BFS, records discovery of a white v during
scanning Adj[u] by [v] u
Md. Shafiuzzaman
4
Depth-First Search: Example
x y z
s t
w v u
Md. Shafiuzzaman
5
Depth-First Search: Example
x y z
s t
w v u
1
Md. Shafiuzzaman
6
Depth-First Search: Example
x y z
s t
w v u
1
2
Md. Shafiuzzaman
7
Depth-First Search: Example
x y z
s t
w v u
1
2
3
Md. Shafiuzzaman
8
Depth-First Search: Example
x y z
s t
w v u
1
2
3
Md. Shafiuzzaman
9
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4
Md. Shafiuzzaman
10
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5
Md. Shafiuzzaman
11
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5
Md. Shafiuzzaman
12
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
Md. Shafiuzzaman
13
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7
Md. Shafiuzzaman
14
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7
8
Md. Shafiuzzaman
15
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7
8
Md. Shafiuzzaman
16
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7
8
9
Md. Shafiuzzaman
17
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7
8
9
Md. Shafiuzzaman
18
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7
8
9 10
Md. Shafiuzzaman
19
Depth-First Search: Example
x y z
s t
w v u
1
2
3 4 5 6
7 9 10
8 11
Md. Shafiuzzaman
20
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12
Md. Shafiuzzaman
21
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12 13
Md. Shafiuzzaman
22
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12 13
Md. Shafiuzzaman
23
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12 13
Md. Shafiuzzaman
24
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12 13
14
Md. Shafiuzzaman
25
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12 13
14
Md. Shafiuzzaman
26
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12 13
14 15
Md. Shafiuzzaman
27
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12
14 15
13 16
Md. Shafiuzzaman
28
Depth-First Search: Example
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12
14 15
13 16
x y z
s t
w v u
2
3 4 5 6
7 9 10
8 111 12
14 15
13 16
DFS(G) terminated Depth-first forest (DFF)
Md. Shafiuzzaman
29
Depth-First Search
DFS(G)
for each uV do
color[u] white
[u]  NIL
time  0
for each uV do
if color[u]  white then
DFS-VISIT(G, u)
DFS-VISIT(G, u)
color[u] gray
d[u] time  time 1
for each v Adj[u] do
if color[v]  white then
[v]  u
DFS-VISIT(G, v)
color[u] black
f[u] time  time 1
Md. Shafiuzzaman
30
Depth-First Search
• Running time: (VE)
• Initialization loop in DFS : (V)
• Main loop in DFS: (V) exclusive of time to execute
calls to DFS-VISIT
• DFS-VISIT is called exactly once for each vV since
– DFS-VISIT is invoked only on white vertices and
– DFS-VISIT(G, u) immediately colors u as gray
• For loop of DFS-VISIT(G, u) is executed |Adj[u]| time
• Since  |Adj[u]|  E, total cost of executing loop of
DFS-VISIT is (E)
Md. Shafiuzzaman

Depth-First Search