Title: Week -7-8 Topic - Graph Algorithms CSE
1Week -7-8Topic - Graph AlgorithmsCSE
5311
- Prepared by-
- Sushruth Puttaswamy
- Lekhendro Lisham
2Contents
- Different Parts of Vertices used in Graph
Algorithms - Analysis of DFS
- Analysis of BFS
- Minimum Spanning Tree
- Kruskals Algorithm
- Shortest Paths
- Dijkshitras Algorithm
3Different Parts of Vertices (used in Graph
Algorithms)
- Vertices of the Graph are kept in 3 parts as
below - Visited Vertices already selected.
- Fringe Vertices to be considered for
- next selection.
- Unvisited Vertices yet to consider as a
possible candidate.
Visited
Fringe
Unvisited
- For DFS, the Fringe Part is kept in a STACK
while for BFS - QUEUE is used.
4Brief Description of DFS
- Explores a graph using greedy method.
- Vertices are divided into 3 parts as it proceeds
i.e. into Visited, Fringe Unvisited - Fringe part is maintained in a Stack.
- The path is traced from last visited node.
- Element pointed by TOS is the next vertex to be
considered by DFS algorithm to select for Visited
Part.
5Data Structures use in DFS
a b e
d c Graph
with 5 Vertices
b
V F U F U
a b c d e
d
a
c
e
b
e
d
e
a
c
TOS
b
b
d
c
d
(U/V/F) 1-D Array
Adjacency list
Fringe (Stack)
6Analysis of DFS
- For a Graph G(V, E) and n V mE
- When Adjacency List is used
- Complexity is O(mn)
- When Adjacency Matrix is used
- This again requires a stack to maintain the
fringe an array for maintaining the state of a
node. - Scanning each row for checking the connectivity
of a Vertex is in order O(n). - So, Complexity is O(n2).
2
7Applications of DFS
- To check if a graph is connected. The algorithm
ends when the Stack becomes empty. - Graph is CONNECTED if all the vertices are
visited. - Graph is DISCONNECTED if one or more vertices
- remained unvisited.
- Finding the connected components of a
disconnected graph. Repeat 1 until all the
vertices become visited. Next vertex can also be
taken randomly. - Check if a graph is bi-connected (i.e. if 2
distinct paths exist between any 2 nodes.). - Detecting if a given directed graph is strongly
connected( path exists between a-b b-a). - Hence DFS is the champion algorithm for all
connectivity problems
8Analysis of BFS
- Fringe part is maintained in a Queue.
- The trees developed are more branched wider.
- When Adjacency List is used
- Complexity is O(mn)
- When Adjacency Matrix is used
- This requires a Queue to maintain the fringe an
array for maintaining the state of a node. - Scanning each row for checking the connectivity
of a Vertex is in order O(n). - So, Complexity is O(n2).
9Minimum Spanning Tree (MST)
- A spanning tree of a connected Graph G is a
sub-graph of G which covers all the vertices of
G. - A minimum-cost spanning tree is one whose edge
weights add up to the least among all the
spanning trees. - A given graph may have more than one spanning
tree. - DFS BFS give rise to spanning trees, but they
dont consider weights.
10Properties MST
- The least weight edge of the graph is always
present in the MST. - Proof by contradiction
w3
w2
c
h
d
Let this be a MST. Also let us assume that the
shortest edge is not part of this tree. Consider
node g h. All edges on the path between these
nodes are longer.(w1,w2,w3) Let us take any edge
(ex-w1) delete it. We will then connect g h
directly. But this edge has a lighter weight then
already existing edges which is a contradiction.
w1
g
CONTRADICTION
11. Properties of MST
- For any pair of vertices a b, the edges along
the path from a to b have to be greater than the
weight of (a,b).
12Kruskals Algorithm
- An algorithm to find the minimum spanning tree of
connected graph. - It makes use of the previously mentioned
properties. - Step 1 Initially all the edges of the graph are
sorted based on their weights. - Step2 Select the edge with minimum weight from
the sorted list in step 1.Selected edge shouldnt
form a cycle. Selected edge is added into the
tree or forest. - Step 3 Repeat step 2 till the tree contains all
nodes of the graph.
13. Kruskals Algorithm
- This algorithm works because when any edge is
rejected it will be longer than the already
existing edge(s). - The Union-Find data structure is tailor made to
implement this algorithm. - Cycle formation between any 2 vertices a b is
checked if Find(a)Find(b). - Applet Demo Link.
14Analysis of Kruskals Alg.
- If an adjacency list is used.
- We have n vertices m edges the following steps
are followed. - Sort the edges mlogm
- Find operation 2m O(m)
- Union - n-1 O(n)
- O(mlogm) O(mlogn ) O(mlog n).
- If we use path compression then find union
become m times inverse Ackermans function. - But sorting always takes mlogm time.
2
15Shortest Paths
- The problem is to find shortest paths among
nodes. - There are 3 different versions of this problem as
shown below - Single source single destination shortest path
(SSSP) - Single source all destinations shortest path
(SSAP). - All pairs shortest path.
- For un-weighted graphs
- BFS can be used for 1.
- BFS can used to for 2.
- Running BFS from all nodes is presently the best
algorithm for 3.
16Dijkshitras Algorithm
- This is an algorithm for finding the shortest
path in a weighted graph. - It finds the shortest path from a single source
node to all other nodes. - The shortest path from a single node to all
destinations is a tree. - The following applet gives a very good
demonstration of the Dijkshitras Algorithm. It
finds the shortest distances from 1 city to all
the remaining cities to which it has a path. -
- Applet
17. Dijkshitras Algorithm
- DIJKSTRA (G, w, s)
- INITIALIZE-SINGLE-SOURCE(G, s)
- S ? ø
- Q ? VG
- while Q ? ø
- do u ? EXTRACT-MIN(Q)
- S ? S U u
- for each vertex v ? Adju do
- if dv gt du w (u, v)
- then dv ? du w (u, v)
- p v ? u
- The algorithm repeatedly selects the
vertex u with the minimum shortest-path estimate,
adds u to S, and relaxes all edges leaving u.
18. Analysis of Dijkshitras Alg.
- For a Graph G(V, E) and n V mE
- When Binary Heap is used
- Complexity is O((mn) log n)
- When Fibonacci Heap is used
- Complexity is O( m n log n)
19