Module 5 Graph DFS
Module 5 Graph DFS
Module-5: Graph
Graph Traversal
- Breadth First Search (BFS)
- Depth First Search (DFS)
DSA:
Dr. Durgesh Kumar
Assistant Professor (Senior),
S C O P E , V I T Ve l l o r e
• garbage collection
Fig-1: has 3
components
2. Finding Cycle in undirected/directed graph
21 . if (processed_u = True)
22. u = pop(S)// Delete from the stack S
23. time +=1
24. visited[u] = 2
25. end[u] = time
26. [ END of While loop]
Depth First Search (DFS)
Q. Find the DFS of the following graph using A as source node.
Visited 1 0 0 0 0 0 0
Parent -1 -1 -1 -1 -1 -1 -1 A
Start time 0 -1 -1 -1 -1 -1 -1
End time -1 -1 -1 -1 -1 -1 -1
A B C
G
Stack A B
D E F
index A B C D E F G
Visited 1 1 0 0 0 0 0 A
Parent -1 A -1 -1 -1 -1 -1
Start time 0 1 -1 -1 -1 -1 -1 B
End time -1 -1 -1 -1 -1 -1 -1
⚫ S[top] = A
⚫ Adj[A] = B, D, E
⚫ Push(S, B), start[B] = 1, visited[B] = 1, parent [B] = A
Depth First Search (DFS) STEP-2
A B C
ti me =2
G
Stack A B C
D E F
index A B C D E F G
Visited 1 1 1 0 0 0 0 A
Parent -1 A B -1 -1 -1 -1
Start time 0 1 2 -1 -1 -1 -1 B
End time -1 -1 -1 -1 -1 -1 -1
⚫ S[top] = B C
⚫ Adj[B] = A, C, E [ visited[C] =0, so we will process C]
⚫ Push(S, C), start[C] = 2, visited[C] = 1, parent[C] = B
Depth First Search (DFS) STEP-3
ti me =3 A B C
G
Stack A B C E
D E F
index A B C D E F G
Visited 1 1 1 0 1 0 0 A
Parent -1 A B -1 C -1 -1
0 1 2 -1 3 -1 -1
B
Start time
End time -1 -1 -1 -1 -1 -1 -1
C
⚫ S[top] = C
⚫ Adj[C] = B, E, F, G [ visited[E] =0, so we will process E] E
⚫ Push(S, E), start[E] = 3, visited[E] = 1, parent[E] = C
Depth First Search (DFS) STEP-4
ti me =4 A B C
G
Stack A B C E D
D E F
index A B C D E F G
Visited 1 1 1 1 1 0 0 A
Parent -1 A B E C -1 -1
0 1 2 4 3 -1 -1
B
Start time
End time -1 -1 -1 -1 -1 -1 -1
C
⚫ S[top] = E
⚫ Adj[E] = A, B, C, D, F [ visited[D] =0, so we will process D] E
⚫ Push(S, D), start[D] = 4, visited[D] = 1, parent[D] = E
D
Depth First Search (DFS) STEP-5
ti me =5 A B C
G
Stack A B C E D
D E F
index A B C D E F G
Visited 1 1 1 2 1 0 0 A
Parent -1 A B E C -1 -1
0 1 2 4 3 -1 -1
B
Start time
End time -1 -1 -1 5 -1 -1 -1
C
⚫ S[top] = D
⚫ Adj[D] = A, E [ visited[A] !=0, visited[E] !=0, so we will pop D] E
⚫ D = Pop(S), visited[D] = 2, end[D] = 5
D
Depth First Search (DFS) STEP-6
ti me =6 A B C
G
Stack A B C E F
D E F
index A B C D E F G
Visited 1 1 1 2 1 1 0 A
Parent -1 A B E C E -1
0 1 2 4 3 6 -1
B
Start time
End time -1 -1 -1 5 -1 -1 -1
C
⚫ S[top] = E
⚫ Adj[E] = A, B, C, D, F [ visited[F] =0, so we will push F] E
⚫ Push(S, E), start[F] = 6, visited[F] = 1, parent[F] = E
D F
Depth First Search (DFS)STEP-7
A B C
ti me =7 G
Stack A B C E F G D E F
A B C D E F G
A
index
Visited 1 1 1 2 1 1 1
B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time -1 -1 -1 5 -1 -1 -1
E
⚫ S[top] = F
F
⚫ Adj[F] = C, E, G [ visited[G] = 0, so we will push G] D
⚫ Push(S, G), start[G] = 7, visited[G] = 1, parent[F] = E G
Depth First Search (DFS)STEP-8
A B C
ti me =8 G
Stack A B C E F G D E F
A
index A B C D E F G
Visited 1 1 1 2 1 1 2
B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time -1 -1 -1 5 -1 -1 8
E
⚫ S[top] = G
F
⚫ Adj[G] = C, F [ visited[C] != 0, visited[F] != 0, so we will pop G] D
⚫ G = Pop(S), visited[G] = 2, end[G] = 8 G
Depth First Search (DFS)STEP-9
A B C
ti me =9 G
Stack A B C E F D E F
A
index A B C D E F G
Visited 1 1 1 2 1 2 2
B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time -1 -1 -1 5 -1 9 8
E
⚫ S[top] = F
F
⚫ Adj[F] = C, E, G [ visited[C, E, G] != 0, so we will pop F] D
⚫ F = Pop(S), visited[F] = 2, end[G] = 9 G
Depth First Search (DFS)STEP-10
A B C
ti me =10 G
Stack A B C E D E F
A
index A B C D E F G
Visited 1 1 1 2 2 2 2
B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time -1 -1 -1 5 10 9 8
E
⚫ S[top] = E
F
⚫ Adj[E] = A, B, C, D, F [ visited[A, B, C, D, F] != 0, so we will pop E] D
⚫ E = Pop(S), visited[E] = 2, end[E] = 10 G
Depth First Search (DFS)
STEP-11 A B C
ti me =11 G
Stack A B C D E F
A
index A B C D E F G
Visited 1 1 2 2 2 2 2
B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time -1 -1 11 5 10 9 8
E
⚫ S[top] = C
F
⚫ Adj[C] = B, E, F, G [ visited[B, E, F, G] != 0, so we will pop C] D
⚫ C = Pop(S), visited[C] = 2, end[C] = 11 G
Depth First Search
(DFS) STEP-12 A B C
ti me =12 G
Stack A B D E F
A
index A B C D E F G
Visited 1 2 2 2 2 2 2
B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time -1 12 11 5 10 9 8
E
⚫ S[top] = B
F
⚫ Adj[B] = A, C, E, [ visited[A, C, E] != 0, so we will pop B] D
⚫ B = Pop(S), visited[B] = 2, end[B] = 12 G
Depth First Search
(DFS) STEP-13 A B C
ti me =13 G
Stack A D E F
A
index A B C D E F G
Visited 2 2 2 2 2 2 2 B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time 13 12 11 5 10 9 8
E
⚫ S[top] = A
F
⚫ Adj[B] = B, D, E, [ visited[B, D, E] != 0, so we will pop A] D
⚫ A = Pop(S), visited[A] = 2, end[A] = 13 G
Depth First Search
(DFS) STEP-14 A B C
ti me =14
G
Stack D E F
A
index A B C D E F G
Visited 2 2 2 2 2 2 2 B
Parent -1 A B E C E F
Start time 0 1 2 4 3 6 7 C
End time 13 12 11 5 10 9 8
E
⚫ Stack Empty
F
⚫ DFA algorithm terminated. D
G
Time complexity of DFS
• Time complexity - O( V +E)
• Space complexity – to store STACK – O(V)
Practice Questions – Write down DFS and BFS for the Graphs
Graph-1
Graph-2
Graph-3
Practice Questions – Write down DFS and BFS for the Graphs
Graph-5