A function is considered computable if it can be simulated by a Turing Machine. That is, there exists a Turing Machine that, when given a function’s input, produces the function’s output and halts. By the Church-Turing thesis, every effectively calculable function is computable, and hence has an equivalent Turing Machine.
Definition
Computable (Function) ^def-computable-function
A function that operates over a finite set is considered computable iff there exists a Turing Machine, such that, when given any as input, halts with in its input tape.
- refers to the TM encoding of
- To convert the function to a set (computability-wise), we ask the question, is there a TM that recognises the language
Computable (Set) ^def-computable-set
A finite set is considered computable iff its associated language, is T-Decidable
- refers to the TM encoding of
- This also corresponds to decision problems.
This also means:
and its complement:
Computable Numbers
The definition of computability extends beyond functions. We can defined a computable number as any number that can be generated by a Turing Machine, after a finite amount of time. Informally, it means we can print the first digits of the number in finite time using .
A computable number [is] one for which there is a Turing machine which, given on its initial tape, terminates with the -th digit of that number [encoded on its tape].
#todo this appears to be wrong, see Cauchy representation of and this post: https://math.stackexchange.com/questions/4048442/wikipedias-definition-of-a-computable-numbers
For example, the number is computable by the Turing Machine below:
%%🖋 Edit in Excalidraw, and the light exported image%%
#todo How to make a more optimised TM? and how to get it to have leadings 0’s after?
However, when we try to compute real numbers, we run into a problem. How do we compute , which has infinite digits, using a finite number of states?
Uncountable Sets Are Not Computable
Any uncountable set is not computable, simply because there are more elements in the set than there are Turing Machines.
The real numbers are uncountable, so most real numbers are not computable. The set of finitary functions on the natural numbers is uncountable, so most are not computable. Examples of such functions are Busy Beaver and the Kolmogorov complexity. #TOSEE