| Table of contents |
Computable functions are the central objects of study in the theory of computation. Informally, a function is computable if there exists a mechanical procedure (an algorithm) that, given suitable inputs, produces the function's output after a finite number of steps. In formal models this is usually expressed by the existence of a Turing machine that, on any input from the function's domain, halts and outputs the corresponding value.
A function f that takes k natural numbers as arguments is written as f(n1, n2, ..., nk). Two important formal classes are distinguished:
Several equivalent formalisms capture the same intuitive notion of computability: Turing machines, the lambda calculus, and the class of (partial) recursive functions (built from initial functions using composition, primitive recursion and the minimisation operator). This equivalence is captured by the Church-Turing thesis, which states that any function intuitively computable by an effective procedure is computable by a Turing machine. The Church-Turing thesis is not a formal theorem but a widely accepted identification of the informal notion of algorithm with these formal models.
When a task can be specified by a finite set of exact rules that transform input symbols to output symbols, that task is computable. The computability notion depends on the representation of inputs and outputs, and on the requirement of finite termination for every valid input (for total functions).
Non-computable (uncomputable) functions are functions for which there is no Turing machine that computes the function for all inputs in its domain. Equivalently, no algorithm exists that, given any valid instance, always halts and returns the correct answer.
The set of all Turing machines (or programs written in any fixed formal language) is countable. The set of all functions from the natural numbers to the natural numbers is uncountable. Therefore most functions N → N are not computable. A similar argument shows that most real numbers are not computable: the computable reals form a countable subset of the uncountable set of all real numbers.
Decision problems can be seen as functions whose outputs are "yes" or "no" (or 1 and 0). A decision problem is decidable (or recursive) if its characteristic function is total computable. A problem is undecidable if no Turing machine decides it for all inputs. Many undecidable problems correspond directly to non-computable functions.
A set S ⊆ N (or a decision problem) is recursively enumerable (r.e.) or semi-decidable if there is a Turing machine that halts and accepts exactly the elements of S, while on inputs not in S the machine may run forever. Every decidable set is r.e., but there are r.e. sets that are not decidable; the halting set is a canonical example.
Partial computable functions occur naturally when an algorithm may fail to halt for certain inputs. The class of partial computable functions is closed under composition and primitive recursion; adding the minimisation operator yields the full class of partial recursive functions. Total computable functions are a proper subset of partial computable functions.
Example - Addition: An algorithm that computes f(a,b) = a + b can be described by repeated incrementing of one value by one, b times, or by binary addition using standard carry rules; both give finite procedures that always terminate and therefore define a total computable function.
Example - gcd(a,b): The Euclidean algorithm repeatedly replaces the larger of a and b by its remainder on division by the smaller until a remainder is zero. The final non-zero value is gcd(a,b). The algorithm always terminates on natural numbers and so gcd is a total computable function.
The distinction between computable and non-computable functions is fundamental in theoretical computer science. Computable functions are those realised by finite, terminating algorithms (or by Turing machines); non-computable functions cannot be obtained by any algorithm. Understanding this boundary - and the finer notions of decidability, semi-decidability and partial versus total functions - is essential for reasoning about what can and cannot be achieved by computation.
18 videos|95 docs|44 tests |
| 1. What is the difference between computable and non-computable functions? | ![]() |
| 2. Can you provide an example of a computable function in computer science engineering? | ![]() |
| 3. Are there any real-world examples of non-computable functions? | ![]() |
| 4. Why is the concept of computable and non-computable functions important in computer science engineering? | ![]() |
| 5. Can non-computable functions be approximated or solved using other methods? | ![]() |