This article includes alist of references,related reading, orexternal links,but its sources remain unclear because it lacksinline citations. Please helpimprove this article byintroducing more precise citations.(October 2015) (Learn how and when to remove this message) |
Intheoretical computer science, a problem is one that asks for a solution in terms of analgorithm. For example, the problem offactoring
is a computational problem that has a solution, as there are many knowninteger factorization algorithms. A computational problem can be viewed as aset ofinstances orcases together with a, possibly empty, set ofsolutions for every instance/case. The question then is, whether there exists an algorithm that maps instances to solutions. For example, in thefactoring problem, the instances are the integersn, and solutions are prime numbersp that are the nontrivial prime factors ofn. An example of a computational problem without a solution is theHalting problem. Computational problems are one of the main objects of study in theoretical computer science.
One is often interested not only in mere existence of an algorithm, but also how efficient the algorithm can be. The field ofcomputational complexity theory addresses such questions by determining the amount of resources (computational complexity) solving a given problem will require, and explain why some problems areintractable orundecidable. Solvable computational problems belong tocomplexity classes that define broadly the resources (e.g. time, space/memory, energy, circuit depth) it takes to compute (solve) them with variousabstract machines. For example, the complexity classes
Both instances and solutions are represented by binarystrings, namely elements of {0, 1}*.[a] For example,natural numbers are usually represented as binary strings usingbinary encoding. This is important since the complexity is expressed as a function of the length of the input representation.
Adecision problem is a computational problem where the answer for every instance is either yes or no. An example of a decision problem isprimality testing:
A decision problem is typically represented as the set of all instances for which the answer isyes. For example, primality testing can be represented as the infinite set
In asearch problem, the answers can be arbitrary strings. For example, factoring is a search problem where the instances are (string representations of) positive integers and the solutions are (string representations of) collections of primes.
A search problem is represented as arelation consisting of all the instance-solution pairs, called asearch relation. For example, factoring can be represented as the relation
which consist of all pairs of numbers (n,p), wherep is a prime factor ofn.
Acounting problem asks for the number of solutions to a given search problem. For example, a counting problem associated with factoring is
A counting problem can be represented by a functionf from {0, 1}* to the nonnegative integers. For a search relationR, the counting problem associated toR is the function
Anoptimization problem asks for finding a "best possible" solution among the set of all possible solutions to a search problem. One example is themaximum independent set problem:
Optimization problems are represented by their objective function and their constraints.
In afunction problem a single output (of atotal function) is expected for every input, but the output is more complex than that of adecision problem, that is, it isn't just "yes" or "no". One of the most famous examples is the traveling salesman problem:
It is anNP-hard problem incombinatorial optimization, important inoperations research andtheoretical computer science.
Incomputational complexity theory, it is usually implicitly assumed that any string in {0, 1}* represents an instance of the computational problem in question. However, sometimes not all strings {0, 1}* represent valid instances, and one specifies a proper subset of {0, 1}* as the set of "valid instances". Computational problems of this type are calledpromise problems.
The following is an example of a (decision) promise problem:
Here, the valid instances are those graphs whose maximum independent set size is either at most 5 or at least 10.
Decision promise problems are usually represented as pairs of disjoint subsets (Lyes,Lno) of {0, 1}*. The valid instances are those inLyes ∪Lno.Lyes andLno represent the instances whose answer isyes andno, respectively.
Promise problems play an important role in several areas ofcomputational complexity, includinghardness of approximation,property testing, andinteractive proof systems.