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)
- Principles of algorithm analysis
- Comparing growth rate of functions
- Growth rate as a measure of efficiency of use
of a faster processor
- Basic Algorithm Design Paradigms (CS 1510 Review)
- Topic: Greedy algorithms and exchange arguments
- Reading: Chapter 16
- 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
- Example: Knapsack (and Subset Sum)
- Example: Longest Increasing Subsequence
- Topic: Reductions and NP-completeness
- Reading: Chapter 34
- Example: 3SAT <= Vertex Cover
- Example: Vertex Cover <= Subset Sum
- Topic: Divide and conquer, Parallel Algorithms
and recurrences
- Reading: Chapter 4, Chapter 27 and Chapter 30
- Example: Parallel Prefix on an EREW PRAM
- Divide and Conquer Recurrences
- Solving recurrences using induction
- Example T(n) = 2 T(n/2) + 1
- Problem Complexity: Information Theoretic and
Adversarial Lower Bounds
- Time complexity of a problem
- Example: Searching lower bound
- Example: Sorting lower bound
- Example: Element Uniqueness lower bound
- Example: n-1 lower bound for find the maximum
- Example: 3n/2 lower bound for computing median
(not in the book)
- 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: Randomized Monte-Carlo Min-Cut
Algorithm
- Las Vegas vs. Monte Carlo algorithms
- Bounding Tails and Union Bounds
- 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 Las Vegas lower bound for
sorting
- Topic: Graph Algorithms
- Graph Search Algorithms
- Reading: Chapters 22, 23, 24
- Example: Prim's minimum spanning tree
algorithm
- Example: Dijkstra's shortest path algorithm
- Example: Shortest path in a directed acyclic
graph, topological sorting, and depth first search
- Example: Bellman-Ford shortest path algorithm
- Network Flow
- Reading: Chapter 26
- Example: Ford-Fulkerson algorithm
- Example: Karp-Edmonds Algorithms
- Poly-time, pseudo poly-time, and strong
poly-time
- Topic: Distributed Graph Algorithms
- Reading: Chapter 24 and 26
- Example: Bellman-Ford shortest path algorithm
- Example: Push Relabel network flow algorithm
- 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
- Weak duality, complementary slackness and
statement of strong duality
- Example: Writing the diet
problem as a linear program and computing its dual
- Example: Dual of network flow
- Example: Dual of the shortest path problem
- 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: Randomized 8/7 approximation for
MAX3SAT
- Example: Gap reduction for TSP without
triangle inequality to prove non-approximatability
- Topic: Online Algorithms
- Reading: Chapter 17
- Example: Lazy dictionary insertion
- Example: Multipop
- Example: Counting in Binary
- Example: Dynamic Table
- Example: Paging, general
lower bound and resource augmentation analysis of LRU (paper)
- Example: Move to Front for List Update and
general lower bound (paper1 paper2)
- Example: Analysis of Round Robin / Process
Sharing and general lower bound for nonclairvoyant algorithms (paper)