Kruskal’s Algorithm for Computing MSTs
• Section 9.2
The Minimum Spanning Tree
Give a graph G = (V, E), the minimum spanning tree (MST) is
a weighted graph G’ = (V, E’) such that:
•E’  E
•G’ is connected
•G’ has the minimum cost
B
A
C
E
D
Example
12
6
13
20
Which is the
MST?
20
B
A
C
E
D
12
6
13
20 B
A
C
E
D
12
6
13
20
Why MST is
a tree?
Naïve Algorithm for MST
(Using Exhaustive Search)
MST  Empty-Graph
cost  
For each subgraph G’ = (V, E’) of G = (V, E) do {
1. Check that G’ is connected
2. Compute cost c of G’
3. If c < cost then {
3.1 MST  G’
3.2 cost  c }}
What is the complexity “in words” of the algorithm?
“the number of subgraphs”  “cost of computing Steps 1-3”
How many subgraphs are there?
2|E|
This is bad!
The Prim Algorithm
1. Select a starting node, v
2. T  {v} //the nodes in the MST
3. E  {} //the edges in the MST
4. While not all nodes in G are in the T do
3.1 Choose the edge v’ in G − T such that there is a v in T:
weight(v,v’) is the minimum in
{weight(u,w) : w in G − T and u in T}
3.2 T  T  {v’}
3.3 E  E  {(v,v’)}
5. return E
// input: a graph G
// output: E: a MST for G
Complexity: - O((|E|+|V|)log2|E|)
- In class we show O(|E||V|)
T
G-T
If there is an edge e between the 2 groups with minimum cost, then
there is an MST containing e
Why does it works?
Property: Suppose that we divide the nodes of a graph
G = (V, E) in two groups V, V’:
5
7
10
22
66
12
6
13
2
20
Visited
Non visited
Example of a non greedy algorithm?
Example of a “Greedy” Algorithm
Dijkstra-Prim is an example of a greedy algorithm since it
looks at a subset of the larger problem
5
7
10
22
66
12
6
13
2
20
Our naïve algorithm for MST
Unfortunately,
not all problems
can be solved
with greedy
algorithms
Kruskal Algorithm
B
A
C
E
D
12
6
13
12
20
3
F
2
6
•|V| = 6
•|E| = 8
•A tree with |V| nodes has edges
|V|-1
The Kruskal Algorithm
1.
2. E  {} //the edges in the MST
3. i  1 //counter for EG
4. While do
if adding EG[i] to E does not add a cycle then
E  E  {EG[i]}
i  i + 1
5. return E
// input: a graph G with n nodes and m edges
// output: E: a MST for G
EG[1..m]  Sort the m edges in G in increasing weight order
|E| < n - 1
Complexity: O(|E|log2 |E|)
Is this algorithm Greedy?
Yes
Why Does the Kruskal Algorithm Works?
Property: If a connected graph G has n nodes, then any
acyclic subgraph G’ of G with n-1 edges is also connected
and includes all n nodes (G’ is a tree)
Corollary: Kruskal’s algorithm returns an MST of G
Homework
• 010:
9.1: 3, 6.b, 9 (just explain)
9.2: 1.a, 2.a, 5
• 011:
9.1: 2, 6.a, 9.a
9.2: 1.b, 2.d, 4

Krusadfafadfadfafdasdfasdfaasdfasdcsdkal.ppt

  • 1.
    Kruskal’s Algorithm forComputing MSTs • Section 9.2
  • 2.
    The Minimum SpanningTree Give a graph G = (V, E), the minimum spanning tree (MST) is a weighted graph G’ = (V, E’) such that: •E’  E •G’ is connected •G’ has the minimum cost
  • 3.
  • 4.
    Naïve Algorithm forMST (Using Exhaustive Search) MST  Empty-Graph cost   For each subgraph G’ = (V, E’) of G = (V, E) do { 1. Check that G’ is connected 2. Compute cost c of G’ 3. If c < cost then { 3.1 MST  G’ 3.2 cost  c }} What is the complexity “in words” of the algorithm? “the number of subgraphs”  “cost of computing Steps 1-3” How many subgraphs are there? 2|E| This is bad!
  • 5.
    The Prim Algorithm 1.Select a starting node, v 2. T  {v} //the nodes in the MST 3. E  {} //the edges in the MST 4. While not all nodes in G are in the T do 3.1 Choose the edge v’ in G − T such that there is a v in T: weight(v,v’) is the minimum in {weight(u,w) : w in G − T and u in T} 3.2 T  T  {v’} 3.3 E  E  {(v,v’)} 5. return E // input: a graph G // output: E: a MST for G Complexity: - O((|E|+|V|)log2|E|) - In class we show O(|E||V|)
  • 6.
    T G-T If there isan edge e between the 2 groups with minimum cost, then there is an MST containing e Why does it works? Property: Suppose that we divide the nodes of a graph G = (V, E) in two groups V, V’: 5 7 10 22 66 12 6 13 2 20
  • 7.
    Visited Non visited Example ofa non greedy algorithm? Example of a “Greedy” Algorithm Dijkstra-Prim is an example of a greedy algorithm since it looks at a subset of the larger problem 5 7 10 22 66 12 6 13 2 20 Our naïve algorithm for MST Unfortunately, not all problems can be solved with greedy algorithms
  • 8.
    Kruskal Algorithm B A C E D 12 6 13 12 20 3 F 2 6 •|V| =6 •|E| = 8 •A tree with |V| nodes has edges |V|-1
  • 9.
    The Kruskal Algorithm 1. 2.E  {} //the edges in the MST 3. i  1 //counter for EG 4. While do if adding EG[i] to E does not add a cycle then E  E  {EG[i]} i  i + 1 5. return E // input: a graph G with n nodes and m edges // output: E: a MST for G EG[1..m]  Sort the m edges in G in increasing weight order |E| < n - 1 Complexity: O(|E|log2 |E|) Is this algorithm Greedy? Yes
  • 10.
    Why Does theKruskal Algorithm Works? Property: If a connected graph G has n nodes, then any acyclic subgraph G’ of G with n-1 edges is also connected and includes all n nodes (G’ is a tree) Corollary: Kruskal’s algorithm returns an MST of G
  • 11.
    Homework • 010: 9.1: 3,6.b, 9 (just explain) 9.2: 1.a, 2.a, 5 • 011: 9.1: 2, 6.a, 9.a 9.2: 1.b, 2.d, 4