Once you have the
This page is that map: the great families, a few landmark members of each, the web of reductions binding them, and some field rules for spotting an NP-complete problem in the wild.
In 1972 Richard Karp took Cook's lone NP-complete problem, SAT, and reduced it down a branching tree to 21 classic combinatorial problems, proving each NP-complete. That paper turned a single result into a research programme. The problems sort naturally into a handful of families:
| Family | Members | The shared shape |
|---|---|---|
| Logic | SAT, 3-SAT, CIRCUIT-SAT | Satisfy a Boolean constraint |
| Graph selection | Clique, Independent Set, Vertex Cover | Choose vertices meeting an adjacency rule |
| Graph colouring | 3-Colouring, Graph | Label vertices so neighbours differ |
| Sequencing / tours | Hamiltonian cycle/path, Travelling Salesman (TSP) | Visit everything once, in order |
| Covering / packing | Set Cover, Bin Packing | Cover or pack with fewest / smallest resources |
| Number partition | Subset-Sum, Partition, Knapsack | Hit a numeric target with a subset |
| Scheduling | Job scheduling, timetabling | Assign tasks to slots under constraints |
These are not academic toys — they are routing fleets, packing trucks, colouring exam timetables, allocating radio frequencies, folding proteins. NP-completeness is where an enormous share of real optimization work lives, which is exactly why the theory matters so much in practice.
Every arrow below is a polynomial-time reduction
This is why the field grew so fast: nobody re-proves hardness from all of
The decision-vs-optimization distinction matters here. TSP as an optimization problem ("find the
shortest tour") is NP-hard; its decision version ("is there a tour of length
After enough exposure you develop a nose for it. These heuristics are informal — always confirm with an actual reduction — but they are astonishingly reliable first-pass filters.
When the nose says "NP-complete", the practical response is not despair. You reach for the
Every NP-complete problem reduces to every other, so in a strict sense they are the "same" problem in different costumes — solve one efficiently and you solve them all. Yet the costumes matter enormously in practice. A problem's natural form determines which approximation algorithms apply, which special cases are tractable, and which heuristics work: Euclidean TSP admits a beautiful approximation scheme that means nothing for SAT; Vertex Cover has a clean factor-2 approximation with no analogue for Hamiltonian cycle. The reductions prove the problems are equivalent in worst-case exact difficulty, but the moment you relax to approximate or average-case, the family members part ways dramatically. Same summit, very different climbing routes.
Pattern-matching to a known NP-complete problem is a fabulous way to form a guess — and a terrible way to conclude. Superficially similar problems can land on opposite sides of the tractability line. Finding the shortest path is polynomial; the longest simple path is NP-complete. The minimum spanning tree is easy; the minimum Steiner tree is NP-complete. An Eulerian circuit (every edge once) is decidable in linear time; a Hamiltonian circuit (every vertex once) is NP-complete. So use the resemblance to decide which reduction to attempt, then actually build it — with a two-way correctness proof. The map guides your search; only a reduction settles the question.