欢迎来到天天文库
浏览记录
ID:49476678
大小:82.00 KB
页数:13页
时间:2020-02-07
《lambda演算 和图灵机.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件工程理论报告报告内容使用λ演算的计算和图灵机模型完成简单的加法运算。说明λ演算的计算能力与图灵机的计算能力等价。1.λ演算λ演算(lambdacalculus)是一套用于研究函数定义、函数应用和递归的形式系统。它由阿隆佐·邱奇和他的学生斯蒂芬·科尔·克莱尼在20世纪30年代发明的。λ演算可以被称为最小的通用程序设计语言。它包括一条变换规则(变量替换)和一条函数定义方式。λ演算表达了两个计算机计算中最基本的概念“代入”和“置换”。“代入”我们一般理解为函数调用,或者是用实参代替函数中的形参;“置换”我们一般理解为变量换名规则。“代入”就是用lambda演算中的β-归约概念。而“替换
2、”就是lambda演算中的α-变换。λ表达式的唯一形式:x,λy•e,f(a)例如:f(x,y)=x+yλx•λy•x+y函数求值:f(2,3)可以表示为:(λx•λy•x+y)23(λy•2+y)32+3如上已经完成了普通加法,这样就结束了??lambda演算系统中合法的字符如下:x1,x2,x3,...xn变元→归约=等价λ,(,)所有能够在lambda演算系统中出现的合法符号只有以上四种,其他符号都是非法的。例如λx.x+2,如果没有其他对于+符号的说明,那么这就是一个非法的λ演算表达式。同时,自然数2也需要定义。在lambda演算中有许多方式都可以定义自然数,但最常见的还是邱
3、奇数Church数邱奇编码是把数据和运算符嵌入到lambda演算内的一种方式,它是使用lambda符号的自然数的表示法。这种方法得名于阿隆佐·邱奇,他首先以这种方法把数据编码到lambda演算中。Church数是在Church编码下的自然数的表示法。表示自然数n的高阶函数是把任何其他函数f映射到它的n重函数复合的函数。lambda演算中的数字n就是一个把函数f作为参数并以f的n次幂为返回值的函数。在λ演算中,计算系统用函数的嵌套次数来计数。PLUS32=λm.λn.λf.λx.((mf)((nf)x))32//将3和2应用于m,n这两个自由变量=λf.λx.((3f)((2f)x))
4、//((2f)x)=(λf.λx.(f(fx))fx)=f(fx)=λf.λx.((3f)(f(fx)))//3=λf.λx.f(f(fx))=λf.λx.((λf.λx.f(f(fx))))f)(f(fx))//将f和(f(fx))应用于f和x上=λf.λx.(f(f(f(f(fx)))))//正好等于5的邱奇数定义2.图灵机图灵机基本模型有一个有穷控制器,一条输入带和一个带头,带被分成许多单元,带头在每个时刻扫视带上的一个单元。它工作的时候是这样的:从读写头在纸带上读出一个方格的信息,并且根据它当前的内部状态开始对程序进行查表,然后得出一个输出动作,也就是是否往纸带上写信息,还是
5、移动读写头到下一个方格。程序也会告诉它下一时刻内部状态转移到哪一个。具体的程序就是一个列表,也叫做规则表,是这样的:当前内部状态s输入数值i输出动作o下一时刻的内部状态s'q01前移q1q10往纸带上写qnq20后移qy简单说完成加法的图灵机的输入字符集是0、1和+。带字符集是0、1、+、=、还有空白符。图灵机程序计算加法的过程:一开始带上内容是一个二进制加式,比如2+3,读写头在右边的1上。bb10+11=b首先,图灵机将读写头运动到更右一个位置,写下=,然后运动到原始位置。开始向右扫描。读到1或0,通过进入不同的状态记住读到的是1还是0,把已读过的字符记成已读状态。然后往右找+,
6、找到后,再往右找1或0,还是把读过的字符标记成已读状态。找到后凭借进入不同的状态记住已读到的两个加数分别是什么。然后再往右找=,找到后在=右边第一个非0或1的空位写下记住的两个加数的和。3.λ演算的计算能力与图灵机的计算能力等价图灵机可计算一切直觉上能行可计算的函数。λ演算之通用在于,任何一个可计算函数都能用这种形式来表达和求值。因而,λ演算的计算能力是等价于图灵机的。
此文档下载收益归作者所有