CS 561, Lecture 9. Jared Saia University of New Mexico

Similar documents
Minimum Spanning Trees My T. UF

Lecture Notes for Chapter 23: Minimum Spanning Trees

Minimum Spanning Trees

Minimum Spanning Trees

Minimum spanning trees

Announcements Problem Set 5 is out (today)!

COP 4531 Complexity & Analysis of Data Structures & Algorithms

Decreasing a key FIB-HEAP-DECREASE-KEY(,, ) 3.. NIL. 2. error new key is greater than current key 6. CASCADING-CUT(, )

Theory of Computing. Lecture 10 MAS 714 Hartmut Klauck

Chapter 23. Minimum Spanning Trees

Introduction to Algorithms

Greedy Algorithms. At each step in the algorithm, one of several choices can be made.

Lecture 10. Elementary Graph Algorithm Minimum Spanning Trees

22 Elementary Graph Algorithms. There are two standard ways to represent a

Minimum Spanning Trees

Theory of Computing. Lecture 10 MAS 714 Hartmut Klauck

Minimum Spanning Trees

Minimum Spanning Trees Ch 23 Traversing graphs

2 A Template for Minimum Spanning Tree Algorithms

Minimum-Spanning-Tree problem. Minimum Spanning Trees (Forests) Minimum-Spanning-Tree problem

22 Elementary Graph Algorithms. There are two standard ways to represent a

6.1 Minimum Spanning Trees

Minimum Spanning Trees

Undirected Graphs. DSA - lecture 6 - T.U.Cluj-Napoca - M. Joldos 1

Computer Science & Engineering 423/823 Design and Analysis of Algorithms

UC Berkeley CS 170: Efficient Algorithms and Intractable Problems Handout 8 Lecturer: David Wagner February 20, Notes 8 for CS 170

Introduction to Algorithms

Introduction to Algorithms

Partha Sarathi Manal

Kruskal s MST Algorithm

CS 561, Lecture 10. Jared Saia University of New Mexico

CS60020: Foundations of Algorithm Design and Machine Learning. Sourangshu Bhattacharya

Week 11: Minimum Spanning trees

Algorithms and Theory of Computation. Lecture 5: Minimum Spanning Tree

2.1 Greedy Algorithms. 2.2 Minimum Spanning Trees. CS125 Lecture 2 Fall 2016

Context: Weighted, connected, undirected graph, G = (V, E), with w : E R.

Algorithms and Theory of Computation. Lecture 5: Minimum Spanning Tree

Algorithm Design and Analysis

CSE 431/531: Analysis of Algorithms. Greedy Algorithms. Lecturer: Shi Li. Department of Computer Science and Engineering University at Buffalo

CIS 121 Data Structures and Algorithms Minimum Spanning Trees

2pt 0em. Computer Science & Engineering 423/823 Design and Analysis of Algorithms. Lecture 04 Minimum-Weight Spanning Trees (Chapter 23)

Minimum Spanning Trees Outline: MST

CHAPTER 23. Minimum Spanning Trees

Minimum Spanning Trees and Prim s Algorithm

CS 561, Lecture 10. Jared Saia University of New Mexico

CSE331 Introduction to Algorithms Lecture 15 Minimum Spanning Trees

Algorithms and Data Structures: Minimum Spanning Trees (Kruskal) ADS: lecture 16 slide 1

CSE 431/531: Algorithm Analysis and Design (Spring 2018) Greedy Algorithms. Lecturer: Shi Li

CS 5321: Advanced Algorithms Minimum Spanning Trees. Acknowledgement. Minimum Spanning Trees

Minimum Spanning Tree (undirected graph)

CS473-Algorithms I. Lecture 13-A. Graphs. Cevdet Aykanat - Bilkent University Computer Engineering Department

Part VI Graph algorithms. Chapter 22 Elementary Graph Algorithms Chapter 23 Minimum Spanning Trees Chapter 24 Single-source Shortest Paths

Minimum Spanning Trees

Dijkstra s algorithm for shortest paths when no edges have negative weight.

Minimum Spanning Trees

Graph Theory. ICT Theory Excerpt from various sources by Robert Pergl

CS 4349 Lecture October 23rd, 2017

CS 4349 Lecture October 18th, 2017

1 Start with each vertex being its own component. 2 Merge two components into one by choosing the light edge

looking ahead to see the optimum

Greedy Algorithms Part Three

Representations of Weighted Graphs (as Matrices) Algorithms and Data Structures: Minimum Spanning Trees. Weighted Graphs

Graphs and Network Flows ISE 411. Lecture 7. Dr. Ted Ralphs

Solutions to relevant spring 2000 exam problems

CS161 - Minimum Spanning Trees and Single Source Shortest Paths

Algorithm Design (8) Graph Algorithms 1/2

What is a minimal spanning tree (MST) and how to find one

Design and Analysis of Algorithms

CSC 8301 Design & Analysis of Algorithms: Kruskal s and Dijkstra s Algorithms

Minimum Spanning Trees. Minimum Spanning Trees. Minimum Spanning Trees. Minimum Spanning Trees

Lecture 10: Analysis of Algorithms (CS ) 1

Definition: A graph G = (V, E) is called a tree if G is connected and acyclic. The following theorem captures many important facts about trees.

Graph Algorithms. Definition

Example of why greedy step is correct

Lecture Summary CSC 263H. August 5, 2016

We ve done. Introduction to the greedy method Activity selection problem How to prove that a greedy algorithm works Fractional Knapsack Huffman coding

managing an evolving set of connected components implementing a Union-Find data structure implementing Kruskal s algorithm

20 Minimum Spanning Trees

Lecture 4: Graph Algorithms

G205 Fundamentals of Computer Engineering. CLASS 21, Mon. Nov Stefano Basagni Fall 2004 M-W, 1:30pm-3:10pm

Elementary Graph Algorithms: Summary. Algorithms. CmSc250 Intro to Algorithms

Algorithms for Minimum Spanning Trees

Complexity of Prim s Algorithm

Analysis of Algorithms, I

Minimum Spanning Trees

Minimum Trees. The problem. connected graph G = (V,E) each edge uv has a positive weight w(uv)

1 Minimum Spanning Trees: History

Introduction to Graph Theory

Chapter 9 Graph Algorithms

11/22/2016. Chapter 9 Graph Algorithms. Introduction. Definitions. Definitions. Definitions. Definitions

Chapter 9 Graph Algorithms

Adjacent: Two distinct vertices u, v are adjacent if there is an edge with ends u, v. In this case we let uv denote such an edge.

Unit 2: Algorithmic Graph Theory

Minimum Spanning Tree

1 Minimum Spanning Trees (MST) b 2 3 a. 10 e h. j m

CS200: Graphs. Prichard Ch. 14 Rosen Ch. 10. CS200 - Graphs 1

Advanced algorithms. topological ordering, minimum spanning tree, Union-Find problem. Jiří Vyskočil, Radek Mařík 2012

COMP 355 Advanced Algorithms

Prim & Kruskal Algorithm

Minimum Spanning Trees. 7.1 Distinct Edge Weights

Transcription:

CS 561, Lecture 9 Jared Saia University of New Mexico

Today s Outline Minimum Spanning Trees Safe Edge Theorem Kruskal and Prim s algorithms Graph Representation 1

Graph Definition A graph is a pair of sets (V, E). We call V the vertices of the graph E is a set of vertex pairs which we call the edges of the graph. In an undirected graph, the edges are unordered pairs of vertices and in a directed graph, the edges are ordered pairs. We assume that there is never an edge from a vertex to itself (no self-loops) and that there is at most one edge from any vertex to any other (no multi-edges) V is the number of vertices in the graph and E is the number of edges 2

Graph Defns A graph G = (V, E ) is a subgraph of G = (V, E) if V V and E E If (u, v) is an edge in a graph, then u is a neighbor of v For a vertex v, the degree of v, deg(v), is equal to the number of neighbors of v A path is a sequence of edges, where each successive pair of edges shares a vertex A graph is connected if there is a path from any vertex to any other vertex A disconnected graph consists of several connected components which are maximal connected subgraphs Two vertices are in the same component if and only if there is a path between them 3

Graph Defns For undirected graphs: A cycle is a path that starts and ends at the same vertex and has at least 3 edges A graph is acyclic if no subgraph is a cycle. Acyclic graphs are also called forests A tree is a connected acyclic graph. It s also a connected component of a forest. A spanning tree of a graph G is a subgraph that is a tree and also contains every vertex of G. A graph can only have a spanning tree if it s connected A spanning forest of G is a collection of spanning trees, one for each connected component of G 4

Minimum Spanning Tree Problem Suppose we are given a connected, undirected weighted graph That is a graph G = (V, E) together with a function w : E R that assigns a weight w(e) to each edge e. (We assume the weights are real numbers) Our task is to find the minimum spanning tree of G, i.e., the spanning tree T minimizing the function w(t ) = e T w(e) 5

Example 8 5 10 2 3 18 16 12 30 14 4 26 eighted graph and its minimum spanning tree A weighted graph and its minimum spanning tree 6

Applications Creating an inexpensive road network to connect cities Wiring up homes for phone service with the smallest amount of wire Finding a good approximation to the TSP problem 7

Generic MST Algorithm Generic-MST(G,w){ A = {}; while (A does not form a spanning tree){ find an edge (u,v) that is safe for A; A = A union (u,v); } return A; } 8

Safe edges - Definition Let A be any subset of edges in G that is a subset of some MST of G An edge e is safe for A if A {e} is also a subset of a MST. 9

Safe edges A cut (S, V S) of a graph G = (V, E) is a partition of V An edge (u, v) crosses the cut (S, V S) if one of its endpoints is in S and the other is in V S A cut respects a set of edges A if no edge in A crosses the cut. An edge is a light edge crossing a cut if its weight is the minimum of any edge crossing the cut 10

Theorem Let G = (V, E) be a connected, undirected graph with a realvalued weight function w defined on E. Let A be a subset of E that is included in some minimum spanning tree for G. Let (S, V S) be any cut of G that respects A and let (u, v) be a light edge crossing (S, V S). Then edge (u, v) is safe for A 11

Proof Let T be a MST that includes some set of edges A Assume that T does not contain the light edge e = (u, v) Since T is connected, it contains a unique path from u to v and at least one edge e on this path crosses the cut that respects A Note that w(e) w(e ) by assumption Removing e from the MST and adding e gives us a new spanning tree T T has total weight no more than T and this T must also be a MST. QED. 12

Example u e e v Proving that every safe edge is some minimum spanning t Proof that every safe edge is in some MST. The red edges are the set A. 13

Corollary Let G = (V, E) be a connected, undirected graph with a realvalued weight function w defined on E. Let A be a subset of E that is included in some minimum spanning tree for G, and let C = (V c, E c ) be a connected component (tree) in the forest G A = (V, A). If (u, v) is a light edge connecting C to some other component in G A, then (u, v) is safe for A Proof: The cut (V C, V V C ) respects A, and (u, v) is a light edge for this cut. Therefore (u, v) is safe for A. 14

Two MST algorithms There are two major MST algorithms, Kruskal s and Prim s In Kruskal s algorithm, the set A is a forest. The safe edge added to A is always a least-weighted edge in the graph that connects two distinct components In Prim s algorithm, the set A forms a single tree. The safe edge added to A is always a least-weighted edge connecting the tree to a vertex not in the tree 15

Kruskal s Algorithm Q: In Kruskal s algorithm, how do we determine whether or not an edge connects two distinct connected components? A: We need some way to keep track of the sets of vertices that are in each connected components and a way to take the union of these sets when adding a new edge to A merges two connected components What we need is the data structure for maintaining disjoint sets (aka Union-Find) that we discussed last week 16

Kruskal s Algorithm MST-Kruskal(G,w){ for (each vertex v in V) Make-Set(v); sort the edges of E into nondecreasing order by weight; for (each edge (u,v) in E taken in nondecreasing order){ if(find-set(u)!=find-set(v)){ A = A union (u,v); Set-Union(u,v); } } return A; } 17

Example Run Example Run 8 5 10 2 3 18 16 12 30 8 5 10 18 16 12 30 14 3 4 26 8 5 10 18 16 12 30 14 4 26 8 5 10 18 16 12 30 14 26 18 8 12 14 10 30 26 16 14 4 26 10 18 30 16 18 30 16 18 12 30 16 18 12 30 16 14 14 14 26 26 26 26 18 30 30 30 26 26 Kruskal s algorithmrun runononthe the example graph. Thick edgesare arein ina. A. Dashed edgesare are useless. 18 18

Correctness? Correctness of Kruskal s algorithm follows immediately from the corollary Each time we add the lightest weight edge that connects two connected components, hence this edge must be safe for A This implies that at the end of the algorith, A will be a MST 19

Runtime? The runtime for Kruskal s alg. will depend on the implementation of the disjoint-set data structure. We ll assume the implementation with union-by-rank and path-compression which we showed has amortized cost of log n 20

Runtime? Time to sort the edges is O( E log E ) Total amount of time for the V Make-Sets and up to E Set-Unions is O(( V + E ) log V ) Since G is connected, E V 1 and so O(( V + E ) log V ) = O( E log V ) = O( E log E ) Total amount of additional work done in the for loop is just O(E) Thus total runtime of the algorithm is O( E log E ) Since E V 2, we can rewrite this as O( E log V ) 21

Prim s Algorithm In Prim s algorithm, the set A maintained by the algorithm forms a single tree. The tree starts from an arbitrary root vertex and grows until it spans all the vertices in V At each step, a light edge is added to the tree A which connects A to an isolated vertex of G A = (V, A) By our Corollary, this rule adds only safe edges to A, so when the algorithm terminates, it will return a MST 22

22 Example Run Example Run 8 5 10 2 3 18 16 12 30 18 8 5 10 12 2 3 30 16 8 5 10 2 3 18 16 30 8 5 10 3 30 16 14 14 4 26 26 26 26 8 5 30 16 30 16 26 26 Prim s algorithm run on the example graph, starting with the bottom vertex. bottom vertex. At each stage, thick edges are in A, an arrow points along A s safe edge, and dashed edges are useless. Prim s algorithm run on the example graph, starting with the At each stage, thick edges are in A, an arrow points along A s safe edge, and dashed edges are useless. 23 23

An Implementation To implement Prim s algorithm, we keep all edges adjacent to A in a heap When we pull the minimum-weight edge off the heap, we first check to see if both its endpoints are in A If not, we add the edge to A and then add the neighboring edges to the heap If we implement Prim s algorithm this way, its running time is O( E log E ) = O( E log V ) However, we can do better 24

Prim s Algorithm We can speed things up by noticing that the algorithm visits each vertex only once Rather than keeping the edges in the heap, we will keep a heap of vertices, where the key of each vertex v is the weight of the minimum-weight edge between v and A (or infinity if there is no such edge) Each time we add a new edge to A, we may need to decrease the key of some neighboring vertices 25

Prim s We will break up the algorithm into two parts, Prim-Init and Prim-Loop Prim(V,E,s){ Prim-Init(V,E,s); Prim-Loop(V,E,s); } 26

Prim-Init Prim-Init(V,E,s){ for each vertex v in V - {s}{ if ((v,s) is in E){ edge(v) = (v,s); key(v) = w((v,s)); }else{ edge(v) = NULL; key(v) = infinity; } Heap-Insert(v); } Heap-Insert(s); } 27

Prim-Loop Prim-Loop(V,E,s){ A = {}; for (i = 1 to V - 1){ v = Heap-ExtractMin(); add edge(v) to A; for (each edge (u,v) in E){ if ((u,v) is not in A AND key(u) > w(u,v)){ edge(u) = (u,v); Heap-DecreaseKey(u,w(u,v)); } } } return A; } 28

Runtime? The runtime of Prim s is dominated by the cost of the heap operations Insert, ExtractMin and DecreaseKey Insert and ExtractMin are each called O( V ) times DecreaseKey is called O( E ) times, at most twice for each edge If we use a Fibonacci Heap, the amortized costs of Insert and DecreaseKey is O(1) and the amortized cost of ExtractMin is O(log V ) Thus the overall run time of Prim s is O( E + V log V ) This is faster than Kruskal s unless E = O( V ) 29

Note This analysis assumes that it is fast to find all the edges that are incident to a given vertex We have not yet discussed how we can do this This brings us to a discussion of how to represent a graph in a computer 30

Graph Representation There are two common data structures used to explicity represent graphs Adjacency Matrices Adjacency Lists 31

Adjacency Matrix The adjacency matrix of a graph G is a V V matrix of 0 s and 1 s For an adjacency matrix A, the entry A[i, j] is 1 if (i, j) E and 0 otherwise For undirectd graphs, the adjacency matrix is always symmetric: A[i, j] = A[j, i]. Also the diagonal elements A[i, i] are all zeros 32

Example Graph b d h a f g c e i 33

Example Representations a b c d e f g h i a 0 1 1 0 0 0 0 0 0 b 1 0 1 1 1 0 0 0 0 c 1 1 0 1 1 0 0 0 0 d 0 1 1 0 1 1 0 0 0 e 0 1 1 1 0 1 0 0 0 f 0 0 0 1 1 0 0 0 0 g 0 0 0 0 0 0 0 1 0 h 0 0 0 0 0 0 1 0 1 i 0 0 0 0 0 0 1 1 0 Adjacency matrix and adjacency list representations for the example graph. 34

Adjacency Matrix Given an adjacency matrix, we can decide in Θ(1) time whether two vertices are connected by an edge. We can also list all the neighbors of a vertex in Θ( V ) time by scanning the row corresponding to that vertex This is optimal in the worst case, however if a vertex has few neighbors, we still need to examine every entry in the row to find them all Also, adjacency matrices require Θ( V 2 ) space, regardless of how many edges the graph has, so it is only space efficient for very dense graphs 35

Adjacency Lists For sparse graphs graphs with relatively few edges we re better off with adjacency lists An adjacency list is an array of linked lists, one list per vertex Each linked list stores the neighbors of the corresponding vertex 36

Adjacency Lists The total space required for an adjacency list is O( V + E ) Listing all the neighbors of a node v takes O(1+deg(v)) time We can determine if (u, v) is an edge in O(1 + deg(u)) time by scanning the neighbor list of u Note that we can speed things up by storing the neighbors of a node not in lists but rather in hash tables Then we can determine if an edge is in the graph in expected O(1) time and still list all the neighbors of a node v in O(1 + deg(v)) time 37