complexity class

If f(n) is any function and T is a Turing machineMathworldPlanetmath (of any kind) which halts on all inputs, we say that T is time bounded by f(n) if for any input x with length |x|, T halts after at most f(|x|) steps.

For a decision problemMathworldPlanetmath L and a class K of Turing machines, we say that LKTIME(f(n)) if there is a Turing machine TK bounded by f(n) which decides L. If R is a search problem then RKTIME(f(n)) if L(R)KTIME(f(n)). The most common classes are all restricted to one read-only input tape and one output/work tape (and in some cases a one-way, read-only guess tape) and are defined as follows:

  • D is the class of deterministic Turing machines. (In this case KTIME is written DTIME.)

  • N is the class of non-deterministic Turing machines (and so KTIME is written NTIME).

  • R is the class of positive one-sided error Turing machines and coR the class of negative one-sided error machines

  • BP is the class of two-sided error machines

  • P is the class of minimal error machines

  • ZP is the class of zero error machines

Although KTIME(f(n)) is a time complexity class for any f(n), in actual use time complexity classes are usually the union of KTIME(f(n)) for many f. If Φ is a class of functions then KTIME(Φ)=fΦKTIME(f(n)). Most commonly this is used when Φ=𝒪(f(n)).

The most important time complexity classes are the polynomial classes:


When K=D this is called just 𝒫, the class of problems decidable in polynomial time. One of the major outstanding problems in mathematics is the question of whether 𝒫=𝒩𝒫.

We say a problem πKSPACE(f(n)) if there is a Turing machine TK which solves π, always halts, and never uses more than f(n) cells of its output/work tape. As above, if Φ is a class of function then KSPACE(Φ)=fΦKSPACE(f(n))

The most common space complexity classes are K=KSPACE(𝒪(logn)). When K=D this is just called .

If 𝒞 is any complexity class then πco𝒞 if π is a decision problem and π¯𝒞 or π is a search problem and L(π)co𝒞. Of course, this coincides with the definition of coR above. Clearly co(co𝒞)=𝒞.

Since a machine with a time complexity f(n) cannot possibly use more than f(n) cells, KTIME(f(n))KSPACE(f(n)). If KK then KTIME(f(n))KTIME(f(n)) and similarly for space.

The following are all trivial, following from the fact that some classes of machines accept and reject under stricter circumstances than others:

Title complexity class
Canonical name ComplexityClass
Date of creation 2013-03-22 13:01:59
Last modified on 2013-03-22 13:01:59
Owner Henry (455)
Last modified by Henry (455)
Numerical id 4
Author Henry (455)
Entry type Definition
Classification msc 68Q15