Quasi-polynomial time should not be confused with Pseudo-polynomial time.
In computational complexity theory and the analysis of algorithms, an algorithm is said to take quasi-polynomial time if its time complexity is quasi-polynomially bounded. That is, there should exist a constant
c
The decision problems with quasi-polynomial time algorithms are natural candidates for being NP-intermediate, neither having polynomial time nor likely to be NP-hard.
The complexity class QP consists of all problems that have quasi-polynomial time algorithms. It can be defined in terms of DTIME as follows.
QP=cupcDTIME
(logn)c | |
\left(2 |
\right)
An early example of a quasi-polynomial time algorithm was the Adleman–Pomerance–Rumely primality test; however, the problem of testing whether a number is a prime number has subsequently been shown to have a polynomial time algorithm, the AKS primality test.
In some cases, quasi-polynomial time bounds can be proven to be optimal under the exponential time hypothesis or a related computational hardness assumption. For instance, this is true for finding the largest disjoint subset of a collection of unit disks in the hyperbolic plane, and for finding a graph with the fewest vertices that does not appear as an induced subgraph of a given graph.
Other problems for which the best known algorithm takes quasi-polynomial time include:
Problems for which a quasi-polynomial time algorithm has been announced but not fully published include:
Quasi-polynomial time has also been used to study approximation algorithms. In particular, a quasi-polynomial-time approximation scheme (QPTAS) is a variant of a polynomial-time approximation scheme whose running time is quasi-polynomial rather than polynomial. Problems with a QPTAS include minimum-weight triangulation, and finding the maximum clique on the intersection graph of disks.
More strongly, the problem of finding an approximate Nash equilibrium has a QPTAS, but cannot have a PTAS under the exponential time hypothesis.