# 辅导案例-CMPS 102

CMPS 102 Final Exam Information, Spring 2020 version 1.0
The 102 Final exam will be held on Tuesday June 9 from 8:30 to 11 am (2 1/2 hours)
on Canvas. The Final will start at 8:30am.
The exam will have 4 questions, one multi-part short answer question, one greedy algo-
rithm algorithm design question, one divide and conquer algorithm design question, and one
dynamic programming algorithm design question. The three algorithm design questions are
intended to be about the difficulty of the easier homework problems and are often somewhat
related to problems you would have seen in class or on the homework.
The final exam will be comprehensive. In addition to the homework and quiz problems,
you are also responsible for the following from lecture and/or the textbook:
1. Chapter 1 (Stable matching),
2. Chapter 2 (Basic algorithm analysis, asymptotic notation, priority queues, proofs by
induction),
3. Chapter 3 (Graph definitions, Graph representations, BFS and DFS traversals and
their runtimes),
4. Chapter 5 (Divide and conquer):
• Mergesort, mergesort recurrence, merging lists
• recursion tree method of finding the (asymptotic) value of a recurrence
• bounding a recurrence with a formal proof by induction
• The common recurrence forms in Chapter 5
• Divide and Conquer example algorithms: Counting inversions; closest pair of
points in the plane; integer multiplication (Karatsuba); Matrix Multiplication
(Strassen); FFTs and their use for converting between representations of polyno-
mials.
5. Chapter 4 (Greedy algorithms)
• Examples: Interval Scheduling, Selecting breakpoints (Tesla charging stations),
Interval partitioning (classroom scheduling), Scheduling to minimize maximum
lateness, Optimal caching, Dijkstra’s Algorithm, Minimum Cost Spanning Trees
(Prim’s and Kruskal’s algorithms).
• Concepts: Greedy stays ahead, Morphing an arbitrary optimal solution into the
greedy solution, directly showing greedy is optimal (as in classroom scheduling),
finding counterexamples showing that a greedy algorithm can fail to produce an
optimal solution.
6. Chapter 6 (Dynamic Programming)
• Methodology: focus on value first. Look at solutions and try and find a ”last deci-
sion”. Find which subproblems an optimal solution contains (optimal) solutions
for, derive a recurrence for the optimal value. Envision a recursive algorithm,
add memoization for efficiency, and convert to a bottom-up iterative table-filling
algorithm. See how to trace back through the table to recover an optimal solution.
• Weighted interval scheduling (binary choice)
• Segmented least squares (multi-way choice)  