I was wondering why 3-SAT is often chosen as the candidate problem from which one reduces from to prove the NP-completeness of another algorithm. I've seen it justified in places such as K&T by
We now show that 3-SAT $\leq_p$ Hamiltonian Cycle. Why are we reducing from 3-SAT? Essentially, faced with Hamiltonian Cycle, we really have no idea what to reduce from; it’s sufficiently different from all the problems we’ve seen so far that there’s no real basis for choosing. In such a situation, one strategy is to go back to 3-SAT, since its combinatorial structure is very basic.
(I believe also that the Super Mario NP-completeness proof uses a reduction from 3-SAT.)
However, even they admit that
Of course, this strategy guarantees at least a certain level of complexity in the reduction, since we need to encode variables and clauses in the language of graphs.
I've seen that certain cases lend themselves to reducing from other problems with simpler variables and constraints (e.g. from Hamiltonian cycle). So I'm wondering why 3-SAT is often chosen/taught as a default, given that constructing variable and clause gadgets and encoding non-conflicting constraints is not necessarily straightforward.
EDIT: The plot thickens! Here's what mathematician Robert Kleinberg has to say: