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.
If is such that there is some such that then accepts with output such that . (there may be multiple , and need only find one of them)
If is such that there is no such that then rejects .
Note that the graph of a partial function is a binary relation, and if calculates a partial function then there is at most one possible output.
A can be viewed as a search problem, and a Turing machine which calculates is also said to solve it. Every search problem has a corresponding decision problem, namely
This definition can be generalized to n-ary relations by any suitable encoding which allows multiple strings to be compressed into one string (for instance by listing them consecutively with a delimiter).