1 / 37

CSE 421 Algorithms

This lecture delves into minimum spanning trees, shortest paths, negative cost edges, Dijkstra's algorithm, and greedy algorithms for solving these problems. Topics covered include bottleneck distance, Prim’s and Kruskal’s algorithms, and their proofs. The lecture also explains why greedy algorithms work in finding minimum spanning trees.

uy
Download Presentation

CSE 421 Algorithms

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 421Algorithms Richard Anderson Lecture 10-11 Minimum Spanning Trees

  2. 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

  3. 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).

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

  5. 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

  6. Dijkstra’s Algorithmfor 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

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

  8. 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

  9. 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 Greedy Algorithms for Minimum Spanning Tree 4 b c 20 5 11 8 a d 7 22 e

  10. Greedy Algorithm 1Prim’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

  11. Greedy Algorithm 2Kruskal’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

  12. Greedy Algorithm 3Reverse-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

  13. Why do the greedy algorithms work? • For simplicity, assume all edge costs are distinct • 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

  14. 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

  15. Optimality Proofs • Prim’s Algorithm computes a MST • Kruskal’s Algorithm computes a MST

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

  17. 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

  18. Dijkstra’s Algorithmfor 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

  19. Minimum Spanning Tree Undirected Graph G=(V,E) with edge weights 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

  20. [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 Greedy Algorithms for Minimum Spanning Tree 4 b c 20 5 11 8 a d 7 22 e

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

  22. 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

  23. 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

  24. 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.

  25. 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

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

  27. 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

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

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

  30. 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

  31. 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

  32. 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}

  33. Divide into 2 clusters

  34. Divide into 3 clusters

  35. Divide into 4 clusters

  36. 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

  37. K-clustering

More Related