Title: Minimum Spanning Trees
1Minimum Spanning Trees
- Definition
- Two properties of MSTs
- Prim and Kruskals Algorithm
- Proofs of correctness
- Boruvkas algorithm
- Verifying an MST
- Randomized algorithm in linear time
2Problem Definition
- Input
- Weighted, connected undirected graph G(V,E)
- Weight (length) function w on each edge e in E
- Task
- Compute a spanning tree of G of minimum total
weight - Spanning tree
- If there are n nodes in G, a spanning tree
consists of n-1 edges such that no cycles are
formed
3Example
Input
4Two Properties of MSTs
- Cycle Property For any cycle C in a graph, the
heaviest edge in C does not appear in the minimum
spanning tree - Used to rule edges out
- Cut Property For any proper non-empty subset X
of the vertices, the lightest edge with exactly
one endpoint in X belongs to the minimum spanning
forest - Used to rule edges in
5Cycle Property Illustration/Proof
- Proof by contradiction
- Suppose T is an MST with such an edge e.
- Derive a contradiction showing that T is not an
MST
6Cut Property Illustration/Proof
- Proof by contradiction
- Suppose T is an MST without such an edge e.
- Derive a contradiction showing that T is not an
MST
7Three Classic Greedy Algorithms
- Kruskals approach
- Select the minimum weight edge that does not form
a cycle - Prims approach
- Choose an arbitrary start node v
- At any point in time, we have connected component
N containing v and other nodes V-N - Choose the minimum weight edge from N to V-N
- Boruvkas approach
- Prim in parallel
8Example
- Illustrate the execution of Kruskal and Prims
algorithms on the following input graph. Let D
be the arbitrary start node for Prims algorithm.
9Prim Implementation
- Use a priority queue to organize nodes in V-N to
facilitate finding closest node. - Extract-Min operation
- Decrease-key operation
- Describe how we could implement Prim using a
priority queue.
10Running Time of Prim
- How many extract-min operations will we perform?
- How many decrease-key operations will we perform?
- How much time to build initial priority queue?
- Given binary heap implementation, what is the
running time? - Fibonacci heap
- Decrease-key drops to O(1) amortized time
11Kruskal Implementation
- Kruskals Algorithm
- Adding edge (u,v) to the current set of edges T
forms a cycle if and only if u and v are in the
same connected component.
12Disjoint Set Data Stucture (Ch 21)
- Given a universe U of objects
- Maintain a collection of sets Si such that
- Unioni Si U
- Si intersect Sj is empty
- Find-set(x) Returns set Si that contains x
- Merge(Si, Sj) Returns new set Sk Si union Sj
- Describe how we can implement cycle detection
with this data structure.
13Running Time of Kruskal
- How many merges will we perform?
- How many Find-set operations will we perform?
- Each can be implemented in amortized a(V) time
where a is a very slow growing function. - What other operations do we need to implement?
- Overall running time?
14Proofs of Correctness
- Why do we know each edge that is added in
Kruskals algorithm is part of an MST? - Why do we know that each edge added in Prims
algorithm is part of an MST?
15Boruvkas Algorithm
- Prim in parallel
- Boruvka Step
- We have a graph of vertices
- For each v in V, select the minimum weight edge
connected to v - Update
- Contract all selected edges, replacing each
connected component by a single vertex - Delete loops, and keep only the lowest weight
edge in a multi-edge - Run Boruvka steps until we have a single node
16Boruvka Step Illustration
17Boruvkas Algorithm Analysis
- Correctness
- How can we verify that each edge we add is part
of an MST? - Running time
- What is the running time of a Boruvka Step?
- How many Boruvka steps must we implement in the
worst case?
18Verification Problem
- Input
- Weighted, connected undirected graph G(V,E)
- Weight (length) function w on each edge e in E
- A spanning tree T of G
- Task
- Answer yes/no if T is a minimum spanning tree for
G - Two key concepts
- Decision problem problem with yes/no answer
- Verification Is it easier to verify an answer as
correct as compared to generating an answer?
19Key idea T(u,v)
- Suppose we have a tree T
- For each edge (u,v) not in T, let T(u,v) be the
heaviest edge on the (u,v) path in T - If w(u,v) gt w(T(u,v)), then (u,v) should not be
in T.
- Consider edge (B,F) with weight 7.
- T(B,F) (C,G) which has weight 6.
- (B,F) is appropriately not in T as w(B,F) gt
w(C,G).
20Verification Algorithm
- For each edge (u,v) not in T, find T(u,v).
- Compare w (u,v) to w(T(u,v))
- If all are ok, then return yes, else return no.
- Running time?
- O(E) time to perform comparisons
- Sophisticated techniques to find all the T(u,v)
in O(E) time.
21Randomized Algorithm
- Run Baruvkas Step 2 times
- If there were originally n nodes, how many in
reduced problem - Random Sampling
- Make a smaller subgraph by choosing each edge
with probability ½ - Recursively compute minimum spanning tree (or
perhaps forest) F on this reduced graph - Use verification algorithm to eliminate any edges
(u,v) not in F whose weight is more than weight
of F(u,v). - Apply algorithm recursively to the remaining
graph to compute a spanning tree T - Knit together tree from step 1 with F to form
spanning tree
22Visualization
Graph Go
Step 1 Run 2 Baruvka Steps
Graph G3 G1 E2
Tree T4 T3 union E1
23Analysis Intuition
Graph Go
Step 1 Run 2 Baruvka Steps
G2 has at most ½ the edges of G0
Step 2 Construct G2 by sampling ½ edges
Graph G3 G1 E2
Step 2 Recursively Construct T2 for graph G2
Step 2 Use T2 to identify edges E2 that cannot
be in MST for G1
G3 edges bounded by ½ nodes of G0
Tree T4 T3 union E1