Computer Science 308-490B
Introduction to the Probabilistic Analysis of Algorithms
December 19, 2006

Winter 2007 --- Course Syllabus





Instructor  


Luc Devroye

  • Email to luc@cs.mcgill.ca
  • Tel: (514) 398-3738 (office)
  • McConnell Engineering Building, Room 300N
  • Office hours: any time my door is open


Teaching Assistant  


Nicolas Broutin


Location  


Tuesday, Thursday 16:00-17:30. McConnell Engineering 320N.


Description  


This course offers an opportunity for our undergraduate students to learn the tools needed to design and analyze efficient randomized algorithms, an area that has become important in the last few years. McGill has no course in this direction except at the graduate level. Computationally difficult (NP complete) problems can often be solved quickly by using randomization if one is willing to accept answers that are correct with a given probability or degree of accuracy. These randomized algorithms are the methods of choice for a number of important problems. The course will be especially appealing to those students wishing to continue with graduate work or fundamental research.


Contents  


Fundamental tools from probability are used to analyze algorithms. Notions covered include independence, generating functions, probability inequalities, random walks and Markov chains. We analyze probabilistic recurrences, Las Vegas algorithms, randomized approximation algorithms, random sampling methods, Monte Carlo techniques, and algorithms for combinatorial search and graph theoretic problems.


Lectures  


  • Lectures 1-3: Review the relevant notions of probability theory, including independence, probability inequalities, and certain distributions. Expected values. Modern concentration inequalities.
  • Lectures 4-6: Simple randomized algorithms. Las Vegas and Monte Carlo. Probabilistic recurrences.
  • Lecture 7: Game-theoretic techniques. Minimax.
  • Lectures 8-12: Markov chains. Random walks. k-SAT. Random walks on graphs. Cover times. Rapid mixing. Markov chain Monte Carlo.
  • Lectures 13-14: Algebraic methods. Fingerprinting and Freivald's technique. Verifying identities. Randomized pattern matching.
  • Lectures 15-16: Data structures. Random binary search trees. Random treaps. Skip lists.
  • Lectures 17-20: Geometric algorithms and linear programming. Convex hulls. Delaunay triangulations. Binary space partitions. Random sampling. Fast expected time linear programming.
  • Lectures 21-26: Applications. (Variable from year to year.) Routing, wiring. Randomized approximation for MAX SAT. Byzantine agreement. Approximate counting. Randomized primality testing.


Evaluation  


This is a course in the classical mould, with 3 hours of lectures per week. The evaluation is based on about twelve written homework assignments, each consisting of several problems. The last one of these has a due date on the last day of lectures. The homework problems, which form the core of the course, deal with randomization and probabilistic analysis, and are taken from across the entire spectrum of computer science subjects. There is no in-class test, no midterm, and no formal final examination.


Prerequisites  


  • 308-251: Data Structures
  • 189-323: Probability Theory


Textbook  


Lecture notes will be handed out. This text can be used as a rough reference, but is by no means necessary to follow the course: R. Motwani, P. Raghavan: "Randomized Algorithms," Cambridge University Press, 1995.