打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

阿克曼函数

来自Googology Wiki

阿克曼函数(Ackermann function)是由德国数学家 Wilhelm Ackermann 创造的非原始递归函数,后来由 Rozsa Peter 和 Raphael M. Robinson 简化。阿克曼函数有多种不同的版本。

一般定义

定义

Robinson 的版本[1]是最常被使用的阿克曼函数:

A(m,n)={n+1,m=0A(m1,1),m0 and n=0A(m1,A(m,n1)),m0 and n0

在这个定义下,A(x,y)=2x2(y+3)3,它的 FGH 增长率约为 ω

示例

A(2,2)=A(1,A(2,1))=A(1,A(1,A(2,0)))=A(1,A(1,A(1,1)))=A(1,A(1,A(0,A(1,0))))=A(1,A(1,A(0,A(0,1))))=A(1,A(1,A(0,2)))=A(1,A(1,3))=A(1,A(0,A(1,2)))=A(1,A(0,A(0,A(1,1))))=A(1,A(0,A(0,A(0,A(1,0)))))=A(1,A(0,A(0,A(0,A(0,1)))))=A(1,A(0,A(0,A(0,2))))=A(1,A(0,A(0,3)))=A(1,A(0,4))=A(1,5)=A(0,A(1,4))=A(0,A(0,A(1,3)))=A(0,A(0,A(0,A(1,2))))=A(0,A(0,A(0,A(0,A(1,1)))))=A(0,A(0,A(0,A(0,A(0,A(1,0))))))=A(0,A(0,A(0,A(0,A(0,A(0,1))))))=A(0,A(0,A(0,A(0,A(0,2)))))=A(0,A(0,A(0,A(0,3))))=A(0,A(0,A(0,4)))=A(0,A(0,5))=A(0,6)=7

函数值表

A(m,n)的值
m\n 0 1 2 3 4 n
0 1 2 3 4 5 n+1
1 2 3 4 5 6 n+2=2+(n+3)3
2 3 5 7 9 11 2n+3=2(n+3)3
3 5 13 29 61 125 2(n+3)3
4 13 65533 265536 – 3 22655363 222655363 =2(n+3)3
5 65533 243 253 263 273 2(n+3)3
6 233 243 253 263 273 2(n+3)3
m (2m23)3 (2m24)3 (2m25)3 (2m26)3 (2m27)3 (2m2(n+3))3

其他定义

(本节内容大部分来自 Googology Wiki。[2]

原始定义

A(n,x,y)={x+1,n=0A(n1,A(n1,A(n1,0,x),x),x)y times,n0

它可以用上箭头表示法表示为 A(n,x,y)=xn2y,但是在它被定义前上箭头表示法还未被发明。它是根据高阶原始递归(即函数上的原始递归)定义的。[3]

Friedman 的定义

A(x,y)={2,y=12y,x=1 and y>1A(x1,A(x,y1)),x>1 and y>1

在这个定义下,A(x,y)=2x1y[4]

Buck 的定义

Buck 使用相同的基本递归定义一个相关函数:[5]F(x,y)=F(x1,F(x,y1))

但边界值略有不同:

F(0,y)=y+1F(1,0)=2F(2,0)=0F(x,0)=1for x=3,4,

这个函数递归得到:

F(1,y)=2+yF(2,y)=2yF(3,y)=2yF(4,y)=2y

F(4,n) 给出了序列 1, 2, 4, 16, 65536, 265536,... (OEIS A014221);

F(n,n) 给出了序列 1, 3, 4, 8, 65536, 265536,...(OEIS A001695)。[6]

Goucher 的定义

A.P.Goucher 在其博客文章中提出了阿克曼函数的以下定义:[7]

  • f1(n)=n+2
  • fm+1(n)=fmn(2)
  • A(n)=fn(n)

该文章描述了该函数的另一个变体,该变体与以下问题相关:

给定一排盒子,每个盒子中有若干硬币,我们可以选择一个盒子并按照以下规则之一进行操作:

  1. 从该盒子中移除一枚硬币,并在第 n+1 个盒子中添加两枚硬币。
  2. 从该盒子中移除一枚硬币,并反转第 n+1 和 n+2 个盒子中的硬币数量。

我们可以选择一种策略,即挑选盒子并应用相应的规则。考虑以下情况:除最右侧的盒子外,所有盒子均为空。此时,给定一排 n 个盒子,每个盒子中各有一枚硬币,f(n) 表示最右侧盒子中可能出现的最大硬币数量。计算该函数的精确值可能颇具挑战,但显而易见的是 f(1)=1f(2)=3f(3)=7。而证明 f(4)=28 则稍显困难。

其他内容

定义在 R* 上的阿克曼函数

CompactStar 的定义:[8]

A(x,y)={x+y+1,x<1A(x1,yA(x1,1)y+1),x1y<1A(x1,A(x,y1)),x1y1

阿克曼函数和阿克曼数

数列 An=A(n+2,n,n)(使用原始定义)被称为阿克曼数(Ackermann Numbers),[9]这里 An=nnn

非原始递归的函数

阿克曼函数是一个良定义全函数的最简单例子,它是可计算的但不是原始递归的,这为 20 世纪初人们认为每个可计算函数也是原始递归的这一信念提供了反例。[10][11][12]

阿克曼函数的逆函数

λi(n)=min{j|A(i,j)n} 定义的函数 λ:2(i,n)λi(n)(亦记为 α(i,n))被称为阿克曼函数的逆函数(inverse-Ackermann function),尽管它并非非双射映射 A:2 本身的逆映射。[13]由于 A(m,n) 的增长速度相对较快,逆阿克曼函数因此呈现出极为缓慢的增长特性。有趣的是,该函数已在时间复杂度理论领域得到实际应用。[14][15]

阿克曼函数的对角化

阿克曼函数让我有些困扰,因为它是一个二元函数,而我们更关注一元函数。显然,对于任意的 n,Ackermann(n,n) 应该有个特定的名称吧?比如 Knackered_Man(n) 或者 Ackermann(n,n)?或者简称 Gag(n)?另外,像+、*、^这样的进阶运算……它们在递进过程中会生成新的函数吗?这就是所谓的 tetration 和 quintation 的意思吗?感谢解答这些疑问 ——Alistair Cockburn

函数

A(x)=A(x,x)

(基于 Robinson 定义)是阿克曼函数的对角化,这个函数也被叫做 Gag 或 Knackeredman。这个名字来自 Alistair Cockburn,由于阿克曼函数与上箭头表示法的关系,

A(x)=2x2(x+3)3

[16]

  1. Weisstein, Eric W. "Ackermann Function." From MathWorld--A Wolfram Resource. https://mathworld.wolfram.com/AckermannFunction.html
  2. Ackermann Function | Googology Wiki, Cooperation, January 11, 2009. https://googology.fandom.com/wiki/Ackermann_function
  3. Ackermann, Wilhelm (1928). "Zum Hilbertschen Aufbau der reellen Zahlen". Mathematische Annalen. 99: 118–133. https://doi.org/10.1007%2FBF01459088
  4. Harvey M. Friedman. THE ACKERMANN FUNCTION IN ELEMENTARY ALGEBRAIC GEOMETRY, October 21, 2000. https://cpb-us-w2.wpmucdn.com/u.osu.edu/dist/1/1952/files/2014/01/AckAlgGeom102100-1rrdkag.pdf
  5. Buck, R. C. "Mathematical Induction and Recursive Definitions." Amer. Math. Monthly 70, 128-135, 1963. https://cse.buffalo.edu/~rapaport/Papers/Papers.by.Others/buck63-MathIndnRecDefs.pdf
  6. Sloane, N. J. A. Sequences A001695/M2352 and A014221 in "The On-Line Encyclopedia of Integer Sequences."
  7. Goucher, Adam P. Fast-growing functions, part 1, December 15, 2012. http://cp4space.wordpress.com/2012/12/15/fast-growing-1
  8. CompactStar. Continuous Ackermann function, June15, 2023. https://nirvanasupermind.github.io/googology/continuous-ackermann-function.html
  9. Ackermann Number | Googology Wiki. Cooperation. January 1, 2001. https://googology.fandom.com/wiki/Ackermann_number
  10. Dötzel, G. "A Function to End All Functions." Algorithm: Recreational Programming 2.4, 16-17, 1991.
  11. Kleene, S. C. Introduction to Metamathematics. Princeton, NJ: Van Nostrand, 1964.
  12. Péter, R. Rekursive Funktionen in der Komputer-Theorie. Budapest: Akad. Kiado, 1951.
  13. Pettie, S. An Inverse-Ackermann Type Lower Bound For Online Minimum Spanning Tree Verification*. Combinatorica 26, 207–230 (2006). https://doi.org/10.1007%2Fs00493-006-0014-1
  14. Reingold, E. H. and Shen, X. "More Nearly Optimal Algorithms for Unbounded Searching, Part I: The Finite Case." SIAM J. Comput. 20, 156-183, 1991.
  15. Tarjan, R. E. Data Structures and Network Algorithms. Philadelphia PA: SIAM, 1983.
  16. Gag | Googology Wiki, Cooperation, January 11, 2009. https://googology.fandom.com/wiki/Gag