T-79.5103 Computational Complexity Theory

T-79.5103 Computational Complexity Theory
Lecturer: Prof. Pekka Orponen
Aalto University
School of Science
Department of Computer Science
Spring 2016
For a computer, how hard is it ...
to sort an array of integers?
10 2 100 -2
...
5
-2
11
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
2/12
For a computer, how hard is it ...
to verify that a C++ program can never segfault?
...
for(unsigned int i = cell->length; i > 0; i--, ep++) {
if((int)(*ep) > info.split_element &&
*ep < next_split_element &&
best_path_orbits.is_minimal_representative(*ep) &&
(!opt_use_long_prune ||
info.long_prune_redundant.find(*ep) ==
info.long_prune_redundant.end())) {
next_split_element = *ep;
next_split_element_pos = ep;
}
}
...
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
3/12
For a computer, how hard is it ...
to solve sudokus?
10
16
11
5
1
10 14
9
12
14
12
9
13
7
16
13
1
7
8
4
16
11
3
2
12
7 4
11
6
5 3
7
2
14 9
6 4
11
9
6
8
15
2
9
8
13
16
1
3
14
10
15
10
4
6
14
16
2
15
5
11
14
7
2
5
7
1
5
to find shortest Travelling
Salesperson tours?
4
16
11
13
3
1 11
2
5
12
4
13 16
15 9
8
5
14
1
6
12
13
9
2
1
7
5
10
http://www.math.uwaterloo.
ca/tsp/world/countries.html
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
4/12
For a computer, how hard is it ...
to efficiently solve sudokus?
10
16
11
5
1
10 14
9
12
14
12
9
13
7
16
13
1
7
8
4
16
11
3
2
12
7 4
11
6
5 3
7
2
14 9
6 4
11
9
6
8
15
2
9
8
13
16
1
3
14
10
15
10
4
6
14
16
2
15
5
11
14
7
2
5
7
1
5
4
16
11
13
3
1 11
2
5
12
4
13 16
15 9
8
5
14
1
9
2
1
6
12
13
to efficiently find shortest
Travelling Salesperson tours?
7
5
10
http://www.math.uwaterloo.
ca/tsp/world/countries.html
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
5/12
For a computer, how hard is it ...
to determine whether
the white player
has a winning strategy
in a given Go configuration?
to deduce whether an output
line of a sequential circuit can
ever be active?
u/d
Y0
Y1
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
6/12
Weekly Sessions and Course Personnel
Lectures: Mondays & Wednesdays 10–12, T3
First lecture Mon 11 January
Lecturer: Prof. Pekka Orponen
e-mail: [email protected]
Homework assistants:
M.Sc. Tuomo Lempiäinen and M.Sc. Abdulmelik Mohammed
Course home page:
I https://mycourses.aalto.fi/course/search.php?
search=T-79.5103
I
Lecture slides, homework assignments, current info etc. uploaded
as the course progresses.
Old home page:
I https://noppa.aalto.fi/noppa/kurssi/t-79.5103/
I
Lecture slides & homework assigments from 2015, archives for
older course materials.
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
7/12
General Themes
Concepts and phenomena of computational complexity
Identification of computationally hard problems
Classification of problems according to their complexity
Structure of the universe of complexity classes
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
8/12
Topics
Models of computation: Turing machines, RAM machines, Boolean
circuits
Modes of computation: deterministic, nondeterministic, parallel,
randomised, alternating
Basic notions of computational complexity: complexity measures and
complexity classes, hierarchy theorems, reductions between problems,
completeness
Central complexity classes: P, NP, PSPACE, NC, polynomial time
hierarchy, etc.
Design of completeness proofs, especially for NP-completeness
Applications and extensions: approximability, counting, games,
cryptographic protocols
Material: C. Papadimitriou, Computational Complexity, Addison-Wesley,
1994. Ch. 1–4, 7–20
Prerequisites: T-79.1001 Introduction to Theoretical Computer Science
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
9/12
Learning Outcomes
Once you have taken the course, you master the key complexity
classes, their underlying models of computation, and
relationships.
You are able to formalise and abstract from a given computational
task relevant computational problems and argue that they belong
to appropriate complexity classes.
You understand the concept of reductions and how it can be used
to order problems by their computational complexity. You are able
to show using reductions that a problem is complete for a central
complexity class (such as NP) and you understand the
importance and implications of such a result.
You are familiar with the concepts of randomised, approximation,
and parallel computation and aware of related complexity classes
and their relation to other complexity classes and their models of
computation.
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
10/12
Course Requirements
In order to pass the course you need to:
1. pass the first midterm exam (Mon 1 Feb 2016),
2. pass the home assignments (seven rounds; start after the first
midterm),
3. pass the second midterm exam (Tue 5 Apr 2016).
You must register for the course in Oodi.
You must pass all three parts.
The grade of the course (0–5) is determined by the respective
grades of (i) the first midterm exam (20%), (ii) homework (40%)
and (iii) the second midterm exam (40%).
By submitting the course feedback form you earn 1 extra
homework bonus point.
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
11/12
Homework Assignments
There are seven home assignments on the course, with two
problems each. The home assignments are published, submitted
and graded weekly, following the first midterm exam. Further
instructions on the process will be provided on the problem
sheets.
The first set of problems will be published by 11 February, with a
return deadline of 21 February.
Each assignment problem is graded on a scale of 0–4. If you get
fewer than 3 points for some problem, you then have the
possibility to revise your solution.
The deadline for submitting revised solutions is 13 April 2016.
Revised solutions will be graded on a scale of 0–3.
The credit points from the assignments (AP = 0–56) are
translated into course grade points (CP = 0–24) by the formula:
CP = 24 ⇥ (AP/56), rounded up.
T-79.5103 Computational Complexity Theory / Introduction
Department of Computer Science
12/12