np-hardness
[np-hardness]
np-hardness [np-hardness]
— title: NP-Hardness —
Definition 1. NP-hardness
[np-hard]
Definition 1. NP-hardness [np-hard]
A Language is NP-hard if it is at least as hard as every problem in , i.e., .
There is nothing in this definition that’s really specific to . We could switch it out for other complexity classes if we’d like.
Note that we don’t require our language to be in ! is NP-hard.
Definition 2. NP-complete
[np-complete]
Definition 2. NP-complete [np-complete]
cook-levin
theorem
When desigining a reduction: if you want to show that your reduction is correct, you need to show that:
- is Polytime computable
Either:
- (converse)
- (inverse)
In a reduction, it’s more typical to show , as it’s often more straightforward. You often want to “decode” to obtain .
Example. CLIQUE problem
Given and , does there exist with such that for all distinct vertices ?
- No specification on size. In our example above, there are cliques of size through .
Theorem: …