This course introduces the fundamentals of computational complexity theory. The course covers basic concepts such as computational models, computational complexity measures (e.g., time and space complexity measures), complexity classes, reducibility and completeness notions. Highlights are the proofs and applications of Time Hierarchy theorem and the NP-completeness of SAT, two fundamental results in computational complexity theory. Some advanced topics are also given.
At the end of this course, students will be able to:
1) Evaluate the efficiency of algorithms correctly and appropriately, and use this ability to design algorithms.
2) Understand a formal treatment of computational complexity of a given problem, and discuss its upper and lower bounds.
3) Explain the time hierarchy of computational complexity of problems.
4) Understand a method for comparing the computational complexity of problems, and use it for analyzing given problems.
computation model, randomized computation model, cicuit computaion model, time and space complexity measures, circuit size complexity measure, complexity classes, P, NP, EXP, BPP, RP, ZPP, Time Hierarchy Theorem, reducibility, completeness, NP-completeness, polynomial-time hierarchey, interactive proof, circuit size lower bound, derandomization
|✔ Specialist skills||Intercultural skills||Communication skills||Critical thinking skills||Practical and/or problem-solving skills|
At the end of each class, students are given exercise problems as a homework assignment (due next class). Then at the beginning of each class, the lecture starts with explanation to the exercise problems given in the previous class.
|Course schedule||Required learning|
|Class 1||Algorithm and complexity measure||Formal definition of a basic programming language|
|Class 2||Circit computation model: nonuniform model of computation and circuit size complexity||An example of nonuniform computation|
|Class 3||Randomized computation model||Examples of randomized computation|
|Class 4||Complexity class: deterministic complexity classes such as P, E, EXP||Equivalent definitions for P, E, EXP. Inclusion relations among thise complexity classes.|
|Class 5||Time Hierarcky Theorem (1): Introduction||An example of diagonalization method.|
|Class 6||Time Hierarcky Theorem: Proof||Review of important points of the proof of Hierarchy Theorem|
|Class 7||Time Hierarchy Theorem: Applications||Proof of P < E.|
|Class 8||Introduction of Class NP||Examples of NP problems|
|Class 9||Relations between complexity classes||Proof of P <= NP <= EXP|
|Class 10||Polynomial-time reduction (1): Introduction and examples||Examples of polynomial-time reductions|
|Class 11||Polynomial-time reduction (2): Complexity analysis by using reductions||Proofs of basic facts on reductions|
|Class 12||Polynomial-time reduction: Proof of NP-completeness of SAT||Review of the details of the proof|
|Class 13||Polynomial-time hierarchy and relations among complexity classes: Introduction||Proofs of basic facts on the polynomial-time hierarchy|
|Class 14||Polynomial-time hiererchy and relatinos among complexity classes: Randomized complexity classess||Proof of the lemma of Adleman|
|Class 15||Circuit size lower bound its applications||Conrete examples of applying derandomization techniques|
All materials are provided during class; they can be also found on OCW-i.
1) M. Sipser, Introduction to the Theory of Computation, 3rd edition, PWS Pub., 2013, ISBN-13: 978-1133187790.
2) D. Du and K. Ko, Theory of Computational Complexity (Wiley Series in Discrete Mathematics and Optimization), 2nd edition, Wiley, 2013 ISBN-13: 978-1118306086.
Students' course scores are determined based on solutions to homework assignments given at the end of each class.
No prerequistites are necessary, but basic knowlege on programming and algorithms is expected.
Osamu Watanabe watanabe[at]is.titech.ac.jp
Contact by e-mail in advance for an appointment.