CSC2105: Algorithms Graph - Introduction
CSC2105: Algorithms Graph - Introduction
Graph - Introduction
Mashiour Rahman
mashiour@aiub.edu
American International University Bangladesh
Graph - Introduction
Reference:
• CLRS Appendix B.4, Chapters 22, 24-26
Objectives:
• To learn several significant graph algorithms and their
applications
a. Graph search (BFS, DFS)
b. Bellman/Ford and Dijkstra’s shortest path algorithms (Greedy)
c. Floyd’s algorithm (Dynamic Programming)
d. Network flows
When all of v’s edges have been explored, backtrack to the vertex from
which v was discovered
u v w
Undiscovered
Discovered,
On Process
Finished,
Finished all
adjacent vertices x y z
have been
discovered
u v w
Undiscovered 1/
Discovered,
On Process
Finished,
Finished all
adjacent vertices x y z
have been
discovered
u v w
Undiscovered 1/ 2/
Discovered,
On Process
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
u v w
Undiscovered 1/ 2/
Discovered,
On Process
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
u v w
Undiscovered 1/ 2/
Discovered,
On Process
4/ 3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
u v w
Undiscovered 1/ 2/
Discovered,
On Process
4/ 3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
u v w
Undiscovered 1/ 2/
Discovered,
On Process
4/5
4/ 3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
u v w
Undiscovered 1/ 2/
Discovered,
On Process
4/5
4/ 3/6
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
u v w
Undiscovered 1/ 2/7
2/
Discovered,
On Process
4/5
4/ 3/6
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
u v w
Undiscovered 1/8
1/ 2/7
2/
Discovered,
On Process
4/5
4/ 3/6
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
u v w
Undiscovered 1/8
1/ 2/7
2/
Discovered,
On Process
4/5
4/ 3/6
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
u v w
Undiscovered 1/8
1/ 2/7
2/ 9/
Discovered,
On Process
4/5
4/ 3/6
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
u v w
Undiscovered 1/8
1/ 2/7
2/ 9/
Discovered,
On Process
4/5
4/ 3/6
3/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
Cross Edge
u v w
Undiscovered 1/8
1/ 2/7
2/ 9/
Discovered,
On Process
4/5
4/ 3/6
3/ 10/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
Cross Edge
u v w
Undiscovered 1/8
1/ 2/7
2/ 9/
Discovered,
On Process
4/5
4/ 3/6
3/ 10/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
Cross Edge
u v w
Undiscovered 1/8
1/ 2/7
2/ 9/
Discovered,
On Process
4/5
4/ 3/6
3/ 10/11
10/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
Cross Edge
u v w
Undiscovered 1/8
1/ 2/7
2/ 9/12
9/
Discovered,
On Process
4/5
4/ 3/6
3/ 10/11
10/
Finished,
Finished all
adjacent vertices x y z
have been
Tree edge
discovered
Back Edge
Forward Edge
Discover time/ Finish time
Cross Edge
Algorithm
colors each vertex:
WHITE : undiscovered
GRAY: discovered, in process
BLACK: finished, all adjacent vertices have been discovered
Adjacency checks
adjacency list of each vertex is scanned at most once
sum of lengths of adjacency lists = O(e)