# CS 45 summary of lectures

Wed Mar 26
Overview of expected background: O-notation, sums, recurrences, induction. Amortized analysis, basic probability. Basic algorithm design techniques: recursion, divide and conquer, dynamic programming... Basic data structures: hashing, balanced search trees, heaps... Basic graph algorithms: DFS, BFS, shortest paths, minimum spanning trees...

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.

Fri Mar 28
Lecture and discussion: Knuth-Morris-Pratt string matching algorithm. Handout: problem set 1, due Wed.
Mon Mar 31
Discussion: multiplicative and additive groups mod N and how to prove basic facts about them (for hwk 1). Lecture: Brief introduction to network flow and matching, Ford-Fulkerson augmenting paths algorithm.
Wed Apr 2
Discussion: homework exercise 1. more on mod-n groups. Proof that for any finite group S and subgroup S', |S'| divides |S|.
Fri Apr 4
Lecture: Network flow, max-flow min-cut theorem. Ford-Fulkerson augmenting paths algorithm.
Wed Apr 9
Discussion: Integer flows --- there are integer maximum flows in networks with integer capacities.

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.

Thu Apr 10
Generic preflow-push algorithm for max flow, example and analysis. Homework 2 handed out, due Friday April 18.
Fri Apr 11
Dinic's algorithm (blocking flows), analysis for unit networks (bipartite matching). O(sqrt(V)) linear-time rounds.
Mon Apr 14
Generating functions. Fibonacci numbers - from a recurrence to a gen. fn. Using partial fractions to get an exact expression for the coefficients. Binary trees - getting generating functions symbolically.
Wed Apr 16
More on generating functions. Handout on generating functions.
Fri Apr 18
Chinese remainder theorem --- to understand the additive group mod n, where n is not prime, factor the group into a product of additive groups mod n_1, mod n_2, ... where the n_i are relatively prime. Homework 3 handed out, due Friday April 25.
Mon Apr 21
RSA encryption. Unproven assumptions behind RSA (relation to NP-hardness). How Alice and Bob can communicate without Eve understanding, even though Eve overhears all their communication. Algorithm and analysis.
Wed Apr 23
Randomization. Discussion of why it is useful: Approximately counting to 2^n with an n-state probabilistic automaton. Zero-sum games (matching pennies) and randomized algorithms (quicksort with random pivot) -- worst-case complexity, randomized worst-case complexity, average-case complexity for hard input distributions. On-line problems (buy or rent skis, caching). Polling.
Fri Apr 25
Primality testing - the Miller-Rabin algorithm, part I. Homework 4 handed out, due Friday May 2.
Mon Apr 28
Primality testing - the Miller-Rabin algorithm, part II.
Wed Apr 30
Basic probability - definitions and terminology.
Fri May 2
Probability continued - balls and bins. Take-home midterm handed out.
Mon May 5
No class - STOC.
Wed May 7
Class cancelled due to illness.
Thu May 8
Probability generating functions, random walks and similar phenomena.
Fri May 9
Statement of Chernoff bound and applications.
Mon May 12
Proof of Chernoff bound.
Wed May 14
linear programming I - geometry of linear constraints: polytopes, vertices; the simplex algorithm: geometric view. Homework 5 handed out, due Mon. May 26.
Fri May 16
linear programming II - the simplex algorithm, example. LP's and duality, examples: max-flow/min-cut, shortest paths. (zero-sum matrix games).
Mon May 19
parallel algorithms I - high-level discussion. examples of parallel machine types: hypercube, fat tree, vector (SIMD). the difficulty of modelling communication costs. formal models of parallel computation: NC (Nick's class - log-depth, poly-processor circuits), PRAM (parallel RAM), the importance of WORK (Processors times Time).
Wed May 21
2-approximation algorithm for weighted Vertex Cover. LP for weighted vertex cover. dual. how a "maximal" dual solution yields a 2-approximate cover.
Fri May 23
parallelizing the 2-approximation algorithm for Vertex Cover. "parallel pie-eating" to find a near-maximal edge packing: each vertex offers its remaining pie uniformly to each edge; each edge eats the min. amount offered by each endpoint from each endpoint.
Mon May 26 (10am and 3pm)
student presentations
Fri May 30 through Tue Jun 3
final exam period

Neal Young <Neal.Young@dartmouth.edu>