← Hardness assumptions

P ≠ NP

Proposed by: Stephen Cook (1971), Leonid Levin (1973); anticipated by Gödel’s 1956 letter to von Neumann Category: Complexity-theoretic foundation

Mathematical form

Let P=k1DTIME(nk)\mathsf{P} = \bigcup_{k \geq 1} \mathsf{DTIME}(n^k) be the class of languages decidable in deterministic polynomial time, and let

NP={L{0,1}: poly-time verifier V, polynomial p,  xL    w{0,1}p(x),V(x,w)=1}.\mathsf{NP} = \{ L \subseteq \{0,1\}^* : \exists \text{ poly-time verifier } V, \text{ polynomial } p, \; x \in L \iff \exists w \in \{0,1\}^{p(|x|)}, V(x, w) = 1 \}.

Assumption. PNP\mathsf{P} \neq \mathsf{NP}; equivalently, no NP-complete language (e.g., SAT) admits a polynomial-time decision algorithm.

Relation to cryptography

Status

Open since 1971; one of the Clay Millennium Problems. Known barriers: relativization (Baker–Gill–Solovay), natural proofs (Razborov–Rudich), algebrization (Aaronson–Wigderson).

Source: assumptions/p-vs-np.md — corrections welcome via pull request.