In computability theory, a Turing reduction from a problem A to a problem B, is a reduction which solves A, assuming the solution to B is already known (Rogers 1967, Soare 1987). It can be understood as an algorithm that could be used to solve A if it had available to it a subroutine for solving B. More formally, a Turing reduction is a function computable by an oracle machine with an oracle for B. Turing reductions can be applied to both decision problems and function problems. If a Turing reduction of A to B exists then every algorithm for B can be used to produce an algorithm for A, by inserting the algorithm for B at each place where the oracle machine computing A queries the oracle for B. However, because the oracle machine may query the oracle a large number of times, the resulting algorithm may require more time asymptotically than either the algorithm for B or the oracle machine computing A, and may require as much space as both together. The first formal definition of relative computability, then called relative reducibility, was given by Alan Turing in 1939 in terms of oracle machines. Later in 1943 and 1952 Stephen Kleene defined an equivalent concept in terms of recursive functions. In 1944 Emil Post used the term "Turing reducibility" to refer to the concept. A polynomial-time Turing reduction is known as a Cook reduction, after Stephen Cook.
Given two sets [math]\displaystyle{ A,B \subseteq \mathbb{N} }[/math] of natural numbers, we say [math]\displaystyle{ A }[/math] is Turing reducible to [math]\displaystyle{ B }[/math] and write
if there is an oracle machine that computes the characteristic function of A when run with oracle B. In this case, we also say A is B-recursive and B-computable.
If there is an oracle machine that, when run with oracle B, computes a partial function with domain A, then A is said to be B-recursively enumerable and B-computably enumerable.
We say [math]\displaystyle{ A }[/math] is Turing equivalent to [math]\displaystyle{ B }[/math] and write [math]\displaystyle{ A \equiv_T B\, }[/math] if both [math]\displaystyle{ A \leq_T B }[/math] and [math]\displaystyle{ B \leq_T A. }[/math] The equivalence classes of Turing equivalent sets are called Turing degrees. The Turing degree of a set [math]\displaystyle{ X }[/math] is written [math]\displaystyle{ \textbf{deg}(X) }[/math].
Given a set [math]\displaystyle{ \mathcal{X} \subseteq \mathcal{P}(\mathbb{N}) }[/math], a set [math]\displaystyle{ A \subseteq \mathbb{N} }[/math] is called Turing hard for [math]\displaystyle{ \mathcal{X} }[/math] if [math]\displaystyle{ X \leq_T A }[/math] for all [math]\displaystyle{ X \in \mathcal{X} }[/math]. If additionally [math]\displaystyle{ A \in \mathcal{X} }[/math] then [math]\displaystyle{ A }[/math] is called Turing complete for [math]\displaystyle{ \mathcal{X} }[/math].
Turing completeness, as just defined above, corresponds only partially to Turing completeness in the sense of computational universality. Specifically, a Turing machine is a universal Turing machine if its halting problem (i.e., the set of inputs for which it eventually halts) is many-one complete. Thus, a necessary but insufficient condition for a machine to be computationally universal, is that the machine's halting problem be Turing-complete for the set [math]\displaystyle{ \mathcal{X} }[/math] of recursively enumerable sets.
Let [math]\displaystyle{ W_e }[/math] denote the set of input values for which the Turing machine with index e halts. Then the sets [math]\displaystyle{ A = \{e \mid e \in W_e\} }[/math] and [math]\displaystyle{ B = \{(e,n) \mid n \in W_e \} }[/math] are Turing equivalent (here [math]\displaystyle{ (-,-) }[/math] denotes an effective pairing function). A reduction showing [math]\displaystyle{ A \leq_T B }[/math] can be constructed using the fact that [math]\displaystyle{ e \in A \Leftrightarrow (e,e) \in B }[/math]. Given a pair [math]\displaystyle{ (e,n) }[/math], a new index [math]\displaystyle{ i(e,n) }[/math] can be constructed using the smn theorem such that the program coded by [math]\displaystyle{ i(e,n) }[/math] ignores its input and merely simulates the computation of the machine with index e on input n. In particular, the machine with index [math]\displaystyle{ i(e,n) }[/math] either halts on every input or halts on no input. Thus [math]\displaystyle{ i(e,n) \in A \Leftrightarrow (e,n) \in B }[/math] holds for all e and n. Because the function i is computable, this shows [math]\displaystyle{ B \leq_T A }[/math]. The reductions presented here are not only Turing reductions but many-one reductions, discussed below.
Since every reduction from a set B to a set A has to determine whether a single element is in A in only finitely many steps, it can only make finitely many queries of membership in the set B. When the amount of information about the set B used to compute a single bit of A is discussed, this is made precise by the use function. Formally, the use of a reduction is the function that sends each natural number n to the largest natural number m whose membership in the set B was queried by the reduction while determining the membership of n in A.
There are two common ways of producing reductions stronger than Turing reducibility. The first way is to limit the number and manner of oracle queries.
The second way to produce a stronger reducibility notion is to limit the computational resources that the program implementing the Turing reduction may use. These limits on the computational complexity of the reduction are important when studying subrecursive classes such as P. A set A is polynomial-time reducible to a set B if there is a Turing reduction of A to B that runs in polynomial time. The concept of log-space reduction is similar.
These reductions are stronger in the sense that they provide a finer distinction into equivalence classes, and satisfy more restrictive requirements than Turing reductions. Consequently, such reductions are harder to find. There may be no way to build a many-one reduction from one set to another even when a Turing reduction for the same sets exists.
According to the Church–Turing thesis, a Turing reduction is the most general form of an effectively calculable reduction. Nevertheless, weaker reductions are also considered. A set A is said to be arithmetical in B if A is definable by a formula of Peano arithmetic with B as a parameter. The set A is hyperarithmetical in B if there is a recursive ordinal α such that A is computable from [math]\displaystyle{ B^{(\alpha)} }[/math], the α-iterated Turing jump of B. The notion of relative constructibility is an important reducibility notion in set theory.
The content is sourced from: https://handwiki.org/wiki/Turing_reduction