IT PAPERS DEEP-READ · PAPER 52

The Complexity of Theorem-Proving Procedures (NP-completeness)

Stephen Cook · University of Toronto · STOC 1971

中文 →

What did this paper do?

In 1971, Stephen Cook proved something that has vexed computer science ever since: there is a huge family of problems where checking whether an answer is correct is easy, but finding the answer from scratch may be hopelessly hard — and they are, in essence, all the same problem, so cracking any one of them cracks the lot. This is the origin of the famous open question P versus NP.

First, a strange fact

Some things you can check in a glance once the answer is handed to you, yet finding that answer yourself is brutal. A box of jigsaw pieces: once it's assembled you see in a second whether it's right — but building it from loose pieces can eat a whole day. Seating a big dinner table under a pile of "these two can't sit together" rules: hand me a finished chart and I can check it instantly, but producing one from nothing gets hopeless as the crowd grows. Cook noticed that such "easy to check, seemingly brutal to solve" problems are countless — and that they are all wired together.

The idea

Cook did two things. First, he fenced off this whole family of "easy-to-check" problems (later named NP). Second — and this is the stunning part — he proved that one problem in the family (deciding whether a string of logical conditions can all be satisfied at once, called satisfiability) is the hardest representative: any problem in the family can be quickly rewritten into that one problem.

How did he pull it off?

The key tool is rewriting (the technical name is a reduction). If I can quickly translate problem A into problem B — so A's answer is hidden inside B's answer — then "B is easy" implies "A is easy" too. Cook proved that every problem in the vast NP family can be translated this way into that one satisfiability problem. So it becomes a master key: if anyone finds a fast, general method to crack it, the entire family — thousands of seemingly unrelated hard problems — falls open all at once. Conversely, decades of nobody managing it have made people increasingly suspect that no such fast method exists.

What did it lead to?

"Does P actually equal NP?" became the single biggest open question in computer science, with a million-dollar prize still unclaimed. The practical payoff is large too: the moment you discover your hard problem belongs to the same family as that master key, you've essentially received a notice — stop hoping for a perfect-and-lightning-fast algorithm, and make do with approximations and clever shortcuts. One honest caveat: "hardest" means the worst case — in practice, many concrete instances of these problems are still solved quickly and well by today's solvers, so "same family" doesn't mean "this particular instance is forever unsolvable."

Remember this one line

Cook proved that within the big family of "easy-to-check" problems there is a hardest representative — crack it and you crack them all — and to this day nobody knows whether such a crack even exists. That is P versus NP.

Want the precise definitions of P and NP, how Cook's theorem is proved, and the diagram that "writes a computation as a logic puzzle"? → Switch to the Deep read