Complexity Theory

Also known as: Computational Complexity

framework · computer science · formal-scientific

Study of resource requirements (time, space) for solving problems.

Computational Complexity Theory is the branch of computer science that studies the inherent resource requirements (time, space, randomness, communication, etc.) necessary to solve computational problems, classifying problems into complexity classes and proving relationships between them. The field's foundational concepts emerged from Alan Turing's 1936 work on computability and the Turing machine, with computational complexity as a distinct field developed through Hartmanis and Stearns's 1965 paper introducing time-complexity classes, Edmonds's 1965 articulation of polynomial-time as the boundary of practical solvability, Cobham's 1965 thesis identifying P with feasibly-solvable problems, Cook's 1971 introduction of NP-completeness, and Karp's 1972 demonstration that 21 important problems are NP-complete. The discipline's central open question — whether P = NP, that is, whether every problem whose solution can be verified in polynomial time can also be solved in polynomial time — is the most famous open problem in computer science and one of the seven Clay Mathematics Institute Millennium Prize Problems. The framework's vocabulary (polynomial, exponential, NP-hard, NP-complete, intractable) has become standard for reasoning about algorithm scalability and is central to cryptography (which depends on certain problems being computationally intractable), optimization, and complexity-aware system design.

Originators

Alan Turing (computability foundation); Juris Hartmanis and Richard Stearns (complexity classes); Stephen Cook and Leonid Levin (NP-completeness, independently); Richard Karp (NP-completeness expansion) high

Year / Decade

1936 (Turing computability); 1965 (Hartmanis-Stearns time complexity, Edmonds-Cobham); 1971 (Cook NP-completeness); 1972 (Karp's 21 problems) high

Primary sources

Cook, S.A. (1971). 'The Complexity of Theorem-Proving Procedures', Karp, R.M. (1972). 'Reducibility Among Combinatorial Problems', Sipser, M. (multiple editions). Introduction to the Theory of Computation, Arora, S. & Barak, B. (2009). Computational Complexity: A Modern Approach high

Core components

Primary use case

Algorithm analysis and design; foundation for cryptography (depends on hardness assumptions including factoring, discrete log, lattice problems); intractability arguments justifying heuristic approaches to NP-hard problems; theoretical computer science research; pedagogical framework for understanding what computation can and cannot do efficiently; basis for thinking about quantum computing's computational implications.

Common criticisms

Lineage