130 likes | 310 Views
Chapter 9 : Graphs Part II (Minimum Spanning Trees). CE 221 Data Structures and Algorithms. T ext : Read Weiss, § 9.5. Minimum Spanning Tree. A minimum spanning tree of an undirected graph G is a tree formed from graph edges that connects all the vertices of G at a lowest cost.
E N D
Chapter 9 : Graphs Part II(Minimum Spanning Trees) CE 221 Data Structures and Algorithms Text: Read Weiss, §9.5 Izmir University of Economics
Minimum Spanning Tree • A minimum spanning tree of an undirected graph G is a tree formed from graph edges that connects all the vertices of G at a lowest cost. • # of edges in a MST is |V|-1. • If an edge e not in a MST T is added, acycle is created. The removal of an edge from a cycle reinstates the spanning tree property. As MST is created, if minimum cost edge not creating cycles is selected, then it’s a MST. So, greed works for MST problem. Izmir University of Economics
Prim’s Algorithm • Proceed in stages. In each stage, find a new vertex to add to the tree already formed by choosing an edge (u, v) such that the cost of (u, v) is the smallest among all the edges where u is in the tree and v is not. • Prim’s algorithm for MSTs is essentially identical to Dijkstra’s for shortest paths. • Update rule is even simpler: after a vertex is picked, for each unknown w adjacent to v, dw=min(dw, cv,w). Izmir University of Economics
Prim’s Algorithm – Example I Izmir University of Economics
Prim’s Algorithm – Example II Izmir University of Economics
Prim’s Algorithm – Example III Izmir University of Economics
Prim’s Algorithm – Example IV Izmir University of Economics
Prim’s Algorithm – Time Complexity • The running time is O(|V|2) (|V| iterations in each of which a sequential scan is performed to find the minimum cost unknown edge) without heaps, which is optimal for dense graphs. • O(|E|*log|V|) (an underlying binary heap with |V| elements is used, and |V| deleteMin (for picking min cost vertex) and at most |E| decreaseKey (for updates) are performed each taking O(log|V|) time) using binary heaps,which is good for sparse graphs Izmir University of Economics
Kruskal’s Algorithm • A second greedy strategy is continually to select the edges in order of smallest weight and accept an edge if it does not cause a cycle.Formally, Kruskal'salgorithm maintains a forest - a collection of trees. Initially, there are |V| single-node trees. Adding an edge merges two trees into one. When the algorithm terminates, there is only one tree, and this is the minimum spanning tree. Izmir University of Economics
An example run of Kruskal’s Algorithm Izmir University of Economics
Kruskal’s Algorithm: Pseudo Code I // Create the list of all edges E solution = { } // will include the list of MST edgeswhile ( more edges in E) do// Selection select minimum weight(cost) edgeremove edge from E// Feasibility if (edge closes a cycle with solution so far) then reject edgeelse add edge to solution// Solution check if |solution| = |V | - 1 return solution Izmir University of Economics
Kruskal’sAlgorithm:Pseudo Code II The worst-caserunning time of this algorithm is O(|E|log|E|), which isdominated by the heap operations.Notice thatsince|E| = O(|V|2),thisrunningtime is actuallyO(|E| log |V|).In practice, the algorithm is much faster. Izmir University of Economics
Homework Assignments • 9.15, 9.16 • You are requested to study and solve the exercises. Note that these are for you to practice only. You are not to deliver the results to me. Izmir University of Economics