CSE6115, Fall 2012
Instructor: Eric Ruppert
Office: Lassonde (Computer Science) Building, room 3042
Email: [my last name] @cse.yorku.ca
Telephone: (416) 736-2100 ext. 33979
Facsimile: (416) 736-5872
Lectures: Wednesdays and Fridays from 10:30 to 12:00 in room 103 of Founders College.
Office Hours: I will hold regular office hours on Mondays from 12:00 to 1:00 and Wednesdays from 16:00 to 17:00. If you cannot make it at those times, feel free to contact me to make an appointment at a different time. You can also try dropping by my office.
The best way to contact me is probably by email. Please use your cs account when sending me email, and start your subject line with "". Send messages in plain text, without attachments.
- (Sep 7) Some students have contacted me asking if the class times can be rescheduled so that they can attend. Note that you can still join the course in the second week, because we have only had a one-hour class on Sep 5. I plan to reschedule so that there are two 90-minute meetings per week. If you are interested in taking the course, please send me email by Sep 8 telling me (a) what times (Monday to Friday, 9am-6:30pm) you absolutely cannot attend the course, (b) which times you would prefer and (c) whether you would definitely take the course if it was scheduled when you could attend. I will try to settle the meeting times on Sep 9 and post them here.
- (Sep 7) I just realized that the orientation for new grad students conflicts with today's class, so I am cancelling the class so that students can attend the orientation sessions.
This course is intended to give graduate students a solid grasp of the fundamentals of complexity theory, which is an important part of the foundations of the entire field of computer science.
We'll look at models of computers (e.g. Turing machines) and see how they are used to measure the resources (time, space and others) required to solve problems. If we pick a model and a bound on one or more resources, we can define a complexity class (e.g. P, NP, NC) to be the set of problems that can be solved in that model with the given resources. These classes give us a systematic way of understanding how efficiently problems can be solved.
In studying complexity theory, we learn about techniques that can be used to design efficient algorithms. We also learn how to identify those problems for which efficient solutions do not exist or are unlikely to exist. Such information is useful, because it often suggests how to modify our approach when faced with an intractable problem: for example, we might look for approximate solutions instead of exact solutions, or try to solve a special case of the problem that is sufficient for our needs.
Much of the material will be taught from first principles, so there are no specific prerequisites. However, some background in algorithms and theoretical models of computing (e.g. Turing machines, finite automata) would be helpful, and you should be comfortable reading and writing mathematical proofs.
The exact set of topics to be covered will depend partly on students' interests and background, but here is a tentative list of topics:
You can look at the 6115 course web page from the last time it was offered to get an idea of what was covered then.
- Models of computation: various types of Turing Machines, Random Access Machines
- Definitions of some basic complexity classes (LOGSPACE, P, NP, coNP, PSPACE) & relationships between them
- Time & space hierarchy theorems
- Reductions, NP-completeness
- An introduction to randomized computation
- Parallel computation (circuits, Parallel Random Access Machines, NC, P-completeness)
- Approximating solutions to intractable problems (if time permits)
|Homework exercises || 60% |
|Paper presentation || 20% |
Most of the homework exercises will require you to write a proof.
For the class presentation, you will have to read about some complexity class and report your findings (the definition of the class, why it is important, maybe one or two basic facts about it) to the class. For the paper presentation, you will be required to read a research paper on complexity theory and present the results to the class. More details about all of this work will be given in class.
September 5: Introduction, why study complexity, how to measure complexity [AB 1.1]
September 12: Formalizing problems, model of computation. Turing machines. [Sip 3.1] or [Pap 2.1]
September 14: Lower bound on deciding palindromes [see notes]; simulating 2-way infinite tape with 1-way infinite tape.
September 19: Simulating multitape with a single tape [Sip 3.2], Random Access Machines [Pap 2.6]
September 21: Definition of TIME classes, basic properties [Sip 7.1-7.3]
September 26: Non-deterministic Turing machines, simulating non-deterministic TM with a deterministic one [Sip 3.2]
September 28: Reductions [Pap 8.1, Sip 7.4], verifiers [Sip 7.3].
October 3: Facts about reductions, definition of NP-hard and NP-complete [Pap 8.1]
October 5: NP-completeness of CLIQUE [Sip 7.4 or CLRS p.1003], SUBSET-SUM [Sip 7.5 or CLRS p.1014]
October 10: NP-completeness of 3DM [GJ 3.1.2], 3COLOUR [CLRS, p.1019].
October 12: Cook-Levin Theorem [Sip 7.4], NP-completeness of PARTITION and BIN-PACKING.
October 17: Basic relationships between time and space classes [Pap 7.3]
October 19: Savitch's Theorem [Pap 7.3, Sip 8.1]
October 24: Immermann-Szelepscényi Theorem [Pap 7.3, Sipser 8.6] and 2SAT is in P [Pap].
October 26: Definition and properties of logspace reductions. NL-complete problems: reachability, unreachability and 2SAT.
November 7: Class presentations
November 9: Diagonalization arguments
November 14: Space hierarchy theorem
November 16: CKTVAL is P-complete (and so is monotone CKTVAL)
November 21: TQBF is PSPACE-complete
November 23: GEOGRAPHY is PSPACE-complete, some examples of using randomization
November 28: Randomized complexity classes BPP, RP, PP, ZPP
[AB] Sanjeev Arora and Boaz Barak.
Complexity Theory: A Modern Approach.
Cambridge University Press, 2009.
A draft of the book is available online.
[BDG] José Luis Balcázar, Josep Diaz, Joaquim Gabarró.
Structural Complexity I, 2nd ed.
Nicely written, accessible introduction.
[BC] Daniel Pierre Bovet and Pierluigi Crescenzi.
Introduction to the Theory of Complexity.
Prentice Hall, 1994.
[DK] Ding-Zhu Du and Ker-I Ko.
The Theory of Computational Complexity.
[Gol] Oded Goldreich.
Computational Complexity: A Conceptual Perspective.
Cambridge University Press, 2008.
Preliminary versions of this book are available from the author's
[HS] Steven Homer and Alan L. Selman.
Computability and Complexity Theory.
[HU79] John E. Hopcroft and Jeffrey D. Ullman.
Introduction to Automata Theory, Languages and Computation, 1st ed.
[Imm] Neil Immerman.
Emphasizes connections to formal logic.
[Pap] Christos Papadimitriou.
[Sav] John E. Savage.
Models of Computation: Exploring the Power of Computing.
Part III of this book discusses complexity theory.
[Sip] Michael Sipser.
Introduction to the Theory of Computation, 3rd edition.
Cengage Learning, 2013.
Part III of this book discusses complexity theory.
[CR73] S.A. Cook and R.A. Reckhow. Time bounded random access machines, J. of Computer and System Sciences, volume 7, pages 354-375, 1973.
[HS65] J. Hartmanis and R.E. Stearns. On the computational complexity of algorithms, Trans. of the AMS, volume 117, pages 285-306, 1965.
Resources for Special Topics
[ACG] G. Ausiello, P. Crescenzi, G. Gambosi, V. Kann, A. Marchetti-Spaccamela and M. Protasi.
Complexity and Approximation: Combinatorial Optimization Problems and Their Approximability Properties.
Associated with this book is the online Compendium of NP Optimization Problems, which is like a version of Garey and Johnson's appendix (with more emphasis on approximations).
[CLRS] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein.
Introduction to Algorithms, 3rd edition.
MIT Press, 2009.
Great general algorithms book, and it has a nice chapter on NP-completeness.
[GJ] Michael R. Garey and David S. Johnson.
Computers and Intractability.
W. H. Freeman, 1979.
The bible of NP-completeness.
Johnson has also published a sequence of columns (available here) that form a kind of sequel to the book.
[GHR] Raymond Greenlaw, James Hoover, Walter L. Ruzzo.
Limits to Parallel Computation: P-completeness Theory.
Oxford University Press, 1995.
(See their web site.)
[SP] Uwe Schöning and Randall Pruim.
Gems of Theoretical Computer Science.
Each chapter presents a beautiful theorem from various fields of computer science (with a number from complexity theory).
More advanced complexity resources
[Aar] Scott Aaronson (zookeeper).
The Complexity Zoo.
This wiki has information on hundreds of complexity classes.
includes a huge number of papers on complexity theory.
[HO] Lane A. Hemaspaandra and Mitsunori Ogihara.
The Complexity Theory Companion.
Arranges Theorems according to the techniques used to prove them.
[RW] Steven Rudich and Avi Wigderson, eds.
Computational Complexity Theory.
AMS and Institute for Advanced Study, 2004.
Lecture notes, starting from some basics, but moving quickly to more advanced topics.
[Zim] Marius Zimand.
Computational Complexity: A Quantitative Perspective.
Focussed on questions of what fraction of problems in a class have certain properties.
Updated November 23, 2012