Fall 2012: Graduate Computational Complexity Theory

15855  An Introduction to Computational Complexity Theory

TR   3:00PM - 4:20PM in NSH 3002, 12 units.     

Professor Steven Rudich

This is a graduate course on the theory of computational complexity.
Complexity theory is the study of how much of a resource (such as
time, space, parallelism, or randomness) is required to perform some
of the computations that interest us the most. In a standard
algorithms course, one concentrates on giving resource efficient
methods to solve interesting problems. In this course, we concentrate
on techniques that prove or suggest that there are no efficient
methods to solve many important problems.

We will develop the theory of various complexity classes, such as P,
NP, co-NP, PH, #P, PSPACE, NC, AC, L, NL, UP, RP, BPP, IP, and PCP. We will study techniques to classify problems according to our available taxonomy. By developing a subtle pattern of reductions between classes, we will suggest an (as yet unproven!) picture of how by using limited amounts of various resources, we limit our computational power.

It has become increasingly obvious that proving even a small part of
this world picture true (or false) would be a major mathematical
achievement. For example, one part of this picture is that P does not
equal NP. The question of the equality of these two classes was
originally posed in a letter from Kurt Gödel to J. Von Neumann; it is
one of the most important problems in all of mathematics. We will study some of the remarkable lower bounds which have been proved in the hopes of making progress on these central issues. We will see that the solution to these questions will require techniques unlike any that are currently known.

One especially interesting aspect of our study will be the variety of
roles played by randomness. It helps in all aspects of complexity
theory: finding efficient algorithms, finding reductions between
problems, and proving that certain problems have no efficient
algorithms in restricted models. Another point worth mentioning is
that this seemingly pessimistic theory of what is impossible is what
makes two highly practical fields of computer science possible at all:
pseudorandom number generation and cryptography. These fields return the favor by suggesting what is true and what is provable in
complexity theory.