P ≠ NP
Proposed by: Stephen Cook (1971), Leonid Levin (1973); anticipated by Gödel’s 1956 letter to von Neumann
Category: Complexity-theoretic foundation
Let P=⋃k≥1DTIME(nk) be the class of languages decidable in deterministic polynomial time, and let
NP={L⊆{0,1}∗:∃ poly-time verifier V, polynomial p,x∈L⟺∃w∈{0,1}p(∣x∣),V(x,w)=1}.
Assumption. P=NP; equivalently, no NP-complete language (e.g., SAT) admits a polynomial-time decision algorithm.
Relation to cryptography
- P=NP is necessary for essentially all of complexity-based cryptography: if P=NP, one-way functions do not exist (inverting any efficiently computable function is an NP-search problem).
- It is not known to be sufficient: cryptography needs average-case hardness, and worst-case NP-hardness does not imply it (Impagliazzo’s “five worlds”). Even NP⊆BPP is not known to yield one-way functions.
Status
Open since 1971; one of the Clay Millennium Problems. Known barriers: relativization (Baker–Gill–Solovay), natural proofs (Razborov–Rudich), algebrization (Aaronson–Wigderson).