17.10. Complete and Hard Problems


Complete problems

Let C be a class of problems and let ≤ be one of the kinds of reducibilities, such as ≤m or ≤p.

Problem A is complete for C with respect to reducibility ≤ provided both of the following are true.

  1. AC.

  2. For every XC, XA.

We use completeness when C has a subclass D, and where the reducibility ≤ is conservative for class D.

Then, suppose that problem A is complete for C with respect to ≤, and that DC. From that, we can show what AD, as follows.

  1. Select a problem X that is in C but not in D.

  2. We know that XA, since A is complete for C.

  3. Because X ≤ A, we know that

    XDAD.
  4. But we selected X so that XD. So AD.


Some kinds of completeness


Problems that are hard for a class

Problem A is hard for class C with respect to reducibility relation ≤ if

for all XC, XA.

The difference between completeness and hardness is that a hard problem for class C is not necessarily in class C.

Usually, we use Turing reducibility for hardness. NP-hard, PSPACE-hard and EXPTIME-hard are all defined with respect to ≤pt.

For example, the following problem is NP-hard.

Input. A list of positive integers x1, x2, …, xk.

Output An index set I ⊆ {1, …, k } so that

|∑iI xi − ∑iI xi|

is as small as possible.

That problem cannot be in NP because it is not a decision problem. But it is easy to show that the Partition Problem reduces to it by a polynomial-time Turing reduction. (Try it.)

You should be prepared to show that a particular problem is NP-complete or CoNP-complete or PSPACE-complete. You should also be prepared to show that a given problem is NP-hard.