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.