Presentation is loading. Please wait.

Presentation is loading. Please wait.

Kruskal’s Algorithm for Computing MSTs Section 9.2.

Similar presentations


Presentation on theme: "Kruskal’s Algorithm for Computing MSTs Section 9.2."— Presentation transcript:

1 Kruskal’s Algorithm for Computing MSTs Section 9.2

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

3 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?

4 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!

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|)log 2 |E|) - In class we show O(|E||V|)

6 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

7 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

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|log 2 |E|) Is this algorithm Greedy? Yes

10 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

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


Download ppt "Kruskal’s Algorithm for Computing MSTs Section 9.2."

Similar presentations


Ads by Google