Presentation is loading. Please wait.

Presentation is loading. Please wait.

Minimum-Cost Spanning Tree CS 110: Data Structures and Algorithms First Semester, 2010-2011.

Similar presentations


Presentation on theme: "Minimum-Cost Spanning Tree CS 110: Data Structures and Algorithms First Semester, 2010-2011."— Presentation transcript:

1 Minimum-Cost Spanning Tree CS 110: Data Structures and Algorithms First Semester, 2010-2011

2 Minimum-Cost Spanning Tree ► Given a weighted graph G, determine a spanning tree with minimum total edge cost ► Recall: spanning subgraph means all vertices are included, tree means the graph is connected and has no cycles ► Useful in applications that ensure connectivity of nodes of optimal cost

3 Kruskal’s Algorithm ► Solves the minimum-cost spanning tree problem ► Strategy: repeatedly select the lowest- cost edge as long as it does not form a cycle with previously selected edges ► Stop when n-1 edges have been selected (n is the number of vertices)

4 Kruskal’s Algorithm ► Use a priority queue of edges to facilitate selection of lowest-edge cost (just disregard edges that form a cycle) ► Time complexity O( m log m )  O( m log n )

5 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

6 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

7 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

8 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

9 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

10 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

11 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

12 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

13 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

14 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

15 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

16 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

17 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

18 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

19 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

20 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

21 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

22 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

23 MIA JFK PVD BOS DFW SFO LAX BWI ORD 2704 1846 337 1235 1464 802 621 2342 1391 1121 144 849 740 867 187 946 184 1090 1258 Kruskal’s Algorithm

24 Pseudo-Code: Kruskal function Kruskal( Graph g ) n <-- number of vertices in g for each vertex v in g define an elementary cluster C(v) <-- {v} E <-- all edges in G Es <-- sort(E) T <-- null // will contain edges of MCST i <-- 0 while T has edges fewer than n-1 (u, v) <-- Es[i] Let C(v) be the cluster containing v Let C(u) be the cluster containing u if C(v) != C(u) then Add edge (v, u) to T Merge C(v) and C(u) into one cluster i = i + 1 return tree T

25 Prim’s Algorithm ► Start at a specific vertex ► Choose the edge of minimum cost which is incident on the vertex being considered ► Add the new vertex on which the previously chosen edge is incident ► Repeat until the MCST is found ► Unlike Kruskal’s, make sure that a tree is always build as the algorithm progresses

26 Prim’s Algorithm ► Start at a specific vertex ► Choose the edge of minimum cost which is incident on the vertex being considered ► Add the new vertex on which the previously chosen edge is incident ► Repeat until the MCST is found ► Unlike Kruskal’s, make sure that a tree is always build as the algorithm progresses

27 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

28 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

29 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

30 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

31 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

32 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

33 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

34 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

35 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

36 Prim’s Algorithm a b g c f e d h i 4 8 7 9 14 10 4 2 1 8 11 7 2 6

37 Prim’s Algorithm a b g c f e d h i 4 8 7 9 4 2 1 2

38 Pseudo-Code: Prim function Prim( Graph g ) select any vertex v of g D[v] <-- 0 for each vertex u != v D[u] <-- infinity Initialize T <-- null Initalize a priority queue Q with an item ( (u, null), D[u] ) for each vertex u, where (u, null) is the element and D[u] is the key while Q is not empty (u, e) <-- Q.removeMin() Add vertex u and edge e to T for each vertex z adjacent to u such that z is in Q if w( (u,z) ) < D[z] D[z] <-- w( (u,z) ) Change to (z, (u,z)) the element of vertex z in Q Change to D[z] the key of vertex z in Q return the tree T


Download ppt "Minimum-Cost Spanning Tree CS 110: Data Structures and Algorithms First Semester, 2010-2011."

Similar presentations


Ads by Google