Autumn 2015 Lecture 10 Minimum Spanning Trees

Slides:



Advertisements
Similar presentations
The Greedy Approach Chapter 8. The Greedy Approach It’s a design technique for solving optimization problems Based on finding optimal local solutions.
Advertisements

Minimum Spanning Tree Algorithms
CSE 421 Algorithms Richard Anderson Dijkstra’s algorithm.
Greedy Algorithms Reading Material: Chapter 8 (Except Section 8.5)
CSE 421 Algorithms Richard Anderson Lecture 10 Minimum Spanning Trees.
1 CSE 417: Algorithms and Computational Complexity Winter 2001 Lecture 10 Instructor: Paul Beame.
Lecture 27 CSE 331 Nov 3, Combining groups Groups can unofficially combine in the lectures.
Greedy Algorithms Like dynamic programming algorithms, greedy algorithms are usually designed to solve optimization problems Unlike dynamic programming.
1 CSE 417: Algorithms and Computational Complexity Winter 2001 Lecture 11 Instructor: Paul Beame.
Lecture 27 CSE 331 Nov 6, Homework related stuff Solutions to HW 7 and HW 8 at the END of the lecture Turn in HW 7.
Minimum Spanning Trees. Subgraph A graph G is a subgraph of graph H if –The vertices of G are a subset of the vertices of H, and –The edges of G are a.
TECH Computer Science Graph Optimization Problems and Greedy Algorithms Greedy Algorithms  // Make the best choice now! Optimization Problems  Minimizing.
Minimal Spanning Trees What is a minimal spanning tree (MST) and how to find one.
9/10/10 A. Smith; based on slides by E. Demaine, C. Leiserson, S. Raskhodnikova, K. Wayne Adam Smith Algorithm Design and Analysis L ECTURE 8 Greedy Graph.
Theory of Computing Lecture 10 MAS 714 Hartmut Klauck.
Algorithms: Design and Analysis Summer School 2013 at VIASM: Random Structures and Algorithms Lecture 3: Greedy algorithms Phan Th ị Hà D ươ ng 1.
Graph (II) Shortest path, Minimum spanning tree GGuy
SPANNING TREES Lecture 21 CS2110 – Spring
Lecture 19 Greedy Algorithms Minimum Spanning Tree Problem.
Graphs. Definitions A graph is two sets. A graph is two sets. –A set of nodes or vertices V –A set of edges E Edges connect nodes. Edges connect nodes.
Minimum spanning trees (MST) Def: A spanning tree of a graph G is an acyclic subset of edges of G connecting all vertices in G. A sub-forest of G is an.
Introduction to Graph Theory
SPANNING TREES Lecture 20 CS2110 – Fall Spanning Trees  Definitions  Minimum spanning trees  3 greedy algorithms (incl. Kruskal’s & Prim’s)
CSEP 521 Applied Algorithms Richard Anderson Winter 2013 Lecture 4.
CSEP 521 Applied Algorithms Richard Anderson Winter 2013 Lecture 3.
CSE 421 Algorithms Richard Anderson Lecture 8 Optimal Caching Dijkstra’s algorithm.
CSCI-256 Data Structures & Algorithm Analysis Lecture Note: Some slides by Kevin Wayne. Copyright © 2005 Pearson-Addison Wesley. All rights reserved. 11.
Data Structures and Algorithms I Day 19, 11/3/11 Edge-Weighted Graphs
Introduction to Algorithms
Shortest Paths and Minimum Spanning Trees
Minimum Spanning Trees
CSE373: Data Structures & Algorithms
Greedy Algorithms / Minimum Spanning Tree Yin Tat Lee
CS 3343: Analysis of Algorithms
Three Graph Algorithms
Autumn 2016 Lecture 11 Minimum Spanning Trees (Part II)
Graph Algorithm.
Minimum-Cost Spanning Tree
Lecture 24 CSE 331 Oct 28, 2016.
Lecture 24 CSE 331 Oct 27, 2017.
Autumn 2015 Lecture 11 Minimum Spanning Trees (Part II)
Autumn 2016 Lecture 9 Dijkstra’s algorithm
Autumn 2015 Lecture 9 Dijkstra’s algorithm
Data Structures – LECTURE 13 Minumum spanning trees
Richard Anderson Lecture 11 Minimum Spanning Trees
Richard Anderson Lecture 9 Dijkstra’s algorithm
Richard Anderson Lecture 9 Dijkstra’s algorithm
Lecture 26 CSE 331 Nov 2, 2012.
Minimum Spanning Tree Algorithms
Shortest Paths and Minimum Spanning Trees
Lecture 25 CSE 331 Oct 27, 2014.
Richard Anderson Lecture 10 Minimum Spanning Trees
Lecture 14 Shortest Path (cont’d) Minimum Spanning Tree
CSE 373: Data Structures and Algorithms
Weighted Graphs & Shortest Paths
Autumn 2016 Lecture 10 Minimum Spanning Trees
Winter 2019 Lecture 9 Dijkstra’s algorithm
CSE 417: Algorithms and Computational Complexity
Winter 2019 Lecture 11 Minimum Spanning Trees (Part II)
Lecture 25 CSE 331 Oct 28, 2011.
Spanning Trees Lecture 20 CS2110 – Spring 2015.
Winter 2019 Lecture 10 Minimum Spanning Trees
CSE 373: Data Structures and Algorithms
Lecture 14 Minimum Spanning Tree (cont’d)
CSE 332: Minimum Spanning Trees
Lecture 13 Shortest Path (cont’d) Minimum Spanning Tree
Minimum-Cost Spanning Tree
More Graphs Lecture 19 CS2110 – Fall 2009.
Autumn 2019 Lecture 9 Dijkstra’s algorithm
Autumn 2019 Lecture 11 Minimum Spanning Trees (Part II)
Presentation transcript:

Autumn 2015 Lecture 10 Minimum Spanning Trees CSE 421 Algorithms Autumn 2015 Lecture 10 Minimum Spanning Trees

Dijkstra’s Algorithm Implementation and Runtime Edge costs are assumed to be non-negative Dijkstra’s Algorithm Implementation and Runtime S = {}; d[s] = 0; d[v] = infinity for v != s While S != V Choose v in V-S with minimum d[v] Add v to S For each w in the neighborhood of v d[w] = min(d[w], d[v] + c(v, w)) y u a HEAP OPERATIONS n Extract Mins m Heap Updates s x v b z

Shortest Paths Negative Cost Edges Dijkstra’s algorithm assumes positive cost edges For some applications, negative cost edges make sense Shortest path not well defined if a graph has a negative cost cycle a 6 4 -4 4 e -3 c s -2 3 3 2 6 g b f 4 7

Negative Cost Edge Preview Topological Sort can be used for solving the shortest path problem in directed acyclic graphs Bellman-Ford algorithm finds shortest paths in a graph with negative cost edges (or reports the existence of a negative cost cycle).

Bottleneck Shortest Path Define the bottleneck distance for a path to be the maximum cost edge along the path u 5 4 s x 4 6 5 3 v

Compute the bottleneck shortest paths 6 d d 6 a a 5 4 4 4 e e -3 c c s -2 s 3 3 2 5 g g b b 7 7 f f

Dijkstra’s Algorithm for Bottleneck Shortest Paths S = {}; d[s] = negative infinity; d[v] = infinity for v != s While S != V Choose v in V-S with minimum d[v] Add v to S For each w in the neighborhood of v d[w] = min(d[w], max(d[v], c(v, w))) 3 y 4 u a 1 2 4 3 s x 1 1 2 v 5 3 b 4 z

Minimum Spanning Tree Introduce Problem Demonstrate three different greedy algorithms Provide proofs that the algorithms work

Minimum Spanning Tree 15 t a 6 9 14 3 4 e 10 13 c s 11 20 5 17 2 7 g b 8 f 22 u 12 1 16 v

Greedy Algorithms for Minimum Spanning Tree Extend a tree by including the cheapest out going edge Add the cheapest edge that joins disjoint components Delete the most expensive edge that does not disconnect the graph 4 b c 20 5 11 8 a d 7 22 e

Greedy Algorithm 1 Prim’s Algorithm Extend a tree by including the cheapest out going edge 15 t a 6 14 3 9 4 e 10 13 c s 11 20 5 Construct the MST with Prim’s algorithm starting from vertex a Label the edges in order of insertion 17 2 7 g b 8 f 22 u 12 1 16 v

Greedy Algorithm 2 Kruskal’s Algorithm Add the cheapest edge that joins disjoint components 15 t a 6 14 3 9 4 e 10 13 c s 11 20 5 17 2 7 Construct the MST with Kruskal’s algorithm Label the edges in order of insertion g b 8 f 22 u 12 1 16 v

Greedy Algorithm 3 Reverse-Delete Algorithm Delete the most expensive edge that does not disconnect the graph 15 t a 6 14 3 9 4 e 10 13 c s 11 20 5 17 2 7 Construct the MST with the reverse-delete algorithm Label the edges in order of removal g b 8 f 22 u 12 1 16 v

Dijkstra’s Algorithm for Minimum Spanning Trees S = {}; d[s] = 0; d[v] = infinity for v != s While S != V Choose v in V-S with minimum d[v] Add v to S For each w in the neighborhood of v d[w] = min(d[w], c(v, w)) 3 y 4 u a 1 2 4 3 s x 1 1 2 v 5 3 b 4 z

Minimum Spanning Tree Undirected Graph G=(V,E) with edge weights 15 t 6 9 14 3 4 e 10 13 c s 11 20 5 17 2 7 g b 8 f 22 u 12 1 16 v

Greedy Algorithms for Minimum Spanning Tree [Prim] Extend a tree by including the cheapest out going edge [Kruskal] Add the cheapest edge that joins disjoint components [ReverseDelete] Delete the most expensive edge that does not disconnect the graph 4 b c 20 5 11 8 a d 7 22 e

Why do the greedy algorithms work? For simplicity, assume all edge costs are distinct

Edge inclusion lemma Let S be a subset of V, and suppose e = (u, v) is the minimum cost edge of E, with u in S and v in V-S e is in every minimum spanning tree of G Or equivalently, if e is not in T, then T is not a minimum spanning tree e S V - S

Proof Suppose T is a spanning tree that does not contain e e is the minimum cost edge between S and V-S Proof Suppose T is a spanning tree that does not contain e Add e to T, this creates a cycle The cycle must have some edge e1 = (u1, v1) with u1 in S and v1 in V-S T1 = T – {e1} + {e} is a spanning tree with lower cost Hence, T is not a minimum spanning tree S V - S e

Optimality Proofs Prim’s Algorithm computes a MST Kruskal’s Algorithm computes a MST Show that when an edge is added to the MST by Prim or Kruskal, the edge is the minimum cost edge between S and V-S for some set S.

Prim’s Algorithm S = { }; T = { }; while S != V choose the minimum cost edge e = (u,v), with u in S, and v in V-S add e to T add v to S

Prove Prim’s algorithm computes an MST Show an edge e is in the MST when it is added to T

Kruskal’s Algorithm Let C = {{v1}, {v2}, . . ., {vn}}; T = { } while |C| > 1 Let e = (u, v) with u in Ci and v in Cj be the minimum cost edge joining distinct sets in C Replace Ci and Cj by Ci U Cj Add e to T

Prove Kruskal’s algorithm computes an MST Show an edge e is in the MST when it is added to T

Reverse-Delete Algorithm Lemma: The most expensive edge on a cycle is never in a minimum spanning tree

Dealing with the assumption of no equal weight edges Force the edge weights to be distinct Add small quantities to the weights Give a tie breaking rule for equal weight edges

Application: Clustering Given a collection of points in an r-dimensional space, and an integer K, divide the points into K sets that are closest together

Distance clustering Divide the data set into K subsets to maximize the distance between any pair of sets dist (S1, S2) = min {dist(x, y) | x in S1, y in S2}

Divide into 2 clusters

Divide into 3 clusters

Divide into 4 clusters

Distance Clustering Algorithm Let C = {{v1}, {v2},. . ., {vn}}; T = { } while |C| > K Let e = (u, v) with u in Ci and v in Cj be the minimum cost edge joining distinct sets in C Replace Ci and Cj by Ci U Cj

K-clustering