Fork me on GitHub

阿克曼-彼得函数

The Ackermann function is a recursive function that takes two non-negative integers as inputs and returns a non-negative integer as output. The function is defined as follows:

 

阿克曼函数是一个数学函数,它是递归定义的,并且增长非常快。它是最简单的例子之一,它是一个可计算的全函数,但不是原始递归的。这意味着它可以由图灵机计算,但不能由一个更简单的计算模型计算,该模型对于任何输入都有有限的步骤。

阿克曼函数有不同的版本,但最常见的一个是两个参数的阿克曼-彼得函数,它对于非负整数 m 和 n 的定义如下:

 

  
A(m, n) =
- n + 1 if m = 0
- A(m-1, 1) if m > 0 and n = 0
- A(m-1, A(m, n-1)) if m > 0 and n > 0

 

 

Ackerman函数的反函数:
  ackerman函数的反函数——α(x)增长极为缓慢。对于可以想象到的n,α(n)都是在5之内的

用途:
  并查集的“路径压缩”算法:在集合的查找过程中顺便将树的深度降低。采用路径压缩后,每一次查询所用的时间复杂度为增长极为缓慢的ackerman函数的反函数——α(x)。对于可以想象到的n,α(n)都是在5之内的。

�(1,0)=1

�(1,1)=�(0,�(1,0))=�(0,1)=2

�(1,2)=�(0,�(1,1))=�(0,2)=22

�(1,3)=�(0,�(1,2))=�(0,22)=23

⋯⋯

�(1,�)=�(0,�(1,�−1))=2�

�(2,0)=2

�(2,1)=�(1,�(2,0))=�(1,2)=22=

posted @ 2023-05-04 13:43  stardsd  阅读(316)  评论(0编辑  收藏  举报