Ackerman函数的显式mu递归表达式


15

您能否指出如何通过标准mu递归运算符构建Ackerman函数(实际上,我对RózsaPéter和Raphael Robinson提出的版本很感兴趣)?我尝试了Péter和Robinson的原始论文,但是Péter的论文使用的语言与英语不同,Robinson的论文“递归和双递归”和“原始递归函数”也没有帮助:首先,它们似乎更相关,但用途如此称为双重递归运算符以定义Ackerman函数,因此在这种情况下,将寻求以mu递归形式对运算符进行明确定义。

与答案最接近的是史密斯(P. Smith)的“哥德尔定理简介”(CUP,2007年)(29.4 Ackermann-Peter函数是μ递归的),但他提出了以下内容:“使论证具有防水性乏味但并不困难。在这里详细说明没有什么可学的,所以我们不会。”

我还尝试过RózsaPéter的书“递归函数”(1967,学术出版社)。那里有很多递归运算符的变体。通常一个减少到另一个。我相信,有一种递归运算符适合于Ackerman函数的定义和将其简化为原始递归和最小化运算符的步骤序列,但是我发现自己无法全面研究。


1
实际上,这并不像刚开始看起来那样困难。诀窍是让运算符搜索Ackerman函数的计算,即直到输入的值的表,然后检查该表是否遵循该函数的定义。需要的是对有限序列进行编码/解码,并检查表。编码/解码是在许多教科书中明确定义的,可以通过有界通用量词对表条目之间的简单关系进行检查。有界通用量词可以表示为有界乘法,μ
Kaveh

在课本中也可以找到关于 -recursion 的有界乘法的明确定义。μ
卡夫

@Kaveh是的,在P. Smith的“哥德尔定理简介”中实现了相同的想法。给出了最小化运算符的编码和应用。棘手的部分是如何根据您的名字生成“表”。史密斯跳过了。因此,看来我不得不更加努力地思考,而不是在这里等待解决方案;)至少感谢您对通用方法的认可。
Artem Pelenitsyn 2011年

该表只是一个有限的序列,其中通过配对函数的结果对条目进行索引。其中[R Ç X ÿ μc:x<Len(c)y,z<x,x=<y,z>→c<y,z>=R(c,x,y)R(c,x,y)方程的rhs 。Ack(x,y)
卡夫

Answers:


13

将Ackermann函数完全分解为基本运算符确实很长,但这是一个草图:

请注意,当递归计算,在计算的任何时候,您都在处理形式为A m 1A m 2A m kz ))的表达式。双射配对功能p与逆π 1π 2,我们可以编码该状态为p ž p ķA(m,x)A(m1,A(m2,,A(mk,z))p(π1,π2)(在 k = 0的情况下仅为 p z 0 )。然后,我们可以定义一个状态的单步评估函数:p(z,p(k,p(mk,,p(m2,m1))p(z,0)k=0

;e(p(z,0))=p(z,0)

;e(p(z,p(k,p(0,c))))=p(z+1,p(k1,c))

;e(p(0,p(k,p(m+1,c))))=p(1,p(k,p(m,c)))

e(p(z+1,p(k,p(m+1,c))))=p(z,p(k+1,p(m+1,p(m,c))))

然后,您可以使用原始递归获得n步评估函数:

E n + 1 m x = e E n m x E(0,m,x)=p(x,p(1,m))E(n+1,m,x)=e(E(n,m,x))

最后,包左右-recursion Ë找到,我们得到以下形式的状态点p ž 0 - ž将是一个X μEp(z,0)zA(m,x)


谢谢!还有一个问题(也许很天真,对不起):类似于模式匹配的定义(f(0)= ...,f(n + 1)= ...)被广泛使用,但我怀疑它们是否真的被它们所取代mu递归函数的定义。是吗
Artem Pelenitsyn 2011年

这种区分大小写(例如,通过f 0 y = g y f x + 1 y = h x y )来定义只是一种特殊情况实际上不使用先前值的原始递归。在A x y 的计算中,您将另外使用辅助函数和反函数πf(x,y)f(0,y)=g(y)f(x+1,y)=h(x,y)A(x,y)相当多,如果你想打破这种下降到基本的操作集合。π1,π2
Klaus Draeger

例如,你可能转化的定义ë 小号= ˚F 1π 1小号π 2小号,其中˚F 1Ž 0 = p Ž 0 ˚F 1ž + 1 = ˚F 2ž π 1ee(s)=f1(π1(s),π2(s))f1(z,0)=p(z,0),其中 ˚F 2 ...你的想法。f1(z,m+1)=f2(z,π1(m+1),π2(m+1))f2
克劳斯·德拉格

7

这是Kaveh提出的想法的一种变体,但无论如何我还是在发帖,因为它允许您在地毯下扫掠许多令人讨厌的细节,而无需实际挥手。

关键事实是Ackermann函数的是原始递归的。在验证A m n = w所需的Ackermann值表的代码上找到非常原始的原始递归界并不难。不要试图达到尖锐的界限-越粗糙越容易!像B m n w = 2 m w wB(m,n,w)A(m,n)=wB(m,n,w)=2mww应该足够好,但这取决于您选择的编码方案。由于表值的验证可以用有界公式描述,因此它是原始递归的。

G(m,n,w)A(m,n)=μwG(m,n,w)

B(m,n,w)μμ


1
嗨弗朗索瓦 很高兴在cstheory上见到您。
卡夫

嗨,Kaveh。很高兴终于在这里回答一些问题!
弗朗索瓦G. Dorais
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.