Discussion of possible directions:
(a) lectures/discussion/presentations
on algorithms for specific problems, mainly from CLR advanced topics:
e.g.
string matching, network flow, parallel (multi-processor) algorithms,
computational geometry, randomized algorithms, average-case analysis,
linear programming, cryptography, NP-completeness,
approximation algorithms...
(b) projects/presentations
on empirical study of data structures and algorithms
(ala DIMACS challenges);
(c) lectures/discussions/presentations on mathematical background -
i.e. probability, generating functions, number theory.
Decided priority was (a) then (c) then (b). Only 3 students in class, so expect very interactive classes with student presentations and discussions.
Lecture: Rabin-Karp string matching algorithm.
Why integer flows are important: maximum matching, k-edge and k-vertex connectivity. (Mentioned using DFS to test 2-edge and 2-vertex connectivity.)
Edmonds-Karp (augmenting shortest paths): distances from the source in the residual graph are non-decreasing, each round saturates some edge, each edge is saturated O(V) times. thus at most O(VE) rounds, each round is O(V+E) time.