Definition. Polytime Reduction
[polytime-reduction]
Definition. Polytime Reduction [polytime-reduction]
Definition 1. Polytime Computable
[polytime-computable]
Definition 1. Polytime Computable [polytime-computable]
For some function , it is polytime computable if there exists a Turing machine that when given as input terminates with on the tape and runs in time .
Let (Let and be languages). is a polytime reduction from to if:
- is a polytime computable function
- ()
- ()
We then may say .
…helpful image…
Example. Polytime Reduction
Suppose , and . Claim:
What does this mean? It means there exists some function that can take a string, map it, and manipulate it so that if , then , and same for converses.
- Proof.
-
Let be the function that flips the bits of its input. Then, we’re done.
Note: these do not need to be bijections!
- A reduction that simply sends all satisfiable inputs to 0 is fine.
Facets of Reductions
[cpsc/reduction-facets]
Facets of Reductions [cpsc/reduction-facets]
Reductions are helpful!
Method: find a way to map:
- yes-instances of to yes-instances of
- no-instances of to no-instances of
- Notation:
- Logic: if is easy, is easy
- Contrapositive: if is hard, is hard
- Theorem.
-
If and , then .
- There is a polytime Turing machine N that decides .
- There is a polytime reduction from to .
- Proof.
-
We want a Turing machine that decides in polynomial time.
- On input : compute and then simulate on input . Accept iff accepts.
- If .
- If .
Question. If we know reduces to and is in , is in ?
Answer. Yes, is a subset of . Mind the direction!
When we talked about Turing machines, we had a notion of what it meant to be hard: undecidability. But now we’re talking about NP. So which problems in NP are hard?
Maybe , and so all problems in NP are easy.