• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site
2022/2023

Computational Complexity

Type: Mago-Lego
When: 1 module
Online hours: 82
Open to: students of one campus
Language: English
ECTS credits: 5
Contact hours: 8

Course Syllabus

Abstract

This course teaches the basics of computational complexity theory, approximation, and probabilistic algorithms for solving intractable problems including those from data analysis. You will learn: - definitions of the complexity classes P, NP, and PSPACE, - techniques to prove that a problem is NP-complete, and - approaches to solving such problems including exponential algorithms other than exhaustive search, approximation algorithms, and efficient algorithms for special cases.
Learning Objectives

Learning Objectives

  • Be able to recognize whether computational problems are in P, are in NP, are NP-hard, or are PSPACE-hard, by either giving an efficient algorithm or presenting a reduction from a well-known NP-complete or PSPACE-complete problem
  • Know various techniques to deal with NP-hard search and optimization problems, both theoretically and at a practical level. We focus on (1) solving hard problems for special inputs, (2) improving exhaustive search, (3) efficiently finding approximate solutions.
  • Understand the hardness of several variants of clustering.
  • Be aware of other computational complexity classes, relations between these classes, and some open questions in computational complexity.
  • Throughout the course, we pay special attention to the Travelling Salesman problem, and the final project asks you to apply the techniques mastered throughout the course to design and implement an algorithm solving this problem in the most efficient way you can think of.
Expected Learning Outcomes

Expected Learning Outcomes

  • Be able to recognize whether computational problems are in P, are in NP, are NP-hard, or are PSPACE-hard, by either giving an efficient algorithm or presenting a reduction from a well-known NP-complete or PSPACE-complete problem
  • Know various techniques to deal with NP-hard search and optimization problems, both theoretically and at a practical level. We focus on (1) solving hard problems for special inputs, (2) improving exhaustive search, (3) efficiently finding approximate solutions.
  • Understand the hardness of several variants of clustering.
  • Be aware of computational complexity classes, relations between these classes, and some open questions in computational complexity.
Course Contents

Course Contents

  • 1. Easy and hard problems
  • 2. NP and NP-completeness
  • 3. Dealing with Hardness
  • 4. Approximation algorithms
  • 5. Probabilistic and space complexity
  • 6. Clustering
Assessment Elements

Assessment Elements

  • non-blocking Quizzes
    Weekly quizzes.
  • non-blocking Staff-graded Assignments
  • non-blocking Final project
  • non-blocking Final exam
  • non-blocking Programming Assignments
Interim Assessment

Interim Assessment

  • 2022/2023 1st module
    0.2 * Quizzes + 0.2 * Final exam + 0.25 * Programming Assignments + 0.15 * Final project + 0.2 * Staff-graded Assignments
Bibliography

Bibliography

Recommended Core Bibliography

  • Introduction to the theory of computation, Sipser, M., 2013

Recommended Additional Bibliography

  • Mehryar Mohri, Afshin Rostamizadeh, & Ameet Talwalkar. (2018). Foundations of Machine Learning, Second Edition. The MIT Press.

Authors

  • Литвишкина Ален Витальевна
  • BAUVENS BRUNO FREDERIK L.