族谱网 头条 人物百科

原始递归函数

2020-10-16
出处:族谱网
作者:阿族小谱
浏览:262
转发:0
评论:0
定义原始递归函数接受自然数或自然数的元组作为参数并生成自然数。接受n个参数的函数叫做n-元函数。基本原始递归函数用如下公理给出:常数函数:0元常数函数0是原始递归的。后继函数:1元后继函数S,它接受一个参数并返回皮亚诺公理给出的后继数,是原始递归的。投影函数:对于所有n≥1和每个1≤i≤n的i,n元投影函数Pi,它接受n个参数并返回它们中的第i个参数,是原始递归的。更加复杂的递归函数可以通过应用下列公理给出的运算来获得:复合:给定k元原始递归函数f,和k个m元原始递归函数g1,...,gk,f和g1,...,gk的复合,也就是m元函数h(x1,...,xm)=f(g1(x1,...,xm),...,gk(x1,...,xm)),是原始递归的。原始递归:给定k元原始递归函数f,和k+2元原始递归函数g,定义为f和g的原始递归的k+1元函数,也就是函数h这里的h(0,x1,...,xk)=f(...

定义

原始递归函数接受自然数或自然数的元组作为参数并生成自然数。接受 n 个参数的函数叫做 n-元函数。基本原始递归函数用如下公理给出:

常数函数: 0 元常数函数0 是原始递归的。

后继函数: 1 元后继函数 S,它接受一个参数并返回皮亚诺公理给出的后继数,是原始递归的。

投影函数: 对于所有 n≥1 和每个 1≤i≤n 的 i,n 元投影函数 Pi,它接受 n 个参数并返回它们中的第 i 个参数,是原始递归的。

更加复杂的递归函数可以通过应用下列公理给出的运算来获得:

复合: 给定k 元原始递归函数 f,和 k 个 m 元原始递归函数 g1,...,gk,f 和 g1,...,gk 的复合,也就是 m 元函数 h(x1,...,xm) = f(g1(x1,...,xm),...,gk(x1,...,xm)), 是原始递归的。

原始递归: 给定 k 元原始递归函数 f,和 k+2 元原始递归函数 g,定义为 f 和 g 的原始递归的 k+1 元函数,也就是函数 h 这里的 h(0,x1,...,xk) = f(x1,...,xk) 并且 h(S(n),x1,...,xk) = g(h(n,x1,...,xk),n,x1,...,xk), 是原始递归的。

服从这些公理的函数是原始递归的,如果它是上述基本函数之一,或者它可以通过应用有限次数的运算获得自基本函数。

投影函数的作用

投影函数可用来避免采用上述明显刻板的函数元数方式;通过使用各种投影函数的复合,有可能把一个函数的参数子集传递到另一个函数。例如,如果 g 和 h 是二元原始递归函数,则

也是原始递归的。使用投影函数的一个形式定义为

转换谓词到数值函数

在某些设置中,自然的考虑接受混合了数值和真值{ t= true, f=false } 的参数,或生成真值作为输出的原始递归函数(参见 Kleene [1952 pp.226-227])。这可以通过把真值识别为任何固定方式的数值来完成。例如,通常把真值t 识别为 1 和真值 f 识别为 0。一旦作出这种识别,集合 A 的特征函数,它在文字上返回 1 或 0,可以被看作判定一个数是否在集合 A 中的谓词。把谓词识别为数值函数的这种方式将假定于本文余分。

例子

加法

直觉上我们会把加法递归的定义为:

为了使它适合于严格的原始递归定义,我们定义:

(注意: 这里的 P1 是一个函数,它接受 3 个参数并返回第一个。)

P1 是简单的恒等函数;包含它是上述原始递归运算定义的要求;它扮演了 f 的角色。S 和 P1 的复合,它是原始递归的,它扮演了 g 的角色。

减法

我们可以定义有限减法,就是说,截止到 0 的减法(因为我们还没有负数的概念呢)。首先我们必须定义"前驱" 函数,它担任后继函数的对立物。

直觉上我们会把前驱定义为:

为了使它适合正式的原始递归定义,我们写:

现在我们以类似加法的方式定义减法。

出于简单的缘故,切换了"标准"定义的参数次序来适合原始递归的要求,就是说, sub(a,b) 对应于 b-a。这可以轻易的使用适当的投影来矫正。

很多类似的函数可以被证明是原始递归的;一些例子包括条件、指数、素数检验和数学归纳法,并且原始递归函数可以被扩展来运算在其他对象上比如整数和有理数。

在整数和有理数上的运算

通过使用哥德尔数,原始递归函数可以被扩展到在其他对象比如整数和有理数上的运算上。如果以标准方式编码整数用哥德尔数,算术运算包括加法、减法、乘法都是原始递归的。类似的,如果以哥德尔数表示有理数,则域运算都是原始递归的。

与递归函数的联系

通过介入无界查找算子可定义更广泛的偏递归函数类。这个算子的使用可以导致偏函数,就是说,对每个参数有最多一个值,但是不同于全函数,不必须对参数有值的关系(参见定义域)。一个等价的定义声称偏递归函数是可以被图灵机就算的函数。全递归函数是对所有输入有定义的偏递归函数。

所有原始递归函数都是全递归的,但不是所有全递归函数都是原始递归的。阿克曼函数A(m,n)是周知的不是原始递归的全递归函数。原始递归函数有作为使用阿克曼函数的全递归函数的子集的一个特征。这个特征声称一个函数是原始递归的,当且仅当有一个自然数 m 使得这个函数可以被总在 A(m,n) 或更少步骤内停机的图灵机计算,这里的 n 是原始递归函数的参数的总数。

限制

原始递归函数意图紧密对应于我们直觉上可计算函数应该的样子。当然函数的初始集合在直觉上是可计算的(因为它们非常简单),而你能用来建立新原始递归函数的两个运算也是非常直接的。但是原始递归函数的集合不包含所有可能的可计算函数 — 这可以看作康拖尔对角论证法的变体。这个论证提供了一个不是原始递归的可计算函数。证明的梗概如下:

原始递归函数集合可以被计算枚举。这个编号方案在函数定义上是唯一的,尽管在实际函数自身上不是唯一的(因为所有的函数都可以有无限数目的定义 — 考虑简单的由恒等函数构成)。这个编码在可计算性的形式模型,比如递归函数或图灵机下定义的意义上是可计算的,邱奇-图灵论题涉及的任何机器都可以。

现在考虑一个矩阵,这里的行是在这个编号方案下的有一个参数的原始递归函数,而列是自然数。则每个元素 (i, j) 对应于计算于数 j 之上的第 i 个一元原始递归函数。我们可以写为 fi(j)。

现在我们考虑函数 g(x) = S(fx(x))。g 位于这个矩阵的对角线上,并简单的对它找到的值加一。这个函数是可计算的(按上述定义),但是明显的没有计算它的原始递归函数存在,因为它与每个可能的原始递归函数都有至少一个值不同。所以,必然存在不是原始递归的可计算函数。

这个论证可以应用于能用这种方式枚举的任何一类的可计算(全)函数上。所以,任何这种可计算(全)函数的明确列表都不可能是完全的,比如那些可以用总是停机的机器计算的函数。但是要注意,偏可计算函数集合(那些不需要对所有参数有定义的函数)可以被明确的枚举,例如通过枚举图灵机编码。

可以明确展示的一个简单的 1-元可计算函数阿克曼函数,它是对任何自然数递归定义的,但不是原始递归的。

参考

Brainerd, W.S., Landweber, L.H. (1974), Theory of Computation, Wiley, ISBN 0471095850

参见

判定器

引用

Brainerd, W.S., Landweber, L.H. (1974), Theory of Computation, Wiley, ISBN 0-471-09585-0

Robert I. Soare, Recursively Enumerable Sets and Degrees, Springer-Verlag, 1987. ISBN 0-387-15299-7

Stephen Kleene (1952) Introduction to Metamathematics, North-Holland Publishing Company, New York, 11th reprint 1971: (2nd edition notes added on 6th reprint). In Chapter XI. General Recursive Functions §57

George Boolos, John Burgess, Richard Jeffrey (2002), Computability and Logic: Fourth Edition, Cambridge University Press, Cambridge, UK. Cf pp. 70-71.


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

——— 没有了 ———
编辑:阿族小谱
发表评论
写好了,提交
{{item.label}}
{{commentTotal}}条评论
{{item.userName}}
发布时间:{{item.time}}
{{item.content}}
回复
举报
点击加载更多
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回

更多文章

更多精彩文章
打赏
私信

推荐阅读

· 递归
递归程序在支持自调用的编程语言中,递归可以通过简单的函数调用来完成,如计算阶乘的程序在数学上可以定义为:这一程序在Scheme语言中可以写作:(define(factorialn)(if(=n0)1(*n(factorial(-n1)))))不动点组合子即使一个编程语言不支持自调用,如果在这语言中函数是第一类对象(即可以在运行期创建并作为变量处理),递归可以通过不动点组合子(英语:Fixed-pointcombinator)来产生。以下Scheme程序没有用到自调用,但是利用了一个叫做Z算子(英语:Zcombinator)的不动点组合子,因此同样能达到递归的目的。(defineZ(lambda(f)((lambda(recur)(f(lambdaarg(apply(recurrecur)arg))))(lambda(recur)(f(lambdaarg(apply(recurrecur)a...
· 递归
语言例子从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到:“一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到:‘一只狗来到厨房,偷走一小块面包。厨子举起杓子,把那只狗打死了。于是所有的狗都跑来了,给那只狗掘了一个坟墓,还在墓碑上刻了墓志铭,让未来的狗可以看到……’”正式定义在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他...
· 递归论
概述:计算的概念递归论所考虑的基本问题是,给定一个从自然数到自然数的函数f,f是否是可以被计算的。“可以被计算”,我们先将其当作一个直观的概念。根据直觉,人们一般会认为,一个函数可以被计算是存在一个给定的过程,接受一个自然数n后,该过程进行一定的操作并给出f(n)作为输出。将计算这一直观的概念上升到数学层面的形式化定义这一工作是递归论的根本,并由哥德尔、邱奇、图灵、克莱尼和EmilPost等人在1930年代奠定。他们将图灵可计算性作为有效计算的形式化。在递归论的基本概念被给定之后,一方面人们将该观念应用于数学中,从而证明了一系列自然的问题,如字问题,以及希尔伯特第十问题等问题是不可计算的。另一方面,理论家们进一步拓展,开始了相对可计算性,图灵度等问题的研究。如今,递归论仍是数理逻辑中活跃的领域。历史递归论理论起源自哥德尔、邱奇、图灵、克莱尼和EmilPost在1930年代的工作。他们获得的...
· 递归语言
定义递归语言有两种等价的主要定义:递归语言是在形式语言的字母表上的所有可能的字的集合的递归子集。设S⊆Σ是一个语言,M是一台图灵机,若对于任何字符串ω∈Σ,有ω∈S当且仅当M接受ωω∉S当且仅当M拒绝ω则称M判定语言S。若存在这样的M,S就称为图灵可判定语言。闭包性质递归语言是在下列运算下是闭合的。就是说,如果L和P是两个递归语言,则下列语言也是递归的:L的Kleene星号L∗∗-->{\displaystyleL^{*}}L的非删除(non-erasing)同态φ(L)L和P的串接L∘∘-->P{\displaystyleL\circP}并集L∪∪-->P{\displaystyleL\cupP}交集L∩∩-->P{\displaystyleL\capP}L的补集LC{\displaystyleL^{C}\,}差集L−−-->P{\displaystyleL-P\,}图灵可判定语言与图灵...
· 递归可枚举语言
形式定义递归可枚举语言定义:设S⊆Σ为一个语言,E是一个枚举器,若L(E)=S,则称E枚举了语言S。若存在这样的E,S就称为递归可枚举语言。注意,枚举器E可以以任意的顺序枚举语言L(E),而且L(E)中的某个串可能会被E多次重复地打印。图灵可识别语言定义:设M{\displaystyleM}是一台图灵机,若在输入串ωω-->{\displaystyle\omega}上M{\displaystyleM}运行后可进入接受状态并停机,则称M{\displaystyleM}接受串ωω-->{\displaystyle\omega}。M{\displaystyleM}所接受的所有字符串的集合称为M{\displaystyleM}所识别的语言,简称M{\displaystyleM}的语言,记作L(M){\displaystyleL(M)}。设S⊆⊆-->ΣΣ-->∗∗-->{\displaystyle...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信