Graph Algorithms
Graph Algorithms
Week 3, Module 5
Set of vertices V
Set of edges E
Directed graph:
DFS numbering
3 5 6 7 8
4 5 9 10 11 12
3 5 6 7 8
4 5 9 10 11 12
5 6 7 8
9 10 11 12
5 6 7 8
9 10 11 12
5 6 7 8
9 10 11 12
5 3 6 7 8
9 10 11 12
3 5 6 7 8
4 5 9 10 11 12
3 5 6 7 8
4 5 9 10 11 12
3 5 6 7 8
4 5 9 10 11 12
5 6 7 8
9 10 11 12
DFS tree
1 2 3 4 1
5 6 7 8
9 10 11 12
DFS tree pre
0
1 2 3 4 1
5 6 7 8
9 10 11 12
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2
1
9 10 11 12
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2
1 2
post
9 10 11 12
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2 5
1 2 3
post
9 10 11 12
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2 5
1 2 3
post
9 10 11 12 9
4
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2 5
1 2 3
post
9 10 11 12 9
4
10
5
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2 5
1 2 3
post
9 10 11 12 9
4
10
5 6
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2 5
1 2 3
post
9 10 11 12 9
4 7
10
5 6
DFS tree pre
0
1 2 3 4 1
5 6 7 8 2 5
1 2 3 8
post
9 10 11 12 9
4 7
10
5 6
DFS tree pre
0 9
1 2 3 4 1
5 6 7 8 2 5
1 2 3 8
post
9 10 11 12 9
4 7
10
5 6
DFS tree pre
0 9
1 2 3 4 1 3
5 6 7 8 2 5
1 2 3 8
post
9 10 11 12 9
4 7
10
5 6
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5
1 2 3 8
post
9 10 11 12 9
4 7
10
5 6
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9
4 7
10
5 6
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10
5 6
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10 7
5 6 13
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10 7
5 6 13
11
14
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10 7
5 6 13
11
14 15
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10 7
5 6 13 16
11
14 15
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10 7 12
5 6 13 16 17
11
14 15
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11 20
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10 21
1 2 3 4 1 3
5 6 7 8 2 5 4
1 2 3 8 11 20
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10 21
1 2 3 4 1 3 6
5 6 7 8 2 5 4
1 2 3 8 11 20
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10 21 22
1 2 3 4 1 3 6
5 6 7 8 2 5 4
1 2 3 8 11 20
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10 21 22 23
1 2 3 4 1 3 6
5 6 7 8 2 5 4
1 2 3 8 11 20
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
11
14 15
DFS tree pre
0 9 10 21 22 23
1 2 3 4 1 3 6
5 6 7 8 2 5 4
1 2 3 8 11 20
post
9 10 11 12 9 8
4 7 12 19
10 7 12
5 6 13 16 17 18
Any non-tree edge generates a cycle
11
14 15
Directed cycles
2 1 3
5 6 4
7 8
Directed cycles
1
2 1 3
5 6 4
7 8
Directed cycles 0
1
2 1 3
5 6 4
7 8
Directed cycles 0
1
2 1 3
1
2
5 6 4
7 8
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
3
6
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
3
6
4
7
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
3
6
4 5
7
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
3 6
6
4 5
7
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
3 6 7
6 8
4 5
7
Directed cycles 0
1
2 1 3
1
2
5 6 4
2
5
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0
1
2 1 3
1
2
5 6 4
2 9
5
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0
1
2 1 3
1 10
2
5 6 4
2 9
5
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0
1
2 1 3
1 10 11
2 3
5 6 4
2 9
5
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0
1
2 1 3
1 10 11
2 3
5 6 4
2 9 12
5 4
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0
1
2 1 3
1 10 11
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
4 5
7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
4 5
7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
4 5
7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
Forward edge 4 5
7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
Forward edge 4 5
7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
Forward edge 4 5
Back edge 7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
Forward edge 4 5
Back edge 7
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
Forward edge 4 5
Back edge 7
Cross edge
Directed cycles 0 15
1
2 1 3
1 10 11 14
2 3
5 6 4
2 9 12 13
5 4
7 8
3 6 7 8
6 8
Tree edge
Forward edge 4 5
Back edge 7
Cross edge
Directed cycles
A directed graph has a cycle if and only if DFS reveals a
back edge
Bridges (edges)