欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    可计算函数.docx

    • 资源ID:9089765       资源大小:193.65KB        全文页数:35页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    可计算函数.docx

    1、可计算函数13 可计算函数13.1 原始递归函数前面章节的讨论揭示了这样一个事实:一个能够被精确描述的语言不能保证它能够被图林机识别,类似地,一个能够被精确定义的函数不能保证能够被图林机计算。我们已经有了不能计算函数的例子,因为根据定义,非递归语言的特征函数是不能计算的。在本章,我们集中讨论数值函数,有0个或多个非负整数变量,函数值是非负整数,尽力发现一种方法来刻画可计算的函数的特征。将焦点放在数值函数上并不是象听起来那么受局限,因为我们很快就会找到一个方法将字符串映射到字符串的函数的定义域和值域都转换成整数数值。回忆从N到N的部分函数f是可计算的条件是存在一个图林机T,使得对每个f定义的n,

    2、输入字符串1n,T都能够停机,且停机时输出1f(n),对于没有定义的n,则T不停机。由于一个图林机至多计算一个函数,因此容易应用10.3节的非构造性论据说明存在许多不可计算函数。图林机集合是可数的,而从N到N的部分函数集合是不可数的,因此不可计算函数集合一定是不可数的。(注意,存在两个因素导致部分函数集合是不可数的,一是函数的定义域的可能性很多,二是给定定义域的情况下,对应的值域的可能性很多,其中一个因素就足以导致部分函数集合是不可数的。)就像我们给出了非递归语言的例子,我们也给出从N到N的不可计算函数的明确的例子。我们的第一个例子,也许你已经想到,与图林机和对角参数法有关。例子13.1(忙碌

    3、海狸函数)让我们定义函数b: NN如下,f(0)=0,对每个n0,b(n)是定义如下,考虑一个有n个非停机状态,设为Q=q1,.,qn,的图林机,磁带字母表是0,1。因此这样的图林机个数是有限的,现在我们只考虑在输入为1n的情况下停机的图林机。令b(n)是所有这样的图林机在停机时留在磁带上的最大的1的数目。b(n)是衡量这类图林机忙碌程度的一个标准。(某些研究者认为术语“忙碌海狸”来自磁带上的1与海狸布置小树枝类似。)我们利用反证法证明函数b是不可计算的。假设b是可计算的,那么存在一个图林机Tb计算函数b。令T=TbT1,其中T1是一个图林机,它的磁带字母表也是0,1,它在磁带头的初始位置上写

    4、上0,然后将磁带头移到右边第一个为0或空符号的格子上,并写上1,将磁带头返回到起始位置,擦掉0,然后停机。令m是T的状态的数目。根据函数b的定义,没有一个状态数为m和磁带字母表为0,1的图林机在输入字符串为1m的条件下,停机时磁带上的1的数目大于b(m)。然而前面构造的T,它属于这类图林机,且停机时的输出结果是1b(m)+1,得到矛盾,假设不成立。一方面,函数b被精确地定义(b(n)是状态数为n,磁带字母表为0,1的图林机在输入字符串为1n时,停机后留在磁带上的最大的1的数目),但是它是不可计算的。另一方面,一个公式,比如f(n)=|2n+5-(3n+1)8|定义的函数很明显是可计算的。这两种

    5、形式的定义的区别是一个是语言描述,另一个是数学公式。考虑函数b2,b2(n)是具有两个状态,磁带字母表是0,1的图林机在输入字符串为1n时,停机后输出的最大的1的数目,这也是一个描述性定义,表面上几乎与函数b相同。但是b2是可计算的(?)。b2和f的一个共同特点是都存在一个相应的构造性定义,而前面的证明显示了函数b不具备这样的性质。 判定一个描述定义的函数是否存在相应的构造性定义是很困难的或不可能的。在本章,我们形式化定义概念“构造性”,因此在这种方法下能够得到定义的函数就恰好是可计算函数。感觉而言,代数公式定义的函数f是“构造性”的,是因为它是通过在很简单的基本函数(标识函数和常数函数)上施

    6、加有限的数学运算得到的。我们采用同样的方法,除了使用的运算比代数运算,比如加法、乘法等,更通用。我们从基本函数的精确定义开始,注意所有的初始函数都是全域函数。 定义13.1(初始函数)初始函数定义如下:1. 常量函数:对于每个k=0和a=0,常量函数定义公式如下a, XNk当k=0时,Nk=,此时X不存在,我们指定=a。2. 后继函数:s: NN定义如下s(x)=x+13. 投射函数:对于每个k=1且1=i=k,定义如下xi现在,我们准备考虑组合简单函数得到新函数的方法。我们一开始讨论的两个方法中一个是复合,另一个涉及到一种原始递归。我们将证明,尽管这些运算足以生成大多数我们熟悉的数值函数,但

    7、是我们还需要一个运算得到所有的可计算函数。函数的复合运算定义在第1章,此处我们引入稍有不同的术语和记号。为了方便,小写字母表示整数,大写字母表示向量或m元组。定义13.2(复合)假设f是从Nk到N的部分函数,且对于每个1=i=0,利用f(k)定义f(k+1),一个标准的例子是阶乘函数:0!1(k+1)!(k+1)*k!在递归步骤,f(k+1)的表达式包含k和f(k)。为了得到更通用的方式,我们用h(k,f(k)代替(k+1)*f(k),其中h是一个有两个变量的函数。为了将这个方法用于多个变量的函数f,我们仅仅将递归限制在最后一个变量上。换句话说,我们的递归基础定义的函数是f(x1,.,xn,0

    8、),其中x1,.,xn可以任意选择。如果n=0,这表示定义了一个常数(不是常数函数,没有变量),在n0的通用形式,则定义了一个有着n个变量的函数。在递归推导部分,利用f(x1,.,xn,k)定义f(x1,.,xn,k+1)。我们用X表示n元组(x1,.,xn),则更准确地说,f(X,k+1)的定义除了依赖于f(X,k),还依赖于X和k。因此,有了上面的记号,递归推导部分的通用形式是 f(X,k+1)=h(X,k,f(X,k) 定义13.3(原始递归函数)假设n=0,且g和h分别是n和n+2个变量的函数。函数f: Nn+1N定义如下, f(X,0)=g(X) f(X,k+1)=h(X,k,f(X

    9、,k)任给XNn,k=0。我们称f是函数g和h通过原始递归运算得到的。在阶乘函数例子中,n=0,g是一个数值(或没有变量的常数函数)=1,h(x,y)=(x+1)*y。显然,如果g和h是全域函数,则f是全域函数,否则如果g在XNn上没有定义,则显然f(X,0)没有定义,f(X,1)=h(X,0,f(X,0)也没有定义,更一般地,对于每个k,f(X,k)都没有定义。类似地,如果f(X,k)对于某个k没有定义,不妨说k=k0,那么对于每个k=k0,f(X,k)都没有定义。等价地说,如果f(X,k1)是定义的,则对于每个k=0和m=0,如果f: NkN和g1,.,gk: NmN是PR的元素,那么f和

    10、g1,.,gk的复合函数f(g1,.,gk)也是PR的一个元素;3. 对于每个n=0,函数g: NnN和h: Nn+2N都是PR的元素,那么g和h的原始递归函数f: Nn+1N也是PR的一个元素;4. PR中没有其他函数。在第2章,我们讨论了这类定义(递归定义)的其他相当的形式化方法。PR可以描述成包含初始函数且在复合和原始递归运算下封闭的最小函数集合。原始递归函数另一个更明显的特征(参见例子2.18后面的讨论)是具有一个原始递归推导。一个函数f具有原始递归推导的含义是存在一个函数序列f0,.,fj,fj=f,且序列中的每个函数fi要么是初始函数,要么由它前面的函数经过复合运算或原始递归运算得

    11、到。例子13.2 我们展示从NN到N的函数Add和Mult,定义的公式如下,Add(x,y)=x+yMult(x,y)=x*y都是原始递归运算的结果。现在我们发现函数Add的原始递归推导。既然Add不是初始函数,而且没有一个明显的方法通过复合运算得到Add,因此我们尝试应用原始递归运算。如果Add是函数g和h原始递归运算的结果,那么g和h分别是1个变量和3个变量的函数,满足下面的式子, Add(x,0)=g(x) Add(x,k+1)=h(x,k,Add(x,k)容易发现g,由于Add(x,0)=x,而x是初始函数。现在我们希望从x, k, x+k得到Add(x,k+1),我们不直接需要x和k

    12、,可以简单地选用x+k的后继,即h(x,k,Add(x,k)应该是s(Add(x,k)。这意味着h(x1,x2,x3)应该是s(x3),或。因此函数Add的一个推导序列是 f0 / 初始函数 f1s / 初始函数 f2 / 初始函数 f3s() / f1和f2的复合函数 f4Add / f0和f3的原始递归函数推导顺序不是唯一的,比如前面三个函数的顺序是不重要的,只要Add在序列的最后,s和在s()之前就可以了。 类似地,我们应用原始递归运算推导Mult。 Mult(x,0)0 Mult(x,k+1) x*(k+1) Add(x*k,x) Add(x,Mult(x,k)注意,我们尝试用形式h(

    13、x,k,Mult(x,k)写出Mult的推导,既然x和Mult(x,k)是3元组(x,k,Mult(x,k)的第一个和第三个元组,我们可以使用函数f=Add(,),它是Add和,的复合函数。因此函数Mult由函数0(初始函数)和f经过原始递归运算得到,它也是原始递归函数。问题:术语“原始递归函数”的含义有两个1)两个函数的原始递归运算得到的函数2)属于PR集合的函数。但是术语“原始递归的”一般指第二种情况的函数。 函数Mult的推导中,许多涉及原始递归函数的论据能够利用下面的通用结果得到简化。 定理13.1 f是一个有n个变量的原始递归函数,则1. 对于每个k=1,任何有n+k个变量的函数g,

    14、g由f中引入k个“哑元”变量得到(比如,n=2, k=1,g(x1,x2,x3)=f(x1,x3)),是原始递归函数。2. 每个有n个变量的函数g,g由f改变变量排列顺序得到(比如,n=2, g(x2,x1)=f(x1,x2)),是原始递归函数。3. 对于每个k, 1=k=n,任何一个有n-k个变量的函数g,g由f中的k个变量被替换成常量得到(比如,n=2, k=1,g(x)=f(5,x)),是原始递归函数。4. 对于每个k,1=k=0,磁带内容是 此时,Tf计算f(X,0),然后利用这个结果计算f(X,1),然后f(X,2),直到利用f(X,k)计算f(X,k+1)。为了完成这系列计算,先准

    15、备磁带内容如下 #1X1k1X1k-1.111X101X由于f(X,0)=g(X),先执行Tg,然后移动磁带头得到 #1X1k1X1k-1.111X101f(X,0)现在Tf开始循环处理,每次处理都是执行Th并且移动磁带头,第一趟处理后,既然f(X,1)=h(X,0,f(X,0),磁带内容变成 #1X1k1X1k-1.1X111f(X,1)然后可以计算f(X,2)了。循环处理结束后,得到 #1X1k1f(X,k)此时将0号格子的#改成,再执行一次Th得到希望的结果。 从定义13.3后面的讨论,我们知道如果f(X,k+1)是定义的,上面计算过程的每一步都能成功进行。如果f(X,k+1)是未定义的

    16、,那么或者Tg在1X上的处理不能导致停机,或者对于某个i,0=i=k,Th在1X1i1f(X,i)无法停机。因此Tf在输入字符串1X1k+1上停机当且仅当f(X,k+1)是定义的。定理13.3 存在一个从N到N的全域可计算函数,它不是原始递归函数。证明:我们非严格证明上面定理。我们描述一个不是原始递归的函数,并且根据Church-Turing论题说明它是可计算的。我们从修改字母表开始,它包含我们描述数值函数需要的所有的符号。任何一个原始递归函数都可以用一个原始递归推导来说明,即可以用上的一个字符串说明。每个函数可能有多个不同的推导不会影响这个表示(即可能多个字符串表示同一个函数)。余下的证明依

    17、赖于下面的命题:给定*中的一个字符串,存在一个算法判定这个字符串是否表示了某个单变量函数的原始递归推导。尽管详细描述这个算法很繁琐,但是从直观上容易感觉是存在的。 我们用对角参数法来证明。首先在*上定义一个顺序,不妨选规范顺序(先根据长度排序,然后根据字母排序)。现在定义函数f: NN如下。对每个i,按序检查*上的每个字符串,抛掉那些不能表示某个从N到N的函数的原始递归推导的字符串,直到发现第i个表示那样的推导的字符串。设被推导的函数是fi,令 f(i)=fi(i)+1显然函数f是全域的。一方面,由于我们描述了一个发现fi的推导的算法,且这个推导构成了计算f(i)的算法,因此f是可计算的。另一

    18、方面,f不是原始递归的,因为每个单变量的原始递归函数都是某个fi,而且无论i是什么值,都有f(i)fi(i),因此f不会是fi。 存在更方便的方法定义全域、可计算的、非原始递归函数。其中最著名的方法是Ackermann函数,它的定义涉及一种递归,因此它显然是可计算的,但是它的增长速度比任何一个原始递归函数都要快。Hennie在1977年讨论了这种函数。(加入张立昂35页Ackermann函数内容)13.2 原始递归谓词和一些限制运算上一节中有几个函数,比如Pred和Sub,是分情况定义的。这两个函数比较简单,因此容易发现它们直接的原始递归推导。然而,对于任意一个分情况定义的函数ff(X)我们希

    19、望发现通用的原则,使得能够根据函数fi(X)和条件Pi(X)的性质得到f的一些结论。 条件P的值依赖于变量XNn,要么是true,要么是false,称为谓词,更精确的说,条件P是n位谓词,是从Nn到true,false的部分函数。显然P也表示了一个集合,与谓词P紧密相关的是它的特征函数xp: Nn0,1,定义如下 xp(X)既然xp是一个数值函数,那么我们在13.1节讨论的函数的性质都适合于xp,同样也适合于P。特别地,如果xp是可计算的,则P也是可计算的,如果xp是原始递归的,P也是原始递归的,称为原始递归谓词。当我们说语言L的特征函数xL是可计算的,意味着我们能够判定给定的字符串是否属于L

    20、。当我们说xp是可计算的,含义相似于前面,即存在一个算法判定给定X是否满足P,或P(X)是否为真。 谓词取真或假,因此可以对谓词施加逻辑运算(与)(或)(非)。比如(P1P2)(X)为真当且仅当P1(X)和P2(X)都为真。显然这些逻辑运算保持了谓词的原始递归性。 定理13.4 如果P1和P2是n位原始递归谓词,那么谓词P1P2,P1P2,P1也是原始递归谓词。 证明:上面的结论来自下面三个等式,而这三个等式是显然成立的。 * +- 1- 注意此处的减法是例子13.4引入的适当减法。 例子13.5(关系谓词)关系谓词属于最简单的谓词,关系谓词有LT, EQ, GT, LE, GE, NE。LT

    21、(x,y)为真当且仅当xy。其他5个关系谓词的定义正如它的名字表示的含义。这些谓词都是原始递归的,为了证明这个结论,我们先引入单变量函数Sg, Sg(0)0 Sg(k+1)1函数Sg的含义是如果变量值为0,则函数值为0,否则为1。显然Sg是一个原始递归函数。现在我们有 xLT(x,y)Sg(y-x)既然x0,因此上式成立。这个等式显示了xLT是两个原始递归函数的复合函数,因此xLT是原始递归的。类似得到谓词EQ的特征函数xEQ的表达式 xEQ(x,y)1-(Sg(x-y)+Sg(y-x)注意如果xy或yx,那么x-y和y-x中有一个不为0,因此括号内的表达式不为0,则整个表达式值为0,如果x=

    22、y,那么x-y和y-x都为0,则括号内的表达式为0,整个表达式值为1。 虽然其他4个关系谓词可以构造上面类似的表达式,但我们可以使用可简单的形式, LE=LTEQ GT=LE GE=LT NE=EQ根据定理13.4,逻辑运算保持原始递归性,因此上面的4个谓词都是原始递归的。 如果P是一个n位谓词并且有函数f1,.,fn: NkN,我们可以得到一个k位谓词Q=P(f1,.,fn),显然Q的特征函数xQ是xP和f1,.,fn的复合函数,因此,如果P是原始递归谓词,所有的fi是原始递归函数,则Q是原始递归的。将这个通用事实与定理13.4组合考虑,我们发现只要基本组件是原始递归的,任意一个通过关系运算和逻辑运算构造的复杂谓词都是原始递归的,比如 (f1=(3f2)2(f3f4+f5)(PQ) 现在我们可以回去考虑分情况定义的函数是原始递归函数的条件。 定理13.5 假设f1,.,fk是从Nm到N的原始递归函数,P1,.,Pk是n位原始递归谓词,并且对于每个XNn,有且只有一个Pi(X), 1=i0),记号Div(x,y)和Mod(x,y)分别表示x除以y的整数商和余数。比如,Div(8,5)=1,Mod(8,5)=3,Mod(12,4)=0。由于除数不能为0,因


    注意事项

    本文(可计算函数.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开