Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The only first-principles "proof" that a problem is NP-complete I encountered is from Introduction to algorithms, and deals with the circuit-satisfiability problem. According to the authors, many details in the proof are omitted.

What is the simplest first-principles proof that a problem is NP-complete that thoroughly presents all the technical details?

share|cite|improve this question
I assume you want a proof that is not a reduction to a different NP-complete problem, but rather a direct proof from the definition of NP-completeness? Wikipedia has a nice writeup of such a proof: – Alex ten Brink Feb 28 '12 at 14:19
@AlextenBrink: Thanks. – Randomblue Feb 28 '12 at 14:24
@AlextenBrink: I assume you mean (polynomial-time) reduction from a different NP-complete problem (in addition to an NP membership proof)? Just nit-picking, but the difference is, of course, crucial. – Magnus Lie Hetland Mar 5 '12 at 12:16
@Magnus Lie Hetland: you are of course completely right. Unfortunately, comments can't be edited, so I can't correct it. – Alex ten Brink Mar 5 '12 at 14:18
up vote 17 down vote accepted

What about { (M,$1^t$) : M is a turing machine that, run on a blank tape, accepts within t steps} ?

The proof of NP-completeness is a simple exercise from the definition.

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.