CSE 780 Algorithms Advanced Algorithms Minimum spanning tree Generic algorithm Kruskal’s algorithm...
-
date post
19-Dec-2015 -
Category
Documents
-
view
276 -
download
2
Transcript of CSE 780 Algorithms Advanced Algorithms Minimum spanning tree Generic algorithm Kruskal’s algorithm...
CSE 780 Algorithms
Advanced Algorithms
Minimum spanning tree Generic algorithm
Kruskal’s algorithm
Prim’s algorithm
CSE 780 Algorithms
Minimum Spanning Tree
Learning outcomes: You should be able to:
Write Kruskal’s and Prim’s algorithms
Run both algorithms on given graphs
Analyze both algorithms
CSE 780 Algorithms
Problem
A town has a set of houses and a set of roads A road connects 2 and only 2 houses A road connecting houses u and v has a repair cost
w(u,v). Goal: repair enough roads such that 1. every house is connected 2. total repair cost is minimum
CSE 780 Algorithms
Definition
Given a connected graph G = (V, E), with weight function
w : E --> R Find min-weight connected subgraph Spanning tree T:
A tree that includes all nodes from V T = (V, E’), where E’ E Weight of T: W( T ) = w(e)
Minimum spanning tree (MST): A tree with minimum weight among all spanning trees
CSE 780 Algorithms
MST
MST for given G may not be unique
Since MST is a spanning tree: # edges : |V| - 1
If the graph is unweighted: All spanning trees have same weight
CSE 780 Algorithms
Generic Algorithm
Framework for G = (V, E) : Goal: build a set of edges A E Start with A empty Add edge into A one by one At any moment, A is a subset of some MST for G
An edge is safe if adding it to A still maintains thatA is a subset of a MST
CSE 780 Algorithms
Finding Safe Edges
When A is empty, example of safe edges? The edge with smallest weight
Intuition: Suppose S V, --- a cut (S, V-S) – a partition of
vertices into sets S and V-S S and V-S should be connected
By the crossing edge with the smallest weight ! That edge also called a light edge crossing the cut (S, V-S)
A cut (S, V-S) respects set A of edges If no edges from A crosses the cut (S, V-S)
CSE 780 Algorithms
Safe-Edge Theorem
Theorem: Let A be a subset of some MST, (S, V-S) be a cut that
respects A, and (u, v) be a light edge crossing (S, V-S) . Then (u, v) is safe for A.
Proof
Corollary: Let C = (Vc ,Ec ) be a connected component in the graph
(forest) GA= (V, A). If (u, v) is a light edge connecting C to some other component in GA
, then (u, v) is safe for A.
Greedy Approach:Based on the generic algorithm and the corollary,
to compute MST we only need a way to finda safe edge at each moment.
CSE 780 Algorithms
Kruskal’s Algorithm
Start with A empty, and each vertex being its own connected component
Repeatedly merge two components by connecting them with a light edge crossing them
Two issues: Maintain sets of components
Choose light edgesDisjoint set data structure
Scan edges from low to high weight
CSE 780 Algorithms
Disjoint Set Operations
Disjoint set data structure maintains a collection S = {S1,S2, …,Sk} of disjoint dynamic sets where each set is identified by a representative (member) of the set.
MAKE-SET(x): create a new set whose only member (and representative) is pointed at by x.
UNION(x,y): unites dynamic sets containing x and y, Sx and Sy, eliminating Sx and Sy
from S. FIND-SET(x): returns a pointer to the
representative of the set containing x.
CSE 780 Algorithms
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
CSE 780 Algorithms
Analysis
Time complexity: #make-set : |V| #find-set and #union operations: |E| operations
O( (|V| + |E|) (|V| )) = O( |E| (|V| )) as |E| >= |V| - 1
is the very slowly growing function
(|V| ) = O(lg|V|) = O(lg|E|) Sorting : O(|E| lg |E|) Total: O(|E| lg |E|) = O(|E| lg |V|)
Since |E| < |V|2, hence lg|E| = lg|V|.
CSE 780 Algorithms
Prim’s Algorithm
Start with an arbitrary node from V
Instead of maintaining a forest, grow a MST At any time, maintain a MST for V’ V
At any moment, find a light edge connecting V’ with (V-V’) I.e., the edge with smallest weight connecting some
vertex in V’ with some vertex in V-V’ !
CSE 780 Algorithms
Prim’s Algorithm cont.
Again two issues: Maintain the tree already build at any moment
Easy: simply a tree rooted at r : the starting node
Find the next light edge efficiently For v V - V’, define key(v) = the min distance between v
and some node from V’ (current MST) At any moment, find the node with min key.
Use a priority queue !
CSE 780 Algorithms
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
CSE 780 Algorithms
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
CSE 780 Algorithms
Analysis
Time complexity Using binary min-heap for priority queue: # initialisation in lines 1-5:
O(|V|) While loop is executed |V| times Each Extract-min takes O ( log |V| ) Total Extract-min takes O ( |V| log |V| ) Assignment in line 11 involves Decrease-Key operation:
Each Decrease-Key operation takes O ( log |V| ) The total is O( |E| log |V| ) )
Total time complexity: O (|V| log |V| +|E| log |V|) = O (|E| log |V|)
Using Fibonacci heap:Decrease-Key:
O(1) amortized time=>
total time complexityO(|E| + |V| log |V|)