A reduction, as in mathematics, is a way of saying that one problem is ‘as hard’ as another. For complexity theory, we require the reduction itself to be efficiently computed:

Definition

Fix languages . A polynomial-time reduction from to is a function such that:

  • is polynomial-time, i.e., we can compute in a number of steps polynomial in .

We write when there is a polynomial-time reduction from to .

Example: Reducing Independent-Set to Clique

K-Independent Set =

Reduction from K-Independent to K-Clique

  • Define: ( is like , but flip all edges)
  • is certainly polynomial time
  • K-Independent Set
    • C a k-Independent Set in G
    • C a k-clique in
    • k-clique
  • (similar)