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)