minimum spanning tree
DESCRIPTION
Minimum Spanning Tree. Spanning Trees. A spanning tree of a graph is just a subgraph that contains all the vertices and is a tree. A graph may have many spanning trees. Spanning trees are defined for connected undirected graphs Since there are trees They have no cycles. Graph A. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/1.jpg)
Minimum Spanning Tree
![Page 2: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/2.jpg)
• A spanning tree of a graph is just a subgraph that contains all the vertices and is a tree.
• A graph may have many spanning trees.
• Spanning trees are defined for connected undirected graphs
• Since there are trees They have no cycles
or or or
Some Spanning Trees from Graph AGraph A
Spanning Trees
![Page 3: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/3.jpg)
All 16 of its Spanning TreesComplete Graph
![Page 4: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/4.jpg)
Minimum Spanning Trees
• The Minimum Spanning Tree for a given graph is the Spanning Tree of minimum cost for that graph.
• Defined for connected, undirected, and weighted graphs
5
7
2
1
3
4
2
1
3
Complete Graph Minimum Spanning Tree
![Page 5: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/5.jpg)
Minimum Spanning Trees (MST)
• If each edge ei = (u,v) has a weight or cost wi
• Minimum spanning tree is the smallest subset of edges MST that connect all nodes such that:
Σ wi is minimized
5
7
2
1
3
4
2
1
3
Complete Graph Minimum Spanning Tree
![Page 6: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/6.jpg)
6
Example: Laying Telephone Wire
Central office
![Page 7: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/7.jpg)
7
Wiring: Naive Approach
Central office
Expensive!
![Page 8: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/8.jpg)
8
Wiring: Better Approach
Central office
Minimize the total length of wire connecting the customers
![Page 9: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/9.jpg)
Algorithms for Obtaining the Minimum Spanning Tree
• Kruskal's Algorithm
• Prim's AlgorithmBoth of these are Greedy Algorithms
![Page 10: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/10.jpg)
Kruskal's Algorithm: Overview
1. The algorithm creates a forest of trees (many trees).
2. Initially each forest consists of a single node (and no edges).
3. At each step, we add one edge (the cheapest one) so that it joins two trees
together.
4. If it were to form a cycle, it would simply link two nodes that were already
part of a single connected tree
• Skip this edge.
The greedy choice
![Page 11: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/11.jpg)
1. The forest is constructed - with each node in a separate tree. 2. The edges are placed in a min-priority queue. 3. Until we've added n-1 edges, 1. Extract the cheapest edge from the queue, 2. If it forms a cycle, reject it, 3. Else add it to the forest. Adding it to the forest will join two trees together.
Kruskal's Algorithm: Overview
• If we start with n nodes (n separate trees)
• Each step we connect two trees
• Then we need (n-1) edges to get a single tree
![Page 12: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/12.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Complete Graph
![Page 13: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/13.jpg)
1
4
2
5
2
5
4
3
4
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
A AB D
B B
B
C D
J C
C
E
F
D
D H
J E G
F FG I
G GI J
H J JI
All nodes, no edges List of all edges
![Page 14: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/14.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Sort Edges
(in reality they are placed in a priority queue - not sorted - but sorting them
makes the algorithm easier to visualize)
Sort the edges
![Page 15: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/15.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 16: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/16.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 17: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/17.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 18: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/18.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 19: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/19.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 20: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/20.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Cycle
Don’t Add Edge
![Page 21: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/21.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 22: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/22.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 23: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/23.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 24: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/24.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Cycle
Don’t Add Edge
![Page 25: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/25.jpg)
2
5
2
5
4
3
4
4
10
1
6
3
3
2
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
B
B
D
J
C
C
E
F
D
D H
J
E G
F
F
G
I
G
G
I
J
H J
JI
1A D
4B C
4A B
Add Edge
![Page 26: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/26.jpg)
4
1
2
2 1
3
32
4
A
B C
D
E F
G
HI
J
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Minimum Spanning Tree(10 nodes, 9 edges)
Complete Graph
Sum of the weights is the smallest = 22
![Page 27: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/27.jpg)
Kruskal's Algorithm
Each node is a set by itself
Get the smallest edge at each time
If the two nodes are in different sets (trees), then this edge will not form a cycle
Add this edge and union the two sets (merge the two trees)
![Page 28: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/28.jpg)
Analysis of Kruskal's Algorithm: Naive
O(V)
Need to sort the edges first O(E Log E)
--Naïve implementation needs O(V) each time--Will be called E times (at worst) O(EV)
Naïve implementation O(V) + O(E Log E) + O(E V) O(E V)
![Page 29: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/29.jpg)
Analysis of Kruskal's Algorithm: Efficient
O(V) Put the edges in a minHeap O(E Log E)** Can be done in linear time O(E)
--Can be done with some tricks in O (Log V)--Will be called E times (at worst) O(E LogV)
Naïve implementation O(V) + O(E Log E) + O(E Log V) O(E Log E) // Since E < V2 , then Log E < 2 Log V O(E Log V)
![Page 30: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/30.jpg)
Algorithms for Obtaining the Minimum Spanning Tree
• Kruskal's Algorithm
• Prim's AlgorithmBoth of these are Greedy Algorithms
![Page 31: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/31.jpg)
Prim's Algorithm
1. This algorithm maintains two groups of nodes (Old graph) and (New graph).
2. The New graph starts with one node. (At then end it will be the MST)
3. At each step, select a node from the Old graph and add it to the New graph
• Select the node whose connecting edge has the smallest weight to any
node in the New graph.
The greedy choice
![Page 32: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/32.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Complete Graph
![Page 33: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/33.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 34: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/34.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 35: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/35.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 36: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/36.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 37: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/37.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 38: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/38.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 39: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/39.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 40: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/40.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 41: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/41.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 42: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/42.jpg)
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Old Graph New Graph
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
-Think of the black edges as cost ∞ (not valid)-Only the blue ones are valid
![Page 43: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/43.jpg)
4
1
2
2 1
3
32
4
A
B C
D
E F
G
HI
J
Complete Graph Minimum Spanning Tree
4
1
2 3
2 1
3
5
3
4
2
5 6
4
4
10
A
B C
D
E F
G
HI
J
Sum of the weights is the smallest = 22
It is possible that Kruskal and Prim algorithms generate different trees but the cost will be the same.
![Page 44: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/44.jpg)
Prim's Algorithm: Pseudocode
For all nodes, make the cost of each one ∞ and White (not selected yet)
Select a root (make its cost 0)
Select a root (make its cost 0)
Select the smallest from Q (the node to add to the New graph)
Update the cost of all adjacent nodes to u
![Page 45: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/45.jpg)
Prim's Algorithm: Analysis
O(V)
O(V Log V)
The loop repeats V times
Total of V calls: O(V Log V)
The loop repeats overall E times (for the V calls)
Total of E times: O(E Log V)
![Page 46: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/46.jpg)
Prim's Algorithm: Analysis
O(V)
O(V Log V)
The loop repeats V times
Total of V calls: O(V Log V)
The loop repeats overall E times (for the V calls)
Total of E times: O(E Log V)
Total: O(V) + O(V Log V) + O(V Log V) + O(E Log V) O( E Log V)
![Page 47: Minimum Spanning Tree](https://reader030.vdocuments.us/reader030/viewer/2022033017/56814c2d550346895db93341/html5/thumbnails/47.jpg)
Algorithms for Obtaining the Minimum Spanning Tree
• Kruskal's Algorithm
• Prim's AlgorithmBoth of these are Greedy Algorithms