Exact exponential algorithms and parameterized complexity
We usually want algorithms that:
- in polynomial time;
- for all instances;
- find an exact solution;
We can settle for 2 out of 3:
- relax 1: exponential algorithm
- relax 2: parameterized
- relax 3: approximate solutions
1. Exact exponential algorithms
- the length of a certificate at most: ∣ y ∣ ≤ m ( x ) |y|\le m(x) ∣y∣≤m(x); m ( x ) ∈ O ( p o l y ∣ x ∣ ) m(x)\in O(poly|x|) m(x)∈O(poly∣x∣)
- every problem in NP has a simple brute-force algorithm:
- Given a instance x x x, try all potential certificates y y y with ∣ y ∣ ≤ m ( x ) |y|\le m(x) ∣y∣≤m(x) and check if R ( x , y ) = 1 R(x,y)=1 R(x,y)=1 for any of them.
- since y ≤ m ( x ) y\le m(x) y≤m(x), there are at most O ( 2 m ( x ) ) O(2^{m(x)}) O(2m(x)) potential certificates, and it takes O ( p o l y ∣ x ∣ ) O(poly|x|) O(poly∣x∣) time to check each certificate, so the brute force algorithm for a NP problem can run in O ( 2 m ( x ) p o l y ∣ x ∣ ) O(2^{m(x)}poly|x|) O(2m(x)poly∣x∣).
2. Notation: O ∗ ( ⋅ ) O^*(·) O∗(⋅):
For any a > 1 a>1 a>1, ε > 0 \varepsilon>0 ε>0, and any c ∈ R c\in R c∈R , we have the running time for the simple brute-force algorithm O ∗ ( 2 m ( x ) ) O^*(2^{m(x)}) O∗(2m(x)).
Since: O ( n c ⋅ a n ) ⊂ O ( ( a + ε ) n