np hard
1971 Canada NP-complete
06

The Complexity of Theorem-Proving Procedures

Stephen Cook, 1971 — Boolean satisfiability is the canonical hard problem. Every NP problem reduces to it. The bottleneck has a name.

Stephen Cook, at the University of Toronto, defined polynomial-time reduction and proved that the Boolean satisfiability problem (SAT) — given a Boolean formula, decide whether there exists an assignment of true/false values to its variables that makes the formula true — is NP-complete. The proof showed that any non-deterministic Turing machine running in polynomial time can be encoded as a SAT instance whose satisfying assignment corresponds to an accepting computation. This established the existence of a single problem to which every problem in NP can be reduced in polynomial time. Leonid Levin proved the same result independently in the Soviet Union in 1973, and the result is now known as the Cook–Levin theorem. Every later NP-hardness proof in this book — for test suite minimization, package dependency resolution, module clustering, register allocation — descends from Cook 1971.

Cook, S. A. (1971). The Complexity of Theorem-Proving Procedures. Proceedings of the 3rd Annual ACM Symposium on Theory of Computing, 151–158. Source →