Difference between revisions of "Complexity class"

From Wiki @ Karl Jones dot com
Jump to: navigation, search
Line 3: Line 3:
 
== Description ==
 
== Description ==
  
A typical complexity class has a definition of the form:  the set of problems that can be solved by an abstract machine M using O(f(n)) of resource R, where n is the size of the input.
+
A typical complexity class has a definition of the form:  the set of problems that can be solved by an [[abstract machine]] M using O(f(n)) of resource R, where n is the size of the input.
  
 
For example, the class NP is the set of decision problems whose solutions can be determined by a non-deterministic [[Turing machine]] in polynomial time, while the class PSPACE is the set of decision problems that can be solved by a deterministic Turing machine in polynomial space.
 
For example, the class NP is the set of decision problems whose solutions can be determined by a non-deterministic [[Turing machine]] in polynomial time, while the class PSPACE is the set of decision problems that can be solved by a deterministic Turing machine in polynomial space.
Line 40: Line 40:
 
== See also ==
 
== See also ==
  
 +
* [[Abstract machine]]
 
* [[Blum axioms]]
 
* [[Blum axioms]]
 
* [[Computation]]
 
* [[Computation]]

Revision as of 06:19, 16 February 2016

In computational complexity theory, a complexity class is a set of problems of related resource-based complexity.

Description

A typical complexity class has a definition of the form: the set of problems that can be solved by an abstract machine M using O(f(n)) of resource R, where n is the size of the input.

For example, the class NP is the set of decision problems whose solutions can be determined by a non-deterministic Turing machine in polynomial time, while the class PSPACE is the set of decision problems that can be solved by a deterministic Turing machine in polynomial space.

Factors

The simpler complexity classes are defined by the following factors:

The type of computational problem

The most commonly used problems are decision problems. However, complexity classes can be defined based on function problems (an example is FP), counting problems (e.g. #P), optimization problems, promise problems, etc.

The model of computation

The most common model of computation is the deterministic Turing machine, but many complexity classes are based on nondeterministic Turing machines, boolean circuits, quantum Turing machines, monotone circuits, etc. The resource (or resources) that are being bounded and the bounds: These two properties are usually stated together, such as "polynomial time", "logarithmic space", "constant depth", etc.

Mathematical logic

Many complexity classes can be characterized in terms of the mathematical logic needed to express them; see descriptive complexity.

Bounding the computation time

Bounding the computation time above by some concrete function f(n) often yields complexity classes that depend on the chosen machine model.

For instance, the language {xx | x is any binary string} can be solved in linear time on a multi-tape Turing machine, but necessarily requires quadratic time in the model of single-tape Turing machines.

If we allow polynomial variations in running time, Cobham-Edmonds thesis states that "the time complexities in any two reasonable and general models of computation are polynomially related" (Goldreich 2008, Chapter 1.2).

This forms the basis for the complexity class P, which is the set of decision problems solvable by a deterministic Turing machine within polynomial time. The corresponding set of function problems is FP.

Blum axiom

The Blum axioms can be used to define complexity classes without referring to a concrete computational model.

See also

External links