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.