cpsc 320: intermediate algorithm design & analysis greedy algorithms and graphs steve wolfman 1
TRANSCRIPT
![Page 1: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/1.jpg)
1
CPSC 320: Intermediate Algorithm Design & Analysis
Greedy Algorithms and GraphsSteve Wolfman
![Page 2: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/2.jpg)
2
Problem-Solving Approaches
Many problems can be solved by the same broad style of approach. We’ll run into several of these styles:– Input consuming (like insertion sort)– Output producing (like selection sort)– Divide-and-Conquer (like merge sort)– Greedy (like change-making)– Dynamic Programming
![Page 3: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/3.jpg)
3
Optimization Problems
In an optimization problem, we want to report a* best answer according to some metric (i.e., a function that maps correct solutions to their value, where lower values are better).
Example: coin changing. Given an amount of change to make, give that amount of change with the fewest coins.
* Why do we say “a best answer” and not “the best answer”?
![Page 4: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/4.jpg)
4
Greedy (and not) Coin Changing
• Coin changing with Cdn coins: penny, nickel, dime, quarter– Repeatedly add the largest coin that “fits” in the
change remaining to be made.• Coin changing with Cdn coins but no nickels:
penny, dime, quarter– Does the algorithm above work? (Try $0.30.)
• Coin changing with Cdn coins plus the bauxel:penny, nickel, dime, bauxel ($0.15), quarter– Is there only one best solution? (Try $0.30.)
![Page 5: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/5.jpg)
5
Greedy Algorithms
• Repeatedly make the “locally best choice” until the choices form a complete solution.
![Page 6: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/6.jpg)
6
More Greedy (or not) Problems
• Activity Selection• Minimum Spanning Tree• Shortest Path
The latter two are graph problems; so, some graph review is in order...
![Page 7: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/7.jpg)
7
Interesting Properties for Greedy Algorithms
• Optimal substructure: An optimal solution to the problem is composed of pieces which are themselves optimal solutions to subproblems.
• Greedy-choice property: locally optimal (greedy) choices can be extended to a globally optimal solution.
![Page 8: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/8.jpg)
Graph ADTGraphs are a formalism useful for representing
relationships between things– a graph G is represented as G = (V, E)
• V is a set of vertices: {v1, v2, …, vn}
• E is a set of edges: {e1, e2, …, em} where each ei connects two vertices (vi1, vi2)
– operations might include:• creation (with a certain number of vertices)• inserting/removing edges• iterating over vertices adjacent to a specific vertex• asking whether an edge exists connecting two vertices
Han
Leia
Luke
V = {Han, Leia, Luke}E = {(Luke, Leia), (Han, Leia), (Leia, Han)}
8
![Page 9: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/9.jpg)
Graph Applications
• Storing things that are graphs by nature– distance between cities– airline flights, travel options– relationships between people, things– distances between rooms in Clue
• Compilers– callgraph - which functions call which others– dependence graphs - which variables are defined and
used at which statements
• Others: mazes, circuits, class hierarchies, horses, networks of computers or highways or…
9
![Page 10: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/10.jpg)
Graph Representations
• 2-D matrix of vertices (marking edges in the cells)“adjacency matrix”
• List of vertices each with a list of adjacent vertices“adjacency list”
Han
Leia
Luke
10
![Page 11: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/11.jpg)
Adjacency Matrix
A |V| x |V| array in which an element (u, v) is true if and only if there is an edge from u to v
Han
Leia
Luke
Han Luke Leia
Han
Luke
Leia
runtime for various operations? space requirements: 11
![Page 12: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/12.jpg)
Adjacency List
A |V|-ary list (array) in which each entry stores a list (linked list) of all adjacent vertices
Han
Leia
LukeHan
Luke
Leia
space requirements: 12runtime for various operations?
![Page 13: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/13.jpg)
Directed vs. Undirected Graphs
• Adjacency lists and matrices both work fine to represent directed graphs.
• To represent undirected graphs, either ensure that both orderings of every edge are included in the representation or ensure that the order doesn’t matter (e.g., always use a “canonical” order), which works poorly in adjacency lists.
13
![Page 14: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/14.jpg)
Weighted Graphs
20
30
35
60
Mukilteo
Edmonds
Seattle
Bremerton
Bainbridge
Kingston
Clinton
As far as we’re concerned, weight is a function from the set of nodes to the reals.
Each edge has an associated weight or cost.
14
![Page 15: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/15.jpg)
Unweighted Shortest Path Problem
Assume source vertex is C…
A
C
B
D
F H
G
E
Distance to: A B C D E F G H
![Page 16: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/16.jpg)
Weighted Shortest Path
A
C
B
D
F H
G
E
2 2 3
21
1
410
8
11
94
2
7
![Page 17: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/17.jpg)
Spanning tree: a subset of the edges from a connected graph that……touches all vertices in the graph (spans the graph)…forms a tree (is connected and contains no cycles)
Minimum spanning tree: the spanning tree with the least total edge cost.
Spanning Tree
4 7
1 5
9
2
![Page 18: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/18.jpg)
Prim’s Algorithm Sample Graph
A
C
B
D
F H
G
E
2 2 3
21
4
10
8
194
2
7
![Page 19: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/19.jpg)
Kruskal’s Algorithm Sample Graph
A
C
B
D
F H
G
E
2 2 3
21
4
10
8
194
2
7
![Page 20: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/20.jpg)
20
What’s Next?
• Dynamic Programming: CLRS Chapter 15
![Page 21: CPSC 320: Intermediate Algorithm Design & Analysis Greedy Algorithms and Graphs Steve Wolfman 1](https://reader036.vdocuments.site/reader036/viewer/2022062422/56649f175503460f94c2e086/html5/thumbnails/21.jpg)
21
On Your Own
• Review graphs• Practice designing and analyzing greedy
algorithms for optimality/performance.• Play around with problems to see when small
changes can keep a greedy algorithm from working (like dropping nickels from coin changing).