1 / 15

Greedy algorithms

Greedy algorithms. Optimization problems solved through a sequence of choices that are: feasible locally optimal irrevocable Not all optimization problems can be approached in this manner!. Applications of the Greedy Strategy. Optimal solutions: Change making Minimum Spanning Tree (MST)

penny
Download Presentation

Greedy 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. Greedy algorithms Optimization problems solved through a sequence of choices that are: • feasible • locally optimal • irrevocable Not all optimization problems can be approached in this manner! Design and Analysis of Algorithms - Chapter 9

  2. Applications of the Greedy Strategy • Optimal solutions: • Change making • Minimum Spanning Tree (MST) • Single-source shortest paths • Simple scheduling problems • Huffman codes • Approximations: • Traveling Salesman Problem (TSP) • Knapsack problem • Other combinatorial optimization problems Design and Analysis of Algorithms - Chapter 9

  3. 4 3 1 1 6 2 4 2 3 Minimum Spanning Tree (MST) • Spanning tree of a connected graph G: a connected acyclic subgraph of G that includes all of G’s vertices. • Minimum Spanning Tree of a weighted, connected graph G: a spanning tree of G of minimum total weight. • Example: Design and Analysis of Algorithms - Chapter 9

  4. Prim’s MST algorithm • Start with tree consisting of one vertex • Grow tree one vertex/edge at a time to produce MST • Construct a series of expanding subtrees T1, T2, … • At each stage construct Ti+1 from Ti: add minimum weight edge connecting a vertex in tree (Ti) to one not yet in tree • choose from “fringe” edges (this is the greedy step) • Algorithm stops when all vertices are included Design and Analysis of Algorithms - Chapter 9

  5. 4 3 1 1 5 6 a b 2 6 2 4 1 4 2 3 3 7 c d e Examples: Design and Analysis of Algorithms - Chapter 9

  6. Prim’s algorithm formally Algorithm Prim(G) VT {v0} ET { } for i  1 to |V|-1 do find a minimum weight edge e*=(v*,u*) among all the edges (v,u) such that v Є VT and u Є V-VT VT VT∪ {u*} ET ET∪{e*} return ET Design and Analysis of Algorithms - Chapter 9

  7. Notes about Prim’s algorithm • Need to prove that this construction actually yields MST • Need priority queue for locating lowest cost fringe edge: use min-heap • Efficiency: For graph with n vertices and m edges: (n–1+m) log n Θ(m log n) insertion/deletion from min-heap number of stages (min-heap deletions) number of edges considered (min-heap insertions) Design and Analysis of Algorithms - Chapter 9

  8. Another Greedy algorithm for MST: Kruskal • Start with empty forest of trees • Grow MST one edge at a time • intermediate stages usually have forest of trees (not connected) • at each stage add minimum weight edge among those not yet used that does not create a cycle • edges are initially sorted by increasing weight • at each stage the edge may: • expand an existing tree • combine two existing trees into a single tree • create a new tree • need efficient way of detecting/avoiding cycles • algorithm stops when all vertices are included Design and Analysis of Algorithms - Chapter 9

  9. 4 3 1 1 5 6 a b 2 6 2 4 1 4 2 3 3 7 c d e Examples: Design and Analysis of Algorithms - Chapter 9

  10. Kruskal’s algorithm Algorithm Kruskal(G) Sort E in nondecreasing order of the weights ET { }; k  0; ecounter  0 while ecounter < |V|-1 k  k+1 if ET∪{eik} is acyclic ET ET∪{eik} ecounter  ecounter + 1 return ET Design and Analysis of Algorithms - Chapter 9

  11. Notes about Kruskal’s algorithm • Algorithm looks easier than Prim’s but is • harder to implement (checking for cycles!) • less efficient Θ(m log m) • Cycle checking: a cycle exists iff edge connects vertices in the same component. • Union-find algorithms – see section 9.2 Design and Analysis of Algorithms - Chapter 9

  12. Shortest paths-Dijkstra’s algorithm • Single Source Shortest Paths Problem: Given a weighted graph G, find the shortest paths from a source vertex s to each of the other vertices. • Doesn’t work with negative weights • Applicable to both undirected and directed graphs Design and Analysis of Algorithms - Chapter 9

  13. Shortest paths-Dijkstra’s algorithm • Dijkstra’s algorithm: Similar to Prim’s MST algorithm, with the following difference: • Start with tree consisting of one vertex • “grow” tree one vertex/edge at a time to produce MST • Construct a series of expanding subtrees T1, T2, … • Keep track of shortest path from source to each of the vertices in Ti • at each stage construct Ti+1 from Ti: add minimum weight edge connecting a vertex in tree (Ti) to one not yet in tree • choose from “fringe” edges • (this is the “greedy” step!) • algorithm stops when all vertices are included edge (v,w) with lowest d(s,v) + d(v,w) Design and Analysis of Algorithms - Chapter 9

  14. 5 a b 6 2 4 1 3 7 c d e Example: Design and Analysis of Algorithms - Chapter 9

  15. Dijkstra’s algorithm Algorithm Dijkstra(G,s) Initialize(Q) for every vertex v Є V do dv∞; pvnull; Insert(Q,v, dv) ds0; Decrease(Q,s,ds); VT0 for i0 to |V|-1 do u*DeleteMin(Q); VT VT∪{u*} for every vertex u in V-VT that is adjacent to u* do if du*+w(u*,u)<du dudu+w(u*,u); puu*; Decrease(Q,u,du) • Efficiency: Design and Analysis of Algorithms - Chapter 9

More Related