CPS 230: Advanced Algorithms

Instructor: Kamesh Munagala
   Fall Semester, 2007

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.

CPS130 or equivalent as a hard prerequisite.  If you have never studied algorithms before, please read up on greedy algorithms and dynamic programming, or take CPS130 instead of this course.

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   (Phy 0047)       
Office Hours:    (Kamesh) Wed  13:00-15:00   (D205 LSRC)
                          (Sharath)  Fri     13:00-15:00   (D208 LSRC)

Grading:
Homeworks (30%),  MidTerm (30%), Final (40%). 
This is one of the required courses for the Algorithms area qualifier.
To pass the algorithm qualifier requirement, you need to score 60% on the final OR 75% on the midterm. You also need at least 40% on BOTH the exams.


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.
[DPV]   Algorithms by S. Dasgupta, C. Papadimitriou, and U. Vazirani.   

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. 28
Graph Algorithms:
Breadth First Search, Topological Sort,
Strongly connected components, Testing bipartiteness
Big-oh notation
KT, Chapter 3
CLRS, Chapter 22
DPV, Chapter 3,4

2

Aug. 30
Greedy Algorithms:
Shortest paths: Dijkstra's Algorithm
Implementation via priority queues
KT, Chapter 4
CLRS, Chapter 23, 24
DPV, Chapter 5
3
Sep. 4
Spanning trees, Cut and cycle properties
Kruskal's and Prim's Algorithms
KT, Chapter 4
DPV, Chapter 5
4
Sep. 6
Data Structures: Union-find implementations
Amortization, Binary counting
Notes (by Edelsbrunner)
CLRS, Chapter 21
5
Sep. 11
Analysis of union-find with path compression DPV, Chapter 5
6
Sep. 13
Search Trees: 2-4 Trees, Amortized analysis of reorder
Lossless Data Compression: Huffman Encoding
Notes (by Edelsbrunner)
DPV, Chapter 5
7
Sep. 18
Kraft's inequality, Optimal code-length and Entropy
Move-to-Front Coding and Competitive analysis
Original paper
Wikipedia entry

8

Sep. 20
Dynamic Programming:
Memoization, Weighted Interval Seheduling,
Integer Knapsack
KT, Chapter 6,
DPV, Chapter 6
Dynamic Prog. wiki

9

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

11

Oct. 2
Randomization:
Linearity of Expectation
Random Search Trees, Quicksort
Lecture notes (MIT)
KT, Chapter 13
CLRS, Chapter 5,7
12
Oct. 4
MIDTERM (Lec. 1-10)



FALL BREAK

13
Oct. 11
Skip Lists
Perfect Hashing
Original Paper
CLRS, Chapter 11

14

Oct. 16
Universal Hashing
Bloom Filters
KT, Chapter 13.6
Lecture Notes (Milterson)
Original paper

15

Oct. 18
Rabin-Karp Fingerprinting
Divide and Conquer: Recurrence Relations,
Counting inversions, Closest pair of points
Scribe notes (MIT)
KT, Chapter 5.5
CLRS, Chapter 28
DPV, Chapter 2

16

Oct. 23
Polynomial multiplication by evaluations
Introduction to the Fourier Transform
The Fast Fourier Transform Algorithm
CLRS, Chapter 30
KT, Chapter 5.6
DPV, Chapter 2

17

Oct. 25
FFT and Signal Processing, Permutation networks
Network Flows: The Max-Flow and Min-Cut Problems
The Ford-Fulkerson Augmentation Algorithm
CLRS, Chapter 26
KT, Chapter 7
DPV, Chapter 7
18
Oct. 30
The Max-flow Min-cut Theorem
Capacity scaling and Edmonds-Karp Algorithms
KT, Chapter 7

19

Nov. 1
Applications of Max-Flow and Min-Cut:
Bipartite Matchings and Hall's Theorem,
Disjoint Paths and Menger's Theorem
CLRS, Chapter 26
KT, Chapter 7
20
Nov. 6
Circulations with Demands,
Project Scheduling, Image Segmentation
KT, Chapter 7

21

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

22

Nov. 13
The Simplex Algorithm
Applications of Linear Programming and Duality
Shortest paths and network flows revisited
CLRS, Chapter 29
DPV, Chapter 7
Notes (M. X. Goemans)

23

Nov. 15
Flows with costs,  Zero Sum Games
NP-Completeness: Easy and hard problems
Cook-Levin Theorem, Poly-time Reductions
CLRS, Chapter 34
KT, Chapter 8,9
DPV, Chapter 7,8
24
Nov. 20
NP-Completeness Proofs: TSP, Subset Sum,
Independent Set, Vertex Cover
KT, Chapter 8,9
DPV, Chapter 8


THANKSGIVING


25

Nov. 27
Coping with NP-Completeness:
Approximation Algorithms: Knapsack, Vertex Cover
Connection to Linear Programming
KT, Chapter 11
26
Nov. 29
Efficient algorithms for special graphs
Fixed parameter tractability
KT, Chapter 10

Dec. 11
FINAL EXAM (7-10 PM)