# Computational Complexity:  2009-2010

 Lecturer Stephan Kreutzer Degrees MSc by Research Term Hilary Term 2010  (16 lectures)

## Overview

This course is an introduction to the theory of computational complexity and standard complexity classes. One of the most important insights to have emerged from Theoretical Computer Science is that computational problems can be classified according to how difficult they are to solve. This classification has shown that many computational problems are impossible to solve, and many more are impractical to solve in a reasonable amount of time. To classify problems in this way, one needs a rigorous model of computation, and a means of comparing problems of different kinds. This course introduces these ideas, and shows how they can be used.

## Learning outcomes

The course is designed to enable students to:

1. State precisely what it means for a problem to be computable, and show that some problems are not computable.
2. State precisely what it means to reduce one problem to another, and construct reductions for simple examples.
3. Classify problems into appropriate complexity classes, including P, NP and PSPACE, and use this information effectively.

## Synopsis

1. [2 lectures] Turing machine and elements of computability. Models of computation. Multitape deterministic Turing machines. Decision problems.
2. [3 lectures] Polynomial time. DTIME[t]. Linear Speed-up Theorem. P. Polynomial reducibility. Polytime algorithms: 2-satisfiability, 2-colourability.
3. [5 lectures] NP and NP-completeness. Non-deterministic Turing machines. NTIME[t]. NP. Polynomial time verification. NP-completeness. Cook-Levin Theorem. Polynomial transformations: 3-satisfiability, clique, colourability, Hamilton cycle, partition problems. Pseudo-polynomial time. Strong NP-completeness. Knapsack. NP-hardness.
4. [2 lectures] Space complexity. DSPACE[s]. Linear Space Compression Theorem. PSPACE, NPSPACE. PSPACE = NPSPACE. PSPACE-completeness. Quantified Boolean Formula problem is PSPACE-complete. L, NL and NL-completeness. NL=coNL.
5. [2 lectures] Optimization and approximation. Combinatorial optimisation problems. Relative error. Bin-packing problem. Polynomial and fully polynomial approximation schemes. Vertex cover, travelling salesman problem, minimum partition.
6. [2 lectures] Other topics. Randomized Complexity. The classes BPP, RP, ZPP. Interactive proof systems: IP = PSPACE. Parameterized complexity. The class FPT and the W-hierarchy.

## Syllabus

Turing machines, computability, decision problems, undecidability, time complexity, polynomial time algorithms, NP and NP-completeness, standard time and space complexity classes, optimization problems and approximation algorithms.