Firstly it is my understanding that the complement of a problem is simply the "reverse" question. So the complement of "Is the sky blue?" would be "Is the sky not blue?". Is my understanding correct?

If so, how can a complement ever be more or less complex than the original problem? Please include the simplest example that you can think of.

  • $\begingroup$ There is probably no single "simplest example". Also, you need to state which notion of complexity you are interested in -- there are many. $\endgroup$
    – Raphael
    Oct 3, 2016 at 10:09
  • $\begingroup$ Note that many deterministic time classes (if not all) are closed against complement. Therefore, there may not be examples you would call "simple". $\endgroup$
    – Raphael
    Oct 3, 2016 at 10:15

1 Answer 1


The notion of "complex" depends entirely on your model of computation. For example, if you're using DFAs, then by just about every conceivable measure every problem has the same difficulty as its complement. On the other hand, if you're using PDAs as your model of computation, many languages can be recognized by a PDA even though their complements can't. For example, the language

{ ww | w ∈ {a, b}* }

is not recognizable by any PDA, but its complement is.

In the land of NP, we don't know much about the relative difficulties of problems and their complements. It's an open problem whether the complements of any NP-complete problems are in NP.

Looking at decidability, a problem is decidable if and only if its complement is decidable. However, the same is not true of recognizability. The halting problem is recognizable, but its complement isn't.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.