上で考察した関数f ( n ) = A ( n , n )は非常に急速に増加するため、その逆関数f −1は非常にゆっくりと増加します。この逆アッカーマン関数f −1は通常αで表されます。実際、A (4, 4)は 1 のオーダーであるため、任意の実用的な入力サイズnに対してα ( n ) は 5 未満です。。
This function arises in more precise analyses of the algorithms mentioned above, and gives a more refined time bound. In the disjoint-set data structure, m represents the number of operations while n represents the number of elements; in the minimum spanning tree algorithm, m represents the number of edges while n represents the number of vertices. Several slightly different definitions of α(m, n) exist; for example, log2n is sometimes replaced by n, and the floor function is sometimes replaced by a ceiling.
Other studies might define an inverse function of one where m is set to a constant, such that the inverse applies to a particular row.[24]
The inverse of the Ackermann function is primitive recursive, since it is graph primitive recursive, and it is upper bounded by a primitive recursive function.[25]
The inverse of the Ackermann function appears in some time complexity results. For instance, the disjoint-set data structure takes amortized time per operation proportional to the inverse Ackermann function,[29] and cannot be made faster within the cell-probe model of computational complexity.[30]
In discrete geometry
Certain problems in discrete geometry related to Davenport–Schinzel sequences have complexity bounds in which the inverse Ackermann function appears. For instance, for line segments in the plane, the unbounded face of the arrangement of the segments has complexity , and some systems of line segments have an unbounded face of complexity .[31]
As a benchmark
The Ackermann function, due to its definition in terms of extremely deep recursion, can be used as a benchmark of a compiler's ability to optimize recursion. The first published use of Ackermann's function in this way was in 1970 by Dragoș Vaida[32] and, almost simultaneously, in 1971, by Yngve Sundblad.[14]
Sundblad's seminal paper was taken up by Brian Wichmann (co-author of the Whetstone benchmark) in a trilogy of papers written between 1975 and 1982.[33][34][35]
1234For better readabilityS(0) is notated as 1,S(S(0)) is notated as 2,S(S(S(0))) is notated as 3,etc...
↑The maximum depth of recursion refers to the number of levels of activation of a procedure that exist during the deepest call of the procedure. Cornelius & Kirby (1975)
↑Cohen 1987, p.56, Proposition 3.16 (see in proof).
↑Another sequence of functions, , defining the Grzegorczyk hierarchy, is frequently used to partition the primitive recursive functions into "growth classes". However, (or ) and do not align in their indexing.
Ackermann, Wilhelm (1928). "Zum Hilbertschen Aufbau der reellen Zahlen"[On the Hilbertian construction of the real numbers]. Mathematische Annalen (in German). 99: 118–133. doi:10.1007/BF01459088. S2CID123431274.
Calude, Cristian; Marcus, Solomon; Tevy, Ionel (November 1979). "The first example of a recursive function which is not primitive recursive". Historia Math.6 (4): 380–84. doi:10.1016/0315-0860(79)90024-7.
Cohen, Daniel E. (January 1987). Computability and logic. Halsted Press. ISBN9780745800349.
Cornelius, B. J.; Kirby, G. H. (1975). "Depth of recursion and the Ackermann function". BIT Numerical Mathematics. 15 (2): 144–150. doi:10.1007/BF01932687. S2CID120532578.
Czerwiński, Wojciech; Orlikowski, Łukasz (7 February 2022). Reachability in Vector Addition Systems is Ackermann-complete. Proceedings of the 2021 IEEE 62nd Annual Symposium on Foundations of Computer Science. arXiv:2104.13866. doi:10.1109/FOCS52979.2021.00120.
Fredman, M.; Saks, M. (May 1989). "The cell probe complexity of dynamic data structures". Proceedings of the twenty-first annual ACM symposium on Theory of computing – STOC '89. pp.345–354. doi:10.1145/73007.73040. ISBN0897913078. S2CID13470414.
van Heijenoort, Jean (1977) [reprinted with corrections, first published in 1967]. From Frege to Gödel: A Source Book in Mathematical Logic, 1879–1931. Harvard University Press.
Leroux, Jérôme (7 February 2022). The Reachability Problem for Petri Nets is Not Primitive Recursive. Proceedings of the 2021 IEEE 62nd Annual Symposium on Foundations of Computer Science. arXiv:2104.12695. doi:10.1109/FOCS52979.2021.00121.
Matos, Armando B (7 May 2014). "The inverse of the Ackermann function is primitive recursive"(PDF). Archived(PDF) from the original on 9 October 2022.
Meeussen, V. C. S.; Zantema, H. (1992). Derivation lengths in term rewriting from interpretations in the naturals(PDF) (Report). University of Utrecht Department of Computer Science. ISSN0924-3275. Archived(PDF) from the original on 9 October 2022.
Meyer, Albert R.; Ritchie, Dennis MacAlistair (1967). "The complexity of loop programs". Proceedings of the 1967 22nd national conference. ACM '67: Proceedings of the 1967 22nd national conference. pp.465–469. doi:10.1145/800196.806014.
Monin, Jean-Francois; Hinchey, M. G. (2003). Understanding Formal Methods. Springer. p.61. ISBN9781852332471.
Munafo, Robert (1999a). "Versions of Ackermann's Function". Large Numbers at MROB. Retrieved 6 November 2021.
Munafo, Robert (1999b). "Inventing New Operators and Functions". Large Numbers at MROB. Retrieved 6 November 2021.
Odifreddi, Piergiorgio (1999). Classical recursion theory. Vol. II. Studies in Logic and the Foundations of Mathematics. Vol.143. Amsterdam: North-Holland. ISBN978-0-444-50205-6. MR1718169.
Paulson, Lawrence C. (2021). "Ackermann's Function in Iterative Form: A Proof Assistant Experiment". Retrieved 19 October 2021.
Péter, Rózsa (1935). "Konstruktion nichtrekursiver Funktionen" [Construction of non-recursive functions]. Mathematische Annalen (in German). 111: 42–60. doi:10.1007/BF01472200. S2CID121107217.
Pettie, S. (2002). "An inverse-Ackermann style lower bound for the online minimum spanning tree verification problem". The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002. Proceedings. pp.155–163. doi:10.1109/SFCS.2002.1181892. ISBN0-7695-1822-2. S2CID8636108.
Porto, António; Matos, Armando B. (1 September 1980). "Ackermann and the superpowers"(PDF). ACM SIGACT News. 12 (3): 90–95. doi:10.1145/1008861.1008872. S2CID29780652. Archived(PDF) from the original on 9 October 2022. Original version 1980, published in ACM SIGACT News, modified on 20 October 2012 and 23 January 2016 (working paper)
Ritchie, Robert Wells (November 1965). "Classes of recursive functions based on Ackermann's function". Pacific Journal of Mathematics. 15 (3): 1027–1044. doi:10.2140/pjm.1965.15.1027.
Sundblad, Yngve (March 1971). "The Ackermann function. A theoretical, computational, and formula manipulative study". BIT Numerical Mathematics. 11 (1): 107–119. doi:10.1007/BF01935330. S2CID123416408.
Vaida, Dragoș (1970). "Compiler Validation for an Algol-like Language". Bulletin Mathématique de la Société des Sciences Mathématiques de la République Socialiste de Roumanie. Nouvelle série. 14 (62) (4): 487–502. JSTOR43679758.
Wainer, S. S. (1970). "A classification of the ordinal recursive functions". Archiv für mathematische Logik und Grundlagenforschung. 13 (3–4): 136–153. doi:10.1007/bf01973619.
Ward, Martin P. (16 July 1993). Iterative Procedures for Computing Ackerman's Function. CiteSeerX10.1.1.35.9907.
Wichmann, Brian A. (March 1976). "Ackermann's function: A study in the efficiency of calling procedures". BIT Numerical Mathematics. 16: 103–110. CiteSeerX10.1.1.108.4125. doi:10.1007/BF01940783. S2CID16993343.
Wichmann, Brian A. (July 1977). "How to call procedures, or second thoughts on Ackermann's function". BIT Numerical Mathematics. 16 (3): 103–110. doi:10.1002/spe.4380070303. S2CID206507320.
Wichmann, Brian A. (July 1982). "Latest results from the procedure calling test, Ackermann's function"(PDF). Archived(PDF) from the original on 9 October 2022.