计算机组成与结构图灵机,计算机的理论结构|邱奇的lambda演算和图灵机

1 lambda演算

λ演算(lambda calculus)是一套用于研究函数定义、函数应用和递归的形式系统。它由阿隆佐·邱奇Alonzo Church和他的学生斯蒂芬·科尔·克莱尼在20世纪30年代发明的。

λ演算可以被称为最小的通用程序设计语言。它包括一条变换规则(变量替换)和一条函数定义方式。

λ演算表达了两个计算机计算中最基本的概念“代入”和“置换”。“代入”我们一般理解为函数调用,或者是用实参代替函数中的形参;“置换”我们一般理解为变量换名规则。“代入”就是用lambda演算中的β-归约概念。而“替换”就是lambda演算中的α-变换。

在 lambda 演算中有许多方式都可以定义自然数,但最常见的还是邱奇数 。

邱奇编码是把数据和运算符嵌入到lambda演算内的一种方式,它是使用lambda符号的自然数的表示法。这种方法得名于阿隆佐·邱奇,他首先以这种方法把数据编码到lambda演算中。

Church数是在Church编码下的自然数的表示法。表示自然数n的高阶函数是把任何其他函数 f 映射到它的n重函数复合

100153175_1

的函数。

100153175_2

在λ演算中,计算系统用函数的嵌套次数来计数。

·lambda演算中的数字n就是一个把函数 f 作为参数并以 f 的n次幂为返回值的函数。

2 图灵机

图灵机被公认为现代计算机的原型,这台机器可以读入一系列的零和一,这些数字代表了解决某一问题所需要的步骤,按这个步骤走下去,就可以解决某一特定的问题。这种观念在当时是具有革命性意义的,因为即使在50年代的时候,大部分的计算机还只能解决某一特定问题,不是通用的,而图灵机从理论上却是通用机。在图灵看来,这台机器只用保留一些最简单的指令,一个复杂的工作只用把它分解为这几个最简单的操作就可以实现了,在当时他能够具有这样的思想确实是很了不起的。他相信有一个算法可以解决大部分问题,而困难的部分则是如何确定最简单的指令集,怎么样的指令集才是最少的,而且又能顶用,还有一个难点是如何将复杂问题分解为这些指令的问题。

图灵机由一个控制器P、一个读写头W/R和一条存储带M组成,如下图:

100153175_3

其中,存储带是一个无限长的带子,带子上划分为许多单元格,每个格子里包含一个来自有限字母表的符号。控制器包含了一套控制规则(程序)和一个状态寄存器,控制规则根据当前机器所处状态,以及当前读/写头所指的格子上的符号,来确定读/写头下一步动作,并改变状态存储器的值,令机器进入一个新的状态。存储带可以左右移动,并且通过读/写头对存储带上的符号进行修改或读出。

图灵机的工作过程是:存储带移动一格,就把“1”变成“0”,或者把“0”变成“1”,或者不变。“0”和“1”代表在解决某个数学特定问题中的运算步骤。

它工作的时候是这样的:从读写头在纸带上读出一个方格的信息,并且根据它当前的内部状态开始对程序进行查表,然后得出一个输出动作,也就是是否往纸带上写信息,还是移动读写头到下一个方格。程序也会告诉它下一时刻内部状态转移到哪一个。

具体的程序就是一个列表,也叫做规则表,是这样的:

当前内部状态s输入数值i输出动作o下一时刻的内部状态s'

q01前移q1

q10往纸带上写qn

q20后移qy

简单说完成加法的图灵机的输入字符集是0、1和+。带字符集是0、1、+、=、还有空白符。

图灵机可计算一切直觉上能行可计算的函数。

λ演算之通用在于,任何一个可计算函数都能用这种形式来表达和求值。

因而,λ演算的计算能力是等价于图灵机的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值