Group for Research in Decision Analysis

Introduction to computational complexity theory

Lê Nguyên Hoang Polytechnique Montréal, Canada

Execution time is a key element for most algorithms, especially in combinatorial problems, optimization, calculation or database management. Computational complexity theory arose to study and compare running time of algorithms. We will introduce basic theoretical concepts to assess the speed of algorithms like Turing machines, evaluate complexity \(( O(n), O(n\> \text{log}(n)), O(n^2), ... )\) of classical examples such as sorting algorithms and discuss notions of NP-complexity (P, NP, NP-Hard, NP-Complete, ...).