Jump to content

Search problem

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Nyngwang (talk | contribs) at 18:57, 15 May 2025 (merge: third paragraph into the first one to give concrete examples.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computational complexity theory and computability theory, a search problem is a computational problem of finding an admissible answer for a given input value, provided that such an answer exists. In fact, a search problem is specified by a binary relation R where xRy if and only if "y is an admissible answer given x".[note 1] Search problems occur very frequently in graph theory and combinatorial optimization, e.g. searching for matchings, optional cliques, and stable sets in a given undirected graph.

An algorithm is said to solve a search problem if, for every input value x, it returns an admissible answer y for x when such an answer exists; otherwise, it returns any appropriate output, e.g. "not found" for x with no such answer.

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

Notes

References