首页 > 其他分享 >阿克曼-彼得函数

阿克曼-彼得函数

时间:2023-05-04 13:56:04浏览次数:38  
标签:function 彼得 函数 22 阿克曼 反函数

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=

标签:function,彼得,函数,22,阿克曼,反函数
From: https://www.cnblogs.com/sddai/p/17370990.html

相关文章

  • HAL库___ADC的回调函数
    STM32CubeMx配置ADC转换完成的回调函数当使用DMA传输ADC数据时当传输完成后HAL库一般都会有回调函数。进入HAL_ADC_Start_DMA();底层可以找到传输完成后调用了ADC_DMAConvCplt; 定义过去可以看到: 最后调用了HAL_ADC_ConvCpltCallback(hadc);回调函数。ADC转换并打开中断在......
  • python 内置函数map()、filter()函数
    map()函数接受两个参数:第一个参数是一个函数,第二个参数是一个可迭代对象(如列表、元组等)。该函数会将可迭代对象中的每个元素依次传递给第一个参数指定的函数,并返回一个新的可迭代对象,其中每个元素都是原始对象经过该函数转换后的结果。具体来说,map()函数会将可迭代对象中的每个......
  • python 函数
    在Python中,函数是一段代码块,用于完成特定的任务。函数通常接受一个或多个参数,并返回一个结果。根据函数的定义方式和参数类型,可以将Python函数分为以下几类:内置函数:Python内置了很多常用的函数,如 print()、len()、int() 等。自定义函数:使用 def 关键字可以自定义函数......
  • 自动驾驶基于阿克曼模型的控制算法仿真测试 , 本商品基于ROS扣取单独的阿克曼控制算法
    自动驾驶基于阿克曼模型的控制算法仿真测试,本商品基于ROS扣取单独的阿克曼控制算法模块进行测试,能够帮助朋友们学习基于阿克曼模型的控制算法实现以及对该控制算法的理解。本商品的阿克曼实现部分带有代码注释,帮助您进行算法实现的理解和学习。ID:47100685468770383......
  • python 匿名函数(lambda函数)
    Python中的匿名函数是指没有命名标识符的函数,通常被称为lambda函数。与普通函数不同,它们是一种更加简洁的方式来编写小型临时函数。在Python中,匿名函数使用关键字lambda来定义,其语法如下:lambdaarguments:expression其中,arguments表示函数参数,可以是一个或多个,多个参数之间用......
  • Bootstrap + Django - 前端bootstrap-table列表数据使用回调函数控制显示某一列数据
    前端bootstrap-table列表数据使用回调函数控制显示某一列数据1.效果1.有可以操作用户的权限,显示操作列2.无操作用户的权限,不显示操作列2.主要代码1.前端js<script>var$articlesTable=$('#table').bootstrapTable('destroy').bootstrapTable({url:'/team......
  • PHP获取时间戳、获取天周月的起始时间、指定时间所在周、指定时间的各个周等相关函数
    一、时间戳和日期互相转换//获取时间戳$date=time();//获取当前时间戳$date=mktime(0,0,0,10,10,2020);//获取指定时间的时间戳2020年10月10日0时0分0秒//日期转换为时间戳$date="2019-08-0808:08:08";$timestamp=strtotime($date);//将时间戳......
  • Rust中的函数指针
    通过函数指针允许我们使用函数作为另一个函数的参数。函数的类型是fn(使用小写的”f”)以免与Fn闭包trait相混淆。fn被称为函数指针(functionpointer)。指定参数为函数指针的语法类似于闭包。函数指针类型(使用关键字 fn 写出)指向那些在编译时不必知道函数标识符的函数。......
  • 函数调用栈的一些简单认识
    程序的执行可以理解为连续的函数调用,每一个用户态(用户态指的是CPU指令集权限ring0,用户只能访问常用CPU指令集,在应用程序中运行)进程都对应一个调用栈结构,当一个函数执行完毕后,会自动回到原先调用函数的位置(call指令)的下一步命令并执行,堆栈结构的作用是保存函数返回地址、传......
  • C++中的构造析构函数—2—虚析构函数
    1.构造函数不能定义为虚函数,每个对象的虚函数表指针是在构造函数中初始化的,因为构造函数没执行完,所以虚函数表指针还没初始化好。而析构函数可以定义为虚函数,也必须要定义为虚函数,否则在析构上无法体现出多态,导致子类的析构函数不会被调用,可能导致内存泄漏等风险。2.实验:#inc......