A multi-variable function from the natural numbers to the natural numbers with a very fast rate of growth.
In 1928, W. Ackermann [a1], in connection with some problems that his PhD supervisor, D. Hilbert, was investigating, gave an example of a recursive (i.e., computable) function that is not primitive recursive. (A primitive recursive function is one that can be obtained from projections, the zero function, and the successor function using composition and simple inductive definitions. Cf. also Recursive function.) He defined a function of three variables using a double induction (see below). It subsumes addition, multiplication, exponentiation, and all higher-order analogues of these operations. Because of this it grows too rapidly to be primitive recursive.
Over the years, several authors have given other examples of such functions, which are usually also called "the" Ackermann function. Some of these will be described below. These functions show that the operations permitted in primitive recursion fail to capture completely the notion of "computability" (cf. also Computable function); one needs to permit an additional operation such as minimization.
Ackermann's original function is defined as follows:
The first case of the definition states that is just addition of its first two arguments when the third argument is . Similarly, it can easily be proved that and . Furthermore consists of an exponential tower of 's, with 's in the tower. For example, , a number with more than three trillion decimal digits.
Here it is easy to show that , , , and is less than an exponential tower of 's.
A variant described by R. Tarjan [a9] is as follows:
This time for all , and for all one finds that and is an exponential tower of 's. Another slight modification of Ackermann's function can be used to define the Grzegorczyk hierarchy of primitive recursive functions [a4], [a6].
Tarjan also studied the extremely slowly growing "inverse" of his version of Ackermann's function, , which often arises in computer science (as it did in [a9]) as part of an analysis of algorithmic complexity, cf. also Complexity theory. (Tarjan's result that the well-known path compression algorithm for set unions is almost linear comes from the fact that for all and that could ever arise in practice.) The Ackermann function has also been used to measure performance of implementations of recursive subroutine calls in programming languages because its definition is so highly recursive in form.
Comments on the history of the Ackermann function can be found in [a2] and [a3]. In particular, C. Calude and others have pointed out that credit for producing the first example of a recursive function that is not primitive recursive belongs jointly to Ackermann and G. Sudan [a8].
|[a1]||W. Ackermann, "Zum Hilbertschen Aufbau der reellen Zahlen" Math. Ann. , 99 (1928) pp. 118–133|
|[a2]||C. Calude, S. Marcus, I. Ţevy, "The first example of a recursive function which is not primitive recursive" Historia Math. , 6 : 4 (1979) pp. 380–384|
|[a3]||J.W. Grossman, R.S. Zeitman, "An inherently iterative computation of Ackermann's function" Theoret. Comput. Sci. , 57 : 2–3 (1988) pp. 327–330|
|[a4]||A. Grzegorczyk, "Some classes of recursive functions" Rozprawy Mat. , 4 (1953) pp. 1–45|
|[a5]||R. Péter, "Konstruktion nichtrekursiver Funktionen" Math. Ann. , 111 (1935) pp. 42–60|
|[a6]||R.W. Ritchie, "Classes of recursive functions based on Ackermann's function" Pacific J. Math. , 15 (1965) pp. 1027–1044|
|[a7]||R.M. Robinson, "Recursion and double recursion" Bull. Amer. Math. Soc. , 54 (1948) pp. 987–993|
|[a8]||G. Sudan, "Sur le nombre transfini " Bull. Math. Soc. Roumaine Sci. , 30 (1927) pp. 11–30|
|[a9]||R.E. Tarjan, "Efficiency of a good but not linear set union algorithm" J. Assoc. Comput. Mach. , 22 (1975) pp. 215–225|
Ackermann function. Encyclopedia of Mathematics. URL: http://encyclopediaofmath.org/index.php?title=Ackermann_function&oldid=18747