(Latest Revision -- 04/23/2002)
CS 4440 Study Guide for Quiz #2:
Study the homework problems of homework sets 3-4.
- Chapter Seven Material
- Know and understand the definition & characteristics
of divide-and-conquer algorithms. (Refer to the
"general template" on page 223.)
- Know and understand the connection between computing
the work function for a divide-and-conquer algorithm
and the solving of recurrences.
- Know and understand the divide-and-conquer algorithms
in chapter 7.
- Be able to assess and derive the big-theta of the work
functions of the divide-and-conquer algorithms of
chapter 7. (It will not be necessary to produce
formal "proofs" of what the work functions are.)
- Be able to recite, in pseudo-code, the steps of the
divide-and-conquer algorithms in chapter 7.
- Chapter Eight Material
- Know and understand the definition & characteristics
of dynamic programming algorithms.
- Know and understand the bottom-up nature of dynamic
programming versus the top-down nature of
divide-and-conquer.
- Know and understand how dynamic programming allows us
to avoid redundant calculations.
- Know and understand the dynamic programming algorithms
in chapter 8.
- Know and understand how to compute the big-theta of
the work functions of dynamic programming algorithms.
- Know how to "backtrack" through the output of the
change-making algorithm to find the coins required for
an optimal solution.
- Know how to "backtrack" through the output of the 0/1
knapsack algorithm to find the weights taken in an
optimal solution.
- Know how to "backtrack" through the output of Floyd's
algorithm to find the edges of a shortest path.
- Know and understand the principle of optimality and
its relation to dynamic programming problems.
- Know and understand how to get increased efficiency by
combining dynamic programming with a memory function,
virtual intitialization, and a top-down (recursive)
approach.
- Chapter Nine Material
- Know how to set up and mark a game graph for a simple game
- Understand how to make the nodes and edges.
- Know how to mark winning and losing positions
- Know how to find winning moves and losing moves.
- Understand the backtracking technique -- be able to
trace out steps of the backpack(i,r) function of pate
308.
- Understand how to do the assignment problem of pages
312-315.
- Understand the role of the bounding function in the
assignment problem.
- Understand the "General Considerations" in section 9.7.3
Know these algorithms especially well:
- "Selection2" and the algorithms it calls (including pseudomed)
- expoDC
- Making Change
- 0/1 Knapsack
- Floyd's algorithm
For any of the five algorithms above, be able to show what the
algorithm will do in a "walk-through." For example, if I tell
you an input for one of these algorithms, you should be able to
describe, one at a time, the series of changes the algorithm
makes to its data objects, until the algorithm stops, with the
solution to the problem indicated in the values of the data
objects.
if I show you the values of the data objects mid-way through the
execution of one of these algorithms, you should be able to show
me what changes the algorithm will make next to the data objects.