|
Article on other languages:
|
In mathematics, theoretical computer science and mathematical logic, the computable numbers, also known as the recursive numbers or the computable reals, are the real numbers that can be computed to within any desired precision by a finite, terminating algorithm. Equivalent definitions can be given using μ-recursive functions, Turing machines or λ-calculus as the formal representation of algorithms. The computable numbers form a real closed field and can be used in the place of real numbers for many, but not all, mathematical purposes.
Informal definition using a Turing machine as exampleIn the following, Minsky defines the numbers to be computed in a manner similar to those defined by Alan Turing in 1936, i.e. as "sequences of digits interpreted as decimal fractions" between 0 and 1:
The key notions in the definition are (1) that some n is specified at the start, (2) when the machine's internal counter reaches this n the computation terminates after printing the nth decimal digit on its tape -- otherwise it would continue computing forever. An alternate form of (2) -- the machine successively prints all n of the digits on its tape, halting after printing the nth -- emphasizes Minsky's observation: (3) That by use of a Turing machine, a finite definition -- in the form of the machine's TABLE -- is being used to define what is a potentially-infinite string of decimal digits. Formal definitionA real number a is said to be computable if it can be approximated by some computable function in the following manner: given any integer There are two similar definitions that are equivalent:
There is another equivalent definition of computable numbers via computable Dedekind cuts. A computable Dedekind cut is a computable function An example is given by a program D that defines the cube root of 3. Assuming A real number is computable if and only if there is a computable Dedekind cut D converging to it. The function D is unique for each irrational computable number (although of course two different programs may provide the same function). A complex number is called computable if its real and imaginary parts are computable. PropertiesAlthough the set of real numbers is uncountable, the set of computable numbers is countable and thus almost all real numbers are not computable. The computable numbers can be counted by assigning a Gödel number to each Turing machine definition. This gives a function from the naturals to the computable reals. Although the computable numbers are an ordered field, the set of Gödel numbers corresponding to computable numbers is not itself computably enumerable, because it is not possible to effectively determine which Gödel numbers correspond to Turing machines that produce computable reals. In order to produce a computable real, a Turing machine must compute a total function, but the corresponding decision problem is in Turing degree 0′′. Thus Cantor's diagonal argument cannot be used to produce uncountably many computable reals; at best, the reals formed from this method will be uncomputable. The arithmetical operations on computable numbers are themselves computable in the sense that whenever real numbers a and b are computable then the following real numbers are also computable: a + b, a - b, ab, and a/b if b is nonzero. These operations are actually uniformly computable; for example, there is a Turing machine which on input (A,B,ε) produces output r, where A is the description of a Turing machine approximating a, B is the description of a Turing machine approximating b, and r is an ε approximation of a+b. It is known that the least upper bound of a bounded increasing computable sequence of computable real numbers need not be a computable real number; nevertheless, the calculus can be developed in the field of computable numbers, although an altered definition of the derivative is needed to avoid certain difficulties that can occur when considering functions with removable singularities. The order relation on the computable numbers is not computable. There is no Turing machine which on input A (the description of a Turing machine approximating the number a) outputs "YES" if a > 0 and "NO" if While the full order relation is not computable, the restriction of it to pairs of unequal numbers is computable. That is, there is a program that takes an input two turing machines A and B approximating numbers a and b, where a≠b, and outputs whether a<b or a>b. It is sufficient to use ε-approximations where ε<|b-a|/2; so by taking increasingly small ε (with a limit to 0), one eventually can decide whether a<b or a>b. Every computable number is definable, but not vice versa. There are many definable, noncomputable real numbers, including:
A real number is computable if and only if the set of natural numbers it represents (when written in binary and viewed as a characteristic function) is computable. Computing digit stringsTuring's original paper defined computable numbers as follows:
Turing was aware that this definition is equivalent to the ε-approximation definition given above. The argument proceeds as follows: if a number is computable in the Turing sense, then it is also computable in the ε sense: if n > log10(1 / ε), then the first n digits of a provide an ε approximation of a. For the converse, we pick an ε computable real number a and distinguish two cases. If a is rational, then a is also Turing computable, since the digit expansions of rational numbers are eventually periodic and can therefore be produced by simple algorithms. If a is not rational, then it is possible to compute ever more precise ε-approximations until the nth digit is certain. This will eventually happen because a is not rational and thus the decimal expansion cannot be eventually constant. There is no algorithm which takes as input the description of a Turing machine which produces ε approximations for the computable number a, and produces as output a Turing machine which enumerates the digits of a in the sense of Turing's definition[citation needed]. So while the two definitions are equivalent, they are not "computably equivalent". An important property of Turing's definition is that the arithmetic operations are not uniformly computable in this representation. This can be seen most easily with addition: when adding decimal numbers, in order to produce one digit it may be necessary to look arbitrarily far to the right to determine if there is a carry to the current location. It is true, however, that if two real numbers have representations according to Turing's definitions then so will their sum, product, difference, and quotient. This lack of uniformity is one reason that the contemporary definition of computable numbers uses ε approximations rather than decimal expansions. Can computable numbers be used instead of the reals?The computable numbers include many of the specific real numbers which appear in practice, including all algebraic numbers, as well as e, π, and many other transcendental numbers. The question naturally arises of whether it is possible to dispose of the full set of reals and use computable numbers for all of mathematics. This idea is appealing from a constructivist point of view, and has been pursued by what Bishop and Richman call the Russian school of constructive mathematics. Even though the calculus can be developed over the computable numbers, the set of computable numbers is not closed under basic operations such as taking the supremum of a bounded sequence, so this set cannot be used as a replacement for the full set of real numbers in classical mathematics. ImplementationThere are some computer packages that work with computable real numbers, representing the real numbers as programs computing approximations. One example is the RealLib package (reallib home page). References
Computable numbers were defined independently by Turing, Post and Church. See The Undecidable, ed. Martin Davis, for further original papers. See alsoExternal links |
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net