Search problem
![]() | This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
In computational complexity theory and computability theory, a search problem is a type of computational problem where the notion of "an admissible structure y has been found in the object x" is represented by a binary relation xRy.
An algorithm is said to solve the problem if for every such x with at least one structure has been found, return the admissible one y; otherwise, for x with no structure, return an appropriate output, e.g. "not found".
Such problems occur very frequently in graph theory and combinatorial optimization, for example, where searching for structures such as particular matchings, optional cliques, particular stable sets, etc. are subjects of interest.
Definition
More formally, a relation R can be viewed as a search problem, and a Turing machine which calculates R is also said to solve it. More formally, if R is a binary relation such that field(R) ⊆ Γ+ and T is a Turing machine, then T calculates R if:
- If x is such that there is some y such that R(x, y) then T accepts x with output z such that R(x, z) (there may be multiple y, and T need only find one of them)
- If x is such that there is no y such that R(x, y) then T rejects x
(Note that the graph of a partial function is a binary relation, and if T calculates a partial function then there is at most one possible output.)
Decision Problem
For every search problem, we can define the corresponding decision problem, namely
This definition can be generalized to n-ary relations by any suitable encoding that is capable of compressing multiple strings into one, e.g. using delimiters.
See also
- Unbounded search operator
- Decision problem
- Optimization problem
- Counting problem (complexity)
- Function problem
- Search games