CPS 230: Advanced Algorithms

Instructor: Kamesh Munagala
   Fall Semester, 2006

This course will cover algorithm design techniques at a graduate level. Topics include graph algorithms, shortest paths, amortization and search trees, randomization, hashing, fingerprinting, divide and conquer applied to FFT and matrix multiplication, network flows, matchings, stable marriage, linear programming, simplex algorithm, zero-sum gamnes, duality, and NP-Completeness. You need CPS130 or equivalent as a prerequisite.

Assignments and grades are posted via blackboard
Slides that explain the material from the Kleinberg-Tardos book can be found here

Administration: 
Lectures:           Tue/Thu 1:15-2:30   (D106 LSRC)       
Office Hours:    (Kamesh) Wed  13:00-14:30   (D205 LSRC)
                          (Sudheer) Mon 14:00-16:00 (D206 LSRC)

Grading:
Homeworks (30%),  MidTerm (30%), Final (40%). 
This is one of the required courses for the Algorithms area qualifier.
A grade of 60% on the final OR 75% on the midterm to pass the algorithm qualifier requirement.


Course Textbooks (optional):
[CLRS]  Introduction to Algorithms by T. Cormen, C. Leiserson, R. Rivest, and C. Stein. 
[KT]      Algorithm Design  by Jon Kleinberg and Eva Tardos.

Additional Reading: 
(Lec 2)     Buckets, heaps, lists, and monotone priority queues
(Lec 2)     Fibonacci Heaps used to implement Dijkstra's and Prim's algorithms in O(m + n log n) time
(Lec 7)     The Burrows-Wheeler Transform (aka bzip on UNIX): Clever Compression using MTF
(Lec 11)    Skip Graphs -- Peer-to-peer routing using skip lists
(Lec 14)    Survey article on network applications of Bloom filters
(Lec 14)    Consistent Hashing -- One of the key ideas behind Akamai Technologies
(Lec 14)    Distributed hash tables -- Efficient data management in P2P networks
(Lec 14)    Code-division Multiple Access (CDMA) uses "hashing" for wireless communication.
(Lec 20)    Packet switching: Great application of fast table lookups, permutation networks & matchings
(Lec 20)    Stable marriages


Lect.  Date  Topics  Reading List

1

Aug. 29
Graph Algorithms:
Breadth First Search, Topological Sort,
Strongly connected components, Testing bipartiteness
Big-oh notation
KT, Chapter 3
CLRS, Chapter 22

2

Aug. 31
Greedy Algorithms: Spanning trees and shortest paths
Kruskal's,  Prim's, and Dijkstra's Algorithms
Implementation via priority queues
KT, Chapter 4
CLRS, Chapter 23, 24
Slides (MIT)

3

Sep. 5
Dynamic Programming: Shortest path algorithms
Bellman's equations, Bellman-Ford algorithm
Matrix multiplication, Floyd-Warshall algorithms
KT, Chapter 6.8, 6.9
CLRS, Chapter 24, 25
Dynamic Prog. wiki
4
Sep. 7
Space-efficient Dynamic Programming:
Floyd-Warshall, Smith-Waterman algorithms
Hirschberg's implementation via Recursion
KT, Chapter 6.6, 6.7

5

Sep. 12
Data Structures: Amortization, Binary counting
Self-adjusting data structures - I: List Update
Move-to-Front and Competitive analysis
Notes (by Edelsbrunner)
Original paper
Lecture Notes
6
Sep. 14
Search Trees: 2-4 Trees, Red-Black Implementation
Introduction to splaying
Notes (by Edelsbrunner)
Notes (by Lars Arge)
7
Sep. 19
Self-adjusting data structures - II: Splay trees
Notes (by Edelsbrunner)
Notes (by M. X. Goemans)
8 Sep. 21 Data Structures for Disjoint Sets
Analysis of Union find
CLRS, Chapter 21
9 Sep. 26 Recursive search trees: van Emde Boas queues
Randomization:  Linearity of Expectation
Lecture notes (MIT)
KT, Chapter 13
10
Sep. 28
Random Search Trees, Quicksort
CLRS, Chapter 5,7
KT, Chapter 13.3, 13.5
11
Oct. 3
Skip Lists
Perfect Hashing
Original Paper
CLRS, Chapter 11
12
Oct. 5
MIDTERM



FALL BREAK

13
Oct. 12
Universal Hashing
KT, Chapter 13.6
Lecture Notes (Milterson)
14
Oct. 17
Bloom Filters
Rabin-Karp Fingerprinting
Original paper
Scribe notes (MIT)
15
Oct. 19
Divide and Conquer: Integer multiplication
Matrix Multiplication: Strassen's Algorithm
KT, Chapter 5.5
CLRS, Chapter 28
16
Oct. 24
Polynomial multiplication by evaluations
Introduction to the Fourier Transform
CLRS, Chapter 30
KT, Chapter 5.6
17
Oct. 26
The Fast Fourier Transform Algorithm
Permutation networks
CLRS, Chapter 30

18

Oct. 31
Network Flows: The Max-Flow and Min-Cut Problems
The Ford-Fulkerson Augmentation Algorithm
The Max-flow Min-cut Theorem
CLRS, Chapter 26
KT, Chapter 7
19
Nov. 2
The Edmonds-Karp Strongly Polynomial Algorithm
Scaling Algorithms
KT, Chapter 7
Slides (Princeton)

20

Nov. 7
Applications of Max-Flow and Min-Cut
Bipartite Matchings, Disjoint Paths, Circulations
Project Scheduling, Image Segmentation
CLRS, Chapter 26
KT, Chapter 7
21
Nov. 9
Stable Matchings and the Gale-Shapley algorithm
Karger's Global Min-Cut algorithm
KT, Chapter 1

22

Nov. 14
Linear Programming: Expressing Problems as LPs
The Dual Program
Weak LP Duality
CLRS, Chapter 29
Notes (CMU)

23

Nov. 16
The Standard form, Slack form and Basis of a LP
The Simplex Algorithm
Proof of Strong LP Duality
CLRS, Chapter 29
Preprint
Notes (by M. X. Goemans)

24

Nov. 21
Applications of Linear Programming and Duality
Shortest paths and network flows revisited
Flows with costs,  Zero Sum Games
CLRS, Chapter 29


THANKSGIVING

25
Nov. 28
NP-Completeness: Easy and hard problems
Cook-Levin Theorem
CLRS, Chapter 34
KT, Chapter 8,9
26
Nov. 30
Poly-time Reductions, NP-Completeness Proofs
CLRS, Chapter 34

Dec. 17
FINAL EXAM (2-5 PM)