Tentative Course Outline
- Topic: Introduction to algorithm analysis and asymptotic
notation
- Reading: Chapters 1, 2 and 3 of CLR (Read the appendix
covering mathematical background if you need to)
- Comparing growth rate of functions
- Growth rate as a mesure of efficiency of use of a faster
processor
- Sums
- Basic Algorithm Design Paradigms
- Topic: Greedy algorithms and exchange arguments
- Reading: Chapter 16
- Example: Max independent set in an interval graph
- Example: Maximal weight independent set in a matroid
- Example: Kruskal minimum spanning tree algorithm as an
application of matroids
- Topic: Dynamic programming
- Reading: Chapter 15
- Suggested Reading: A paper on
how to design dynamic programming algorithms for some problems without
using recursion. (postscript)
- Example: Fibonacci numbers
- Example: Longest Common Subsequence
- Example: Minimum weight binary search tree
- Example: Longest Increasing Subsequence (problem 16.5.3)
- Example: Subset sum
- Example: Knapsack
- Topic: Divide and conquer, Parallel Algorithms and
recurrences
- Reading:
- Divide and Conquer for multiplying polynomials/numbers
- EREW PRAM
- Example: Divide and conquer algorithm for associative
operator
- Example: Divide and Conquer for parallel prefix
- Example: Merging and Sorting
- Divide and Conquer Recurrences
- Solving recurrences using induction, example T(n) = 2
T(n/2) + 1
- Designing algorithms through data structures
- Topic: Information Theoretic and Adversarial Lower Bounds
- Time complexity of a problem
- Example: Searching lower bound
- Example: Sorting lower bound
- Example: n-1 lower bound for find the maximum
- Example: 3n/2 lower bound for computing median (not in the
book)
- Example: Impossiblity of reach distributed consensus with
one faculty processor (wikepedia
entry)
- Topic: Average-case analysis, randomized algorithms, and
bounding tails of distributions
- Reading: Chapters 5, 7, 9, 11, 12, and
13, and Handout on randomized algorithms.
- Linearity of expectations
- Example: Quicksort, Expected linear time selection,
Randomly
built Search trees
- Example: Expected time for insert in closed addressed
hash table
- Example: Expected time for insert in open addressed hash
table using uniform hashing
- Example: Universal Hash Functions
- Example: Min-cut
- Example: Miller-Rabin primality algorithm
- Las Vegas vs. Monte Carlo algorithms
- Bounding Tails
- Example: Analysis of streaks in Bernoulli trials
- Example: High confidence analysis of Quicksort, Expected
linear time selection, Randomly built Search trees
- Yao's technique
- Example: Average case information theoretic lower bound
for
sorting
- Example: Randomized lower bound for sorting
- Topic: Graph Search Algorithms
- Reading: Chapters 22, 23, 24
- Example: Prims Algorithm
- Example: Dijkstra's Algorithm
- Example: Bellman Ford
- Example: Topological Sort/Shortest Paths in a DAG
- Topic: Max flow
- Reading: Chapter 26
- Example: Ford-Fulkerson algorithm
- Example: Karp-Edmonds Algorithms
- Poly-time, pseudo poly-time, and strong poly-time
- Example: Randomized Monte-Carlo Min-Cut Algorithm
- Example: Reduction of Maximum Cardinality Bipartite
Matching to Network Flow
- Linear Programming
- Example: Writing network flow as a linear program
- Example: Writing shortest path as a linear program
- Simplex greedy algorithm vs. divide and conquer interior
point methods
- Duality using the Diet problem
- Duality of network flow
- Duality of the shortest path problem
- Topic: NP-completeness and Reductions
- Reading: Chapter 34
- Example: Matrix Multiplication <= Matrix Squaring
- Example: CNFSAT <= 3SAT (local replacement)
- Example: 3SAT <= Vertex Cover (component design)
- Example: Self Reducibility of Vertex Cover
- Example: Vertex Cover <= Set Cover (restriction)
- Example: 3SAT <= Subset Sum (component design)
- Topic: Approximation algorithms
- Reading: Chapter 35
- Example: Vertex Cover using maximal matching lower bound
and LP lower bound
- Example: 2 and 3/2 approximations for Traveling Salesman
- Example: Set Cover
- Example: Gap reduction for TSP without triangle
inequality to prove non-approximatability
- Topic: Online Algorithms
- Example: Multipop
- Reading: Move to Front for List Update (paper1 paper2)
- Reading: Introduction to online scheduling (paper)
- Example: Speed Scaling for flow plus energy (paper)