turing reducibility

one problem is reducible to another if a method for solving the second problem yields a method for solving the first.
[cite:;taken from @computability_rogers_1987 chapter 6 reducibilities]
  • is many-one reducible (-reducible) to (written ) if there is a computable function such that and , i.e., iff .
  • is one-one reducible (1-reducible) to () if by a 1:1 computable function.
[cite:;taken from @computability_soare_2016 definition 1.6.8]
let be sets. is many-one reducible to , written , if there is a computable function such that
that is, iff . (the word many-one simply refers to the fact that we do not require to be one-one.)
[cite:;taken from @computability_davis_1994 chapter 4.6 diagonalization and reducibility]
a reduction function has to be a total computable function.
if and is computable then is computable.
[cite:;taken from @computability_soare_2016 proposition 1.6.10]
suppose .
  • if is recursive, then is recursive.
  • if is r.e., then is r.e.
[cite:;taken from @computability_davis_1994 chapter 4.6 diagonalization and reducibility; theorem 6.2]
let . if is noncomputable, then is also noncomputable. if isnt computably enumerable then is also not computably enumerable.
consider the function
this function acts as a reduction from to . for every program number (i.e. is the encoding of a program ), the function returns the code of the following program :
ignores its inputs and runs the given program on .
the given reduction function is computable: we can write an algorithm that receives and returns the encoding of the program (the encoding function should be computable).
we have :
we have shown the reduction from , since isnt computably enumerable, we have that is also not computably enumerable.
if and , then .
[cite:;taken from @computability_davis_1994 chapter 6.4 diagonalization and reducibility; theorem 6.3]
if is -complete, is r.e. and , then is -complete.
[cite:;taken from @computability_davis_1994 chapter 6.4 diagonalization and reducibility; corollary 6.4]
if then .
the proof is trivial, assuming there is a reduction function for , the same reduction function can be used for the reduction .
can regard any classification problem (on finitely described objects) as a subset of our set of inputs . efficient reductions provide a natural partial order on such problems that captures their relative difficulty. note that reductions are a primary tool in computability and recursion theory, from which computational complexity developed. there, reductions were typically simply computable functions, whereas the focus of computational complexity is on efficiently computable ones. while we concentrate here on time efficiency, the field studies a great variety of other resources; limiting these in reductions is as fruitful as limiting them in algorithms. the following crucial definition is depicted in [cite:;in @computation_wigderson_2019 figure 7].
let be two classification problems. is an efficient reduction from to if and for every we have iff . in this case, we call an efficient reduction from to . we write if there is an efficient reduction from to .
[cite:;taken from @computation_wigderson_2019 definition 3.10 efficient reductions]
[cite:;taken from @computation_wigderson_2019 chapter 3.6 reductions]