cse 780 algorithms advanced algorithms minimum spanning tree generic algorithm kruskal’s algorithm...
Post on 19-Dec-2015
282 views
TRANSCRIPT
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|)