To help in
motivation, the lectures are organized around problems instead of
techniques. We usually devote more than a lecture to each problem and
then explore different ideas to devise an efficient algorithm. Along
the way, we will indeed encounter new design techniques and variations
on the analysis model (themes like amortization, randomization,
approximation, online computation, etc., as promised in the handbook
description), but the main emphasis is how to think
about problems.
Lecture Topics:
(this list of specific problems is subject to change; though the
techniques as given in the course outline will all be covered ...
through at least one application)
Problem of Sept 14,16:
Finding triangles in graphs and transitive closure
This topic gives the opportunity to review a number of
basic algorithm design techniques/issues in the context of developing
methods
for determining the number of triangles in a graph. These include
divide and conquer, NP-hardness and reductions..
Problem of
Sept 21, 23: Optimal binary search trees This
topic gives the opportunity to review dynamic programming, taking
advantage of a "telescoping series" that improves runtime, (amazingly
good) greedy approximation algorithms and amortized runtime.
Recursive and dynamic programming solutions;
reducing O(n3) solution to O(n2)
Quality of solution in terms of entropy of the
distribution