z
DFS Algorithm
IN Bangla
z
2
Depth-First Search: The Code
Data: color[V], time, prev[V],d[V],
f[V]
DFS(G) // where prog starts
{
for each vertex u  V
{
color[u] = WHITE;
prev[u]=NIL;
f[u]=inf; d[u]=inf;
}
time = 0;
for each vertex u  V
if (color[u] == WHITE)
DFS_Visit(u);
}
DFS_Visit(u)
{
color[u] = GREY;
time = time+1;
d[u] = time;
for each v  Adj[u]
{
if(color[v] == WHITE){
prev[v]=u;
DFS_Visit(v);}
}
color[u] = BLACK;
time = time+1;
f[u] = time;
}
Initialize
z
DFS Example
3
source
vertex
S
A
B C
D
E
F
G
z
DFS Example
4
1 | | |
|||
| |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
5
1 | | |
|||
2 | |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
6
1 | | |
||3 |
2 | |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
7
1 | | |
||3 | 4
2 | |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
8
1 | | |
|5 |3 | 4
2 | |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
9
1 | | |
|5 | 63 | 4
2 | |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
10
1 | | |
|5 | 63 | 4
2 | 7 |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
11
1 | 8 | |
|5 | 63 | 4
2 | 7 |
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
12
1 | 8 | |
|5 | 63 | 4
2 | 7 9 |
source
vertex
d f
What is the structure of the grey vertices?
What do they represent?
S
A
B C
D
E
F
G
z
DFS Example
13
1 | 8 | |
|5 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
14
1 | 8 |11 |
|5 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
15
1 |12 8 |11 |
|5 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
16
1 |12 8 |11 13|
|5 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
17
1 |12 8 |11 13|
14|5 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
18
1 |12 8 |11 13|
14|155 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
DFS Example
19
1 |12 8 |11 13|16
14|155 | 63 | 4
2 | 7 9 |10
source
vertex
d fS
A
B C
D
E
F
G
z
20
DFS: Kinds of edges
 DFS introduces an important distinction among edges in the original graph:
 Tree edge: encounter new (white) vertex
 Back edge: from descendent to ancestor
 Forward edge: from ancestor to descendent
 Cross edge: between a tree or subtrees
 From a grey node to a black node
z
21
DFS Example
1 |12 8 |11 13|16
14|155 | 63 | 4
2 | 7 9 |10
source
vertex
d f
Tree edges Back edges Forward edges Cross edges
z
22
DFS Example
1 |12 8 |11 13|16
14|155 | 63 | 4
2 | 7 9 |10
source
vertex
d f
Tree edges Back edges Forward edges Cross edges

DFS algorithm

  • 1.
  • 2.
    z 2 Depth-First Search: TheCode Data: color[V], time, prev[V],d[V], f[V] DFS(G) // where prog starts { for each vertex u  V { color[u] = WHITE; prev[u]=NIL; f[u]=inf; d[u]=inf; } time = 0; for each vertex u  V if (color[u] == WHITE) DFS_Visit(u); } DFS_Visit(u) { color[u] = GREY; time = time+1; d[u] = time; for each v  Adj[u] { if(color[v] == WHITE){ prev[v]=u; DFS_Visit(v);} } color[u] = BLACK; time = time+1; f[u] = time; } Initialize
  • 3.
  • 4.
    z DFS Example 4 1 || | ||| | | source vertex d fS A B C D E F G
  • 5.
    z DFS Example 5 1 || | ||| 2 | | source vertex d fS A B C D E F G
  • 6.
    z DFS Example 6 1 || | ||3 | 2 | | source vertex d fS A B C D E F G
  • 7.
    z DFS Example 7 1 || | ||3 | 4 2 | | source vertex d fS A B C D E F G
  • 8.
    z DFS Example 8 1 || | |5 |3 | 4 2 | | source vertex d fS A B C D E F G
  • 9.
    z DFS Example 9 1 || | |5 | 63 | 4 2 | | source vertex d fS A B C D E F G
  • 10.
    z DFS Example 10 1 || | |5 | 63 | 4 2 | 7 | source vertex d fS A B C D E F G
  • 11.
    z DFS Example 11 1 |8 | | |5 | 63 | 4 2 | 7 | source vertex d fS A B C D E F G
  • 12.
    z DFS Example 12 1 |8 | | |5 | 63 | 4 2 | 7 9 | source vertex d f What is the structure of the grey vertices? What do they represent? S A B C D E F G
  • 13.
    z DFS Example 13 1 |8 | | |5 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 14.
    z DFS Example 14 1 |8 |11 | |5 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 15.
    z DFS Example 15 1 |128 |11 | |5 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 16.
    z DFS Example 16 1 |128 |11 13| |5 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 17.
    z DFS Example 17 1 |128 |11 13| 14|5 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 18.
    z DFS Example 18 1 |128 |11 13| 14|155 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 19.
    z DFS Example 19 1 |128 |11 13|16 14|155 | 63 | 4 2 | 7 9 |10 source vertex d fS A B C D E F G
  • 20.
    z 20 DFS: Kinds ofedges  DFS introduces an important distinction among edges in the original graph:  Tree edge: encounter new (white) vertex  Back edge: from descendent to ancestor  Forward edge: from ancestor to descendent  Cross edge: between a tree or subtrees  From a grey node to a black node
  • 21.
    z 21 DFS Example 1 |128 |11 13|16 14|155 | 63 | 4 2 | 7 9 |10 source vertex d f Tree edges Back edges Forward edges Cross edges
  • 22.
    z 22 DFS Example 1 |128 |11 13|16 14|155 | 63 | 4 2 | 7 9 |10 source vertex d f Tree edges Back edges Forward edges Cross edges