《图灵机二进制加法(共7页).docx》由会员分享,可在线阅读,更多相关《图灵机二进制加法(共7页).docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上1. 图灵简介阿兰麦席森图灵 (19121954),著名数学家、逻辑学家、密码学家,被称为计算机科学之父、之父。1912年6月23日生于英国帕丁顿,1931年进入国王学院,师从著名数学家,1938年在取得博士学位,爆发后返回,曾协助军方破解的著名密码系统,帮助取得了二战的胜利。1954年6月7日在去世。图灵是计算机逻辑的奠基者,提出了“”和“”等重要概念。人们为纪念其在计算机领域的卓越贡献而专门设立了“”。2. 图灵机简介什么是图灵机?首先,我们用IT行业的语言来描述的话就是:1图灵机是一个处理器2图灵机的正常工作需要1个内存条,内存条中有一定的初始数据3图灵机可以对
2、内存条的任何地址,按照一定的规则,进行读/写4图灵机能够根据内存条中的数据,计算出一个结果,这个结果记录在内存条上5内存条的容量是无限的6在计算出结果之前,图灵机可以工作任何时间,只要是有限的7内存条,图灵机,可以用任何材料制作,比如纸条,电路,甚至可以用程序模拟然后,请注意以下几点:1图灵机有很多种,作用各不相同2每一台图灵机(处理器)都只有一个固定的运行规则,或者说,只有1种功能3真正的图灵机是制造不出来的,因为内存有限,计算时间有限,但是可以近似地实现它!基本思想:图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:在纸上写上或擦除某个符号;把
3、注意力从纸的一个位置移动到另一个位置;而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:1.一条无限长的纸带TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,. ,纸带的右端可以无限伸展。2.一个读写头HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。3.一套控制规则TABLE。它根据当前机器
4、所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。4.一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。参见。注意这个机器的每一部分都是有限的,但它有一个潜在的无限长的纸带,因此这种机器只是一个理想的设备。图灵认为这样的一台机器就能模拟人类所能进行的任何计算过程。在某些模型中,纸带移动,而未用到的纸带真正是“空白”的。要进行的指令(q4)展示在扫描到方格之上(由 Kleene (1952) p.375 绘制)。在某些模型中,读写头沿着固定的纸带移动。要进行的指令
5、(q1)展示在读写头内。在这种模型中“空白”的纸带是全部为 0 的。有阴影的方格,包括读写头扫描到的空白,标记了 1,1,B 的那些方格,和读写头符号,构成了系统状态。所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。形式化:一台图灵机是一个七元组,Q,q0,qaccept,qreject,其中 Q, 都是有限集合,且
6、满足1.Q 是状态集合;2. 是输入字母表,其中不包含特殊的空白符 ;3. 是带字母表,其中 且 ;4. :QQL,R是转移函数,其中L,R 表示读写头是向左移还是向右移;5.q0Q是起始状态;6. qaccept是接受状态。7.qreject是拒绝状态,且。qrejectqaccept图灵机 M = (Q,q0,qaccept,qreject) 将以如下方式运作:开始的时候将输入符号串 从左到右依此填在纸带的第 号格子上, 其他格子保持空白(即填以空白符)。M 的读写头指向第 0 号格子, M 处于状态 q0。机器开始运行后,按照转移函数 所描述的规则进行计算。例如,若当前机器的状态为 q,
7、读写头所指的格子中的符号为 x, 设 (q,x) = (q,x,L), 则机器进入新状态 q, 将读写头所指的格子中的符号改为 x, 然后将读写头向左移动一个格子。若在某一时刻,读写头所指的是第 0 号格子, 但根据转移函数它下一步将继续向左移,这时它停在原地不动。换句话说,读写头始终不移出纸带的左边界。若在某个时刻 M 根据转移函数进入了状态 qaccept, 则它立刻停机并接受输入的字符串; 若在某个时刻 M 根据转移函数进入了状态 qreject, 则它立刻停机并拒绝输入的字符串。注意,转移函数 是一个部分函数, 换句话说对于某些 q,x, (q,x) 可能没有定义, 如果在运行中遇到下
8、一个操作没有定义的情况, 机器将立刻停机。 3. 实例:两位2进制加法器简单说这个图灵机的输入字符集是0、1和+。带字符集是0、1、+、.、=、还有空白符。解释一下这个图灵机程序计算加法的过程。一开始带上内容是一个二进制加式,比如10+10 ,读写头在最左边的 1 上。首先,图灵机将读写头运动到更左一个位置,写下 = 。然后运动到最右边。开始向左扫描。读到 1 或 0,通过进入不同的状态记住读到的是 1 还是 0,把已读过的字符记成已读状态。然后往左找 + ,找到后,再往左找 1 或 0,还是把读过的字符标记成已读状态。找到后凭借进入不同的状态记住已读到的两个加数分别是什么。然后再往左找 =,
9、找到后在 = 左边第一个非 0 或 1 的空位写下记住的两个加数的和(如果有进位还要加上进位),之后进入相应状态记住本次相加是否产生进位,带着这个信息往右走, 重复加法过程(计算下一位)。如果某一个加数扫描完了,那么之后就相当于把另一个加数剩下的每一位与 0 加。最后两个加数都扫描完了,抹掉 = 及其右边的每一个字符。这时带上剩下的就是加式的和了。该图灵机有29个状态。解释一下它的含义。第一行定义图灵机的“输入字符集”,每个字符用逗号隔开(很抱歉逗号不能用作输入字符了,换个别的替代吧)。第二行定义图灵机的“带字符集”,这个字符集必须包含“输入字符集”的全部字符。“带字符集”默认包含空白符(空格
10、。抱歉,空格也不能用作输入字符或带字符)。接下来,每一行定义一个图灵机的状态。每一行用#分成5段,分别是:1. 状态id,随便一个字符串就行。当然,不能包含#。2. 这个状态的转移函数。后面详述。3. 是否是开始状态。1是0不是。只能有一个状态是开始状态。4. 是否是接受状态。1是0不是。可以有多个状态是接受状态。5. 是否是拒绝状态。1是0不是。可以有多个状态是拒绝状态,但不能一个状态既是接受状态又是拒绝状态。下面说一下状态的转移函数。转移函数就是定义:一个状态,读到某个带字符后,写下什么字符,向左还是右移动一个单元,然后进入哪个状态。对每一个带字符,状态都有一个动作。所以状态的转移函数是用
11、|隔开的n段,n是带字符集的数目。每一段用:隔开四段,分别是:1. 读到哪个带字符(没有就是空白符)2. 写下哪个带字符(没有就是空白符)3. 向左(L)还是右(R)移动一个4. 进入哪个状态例如:4#:R:4|a:a:R:4|b:b:R:4|.:.:R:4#0#1#0的含义是:状态 4 。不是开始状态。是接受状态。不是拒绝状态。读到空白符,写下空白符,向右移动一格,图灵机进入状态 4;读到a,写下a,向右移,图灵机进入状态4.规则表如下:0,1,+0,1,+,=,.1#0:0:L:2|1:1:L:2|+:+:L:2|=:=:L:2|.:.:L:2|:R:q#1#0#02#0:0:R:q|1:
12、1:R:q|+:+:R:q|=:=:R:q|.:.:R:q|:=:R:3#0#0#03#0:0:R:3|1:1:R:3|+:+:R:3|=:=:R:3|.:.:R:3|:L:5#0#0#04#0:0:R:4|1:1:R:4|+:+:R:4|=:=:R:4|.:.:R:4|:L:f#0#0#05#0:.:L:7|1:.:L:8|+:+:L:6|=:=:R:q|.:.:L:5|:R:q#0#0#06#0:.:L:b|1:.:L:c|+:+:R:q|=:=:R:s|.:.:L:6|:R:q#0#0#07#0:0:L:7|1:1:L:7|+:+:L:9|=:=:R:q|.:.:R:q|:R:q#0#0
13、#08#0:0:L:8|1:1:L:8|+:+:L:a|=:=:R:q|.:.:R:q|:R:q#0#0#09#0:.:L:b|1:.:L:c|+:+:R:q|=:=:L:b|.:.:L:9|:R:q#0#0#0a#0:.:L:d|1:.:L:e|+:+:R:q|=:=:L:d|.:.:L:a|:R:q#0#0#0b#0:0:L:b|1:1:L:b|+:+:R:q|=:=:L:b|.:.:R:q|:0:R:3#0#0#0c#0:0:L:c|1:1:L:c|+:+:R:q|=:=:L:c|.:.:R:q|:1:R:3#0#0#0d#0:0:L:d|1:1:L:d|+:+:R:q|=:=:L:d|
14、.:.:R:q|:1:R:3#0#0#0e#0:0:L:e|1:1:L:e|+:+:R:q|=:=:L:e|.:.:R:q|:0:R:4#0#0#0f#0:.:L:h|1:.:L:i|+:+:L:g|=:=:R:q|.:.:L:f|:R:q#0#0#0g#0:.:L:l|1:.:L:m|+:+:R:q|=:=:L:p|.:.:L:g|:R:q#0#0#0h#0:0:L:h|1:1:L:h|+:+:L:j|=:=:R:q|.:.:R:q|:R:q#0#0#0i#0:0:L:i|1:1:L:i|+:+:L:k|=:=:R:q|.:.:R:q|:R:q#0#0#0j#0:.:L:l|1:.:L:m|
15、+:+:R:q|=:=:L:l|.:.:L:j|:R:q#0#0#0k#0:.:L:n|1:.:L:o|+:+:R:q|=:=:L:n|.:.:L:k|:R:q#0#0#0l#0:0:L:l|1:1:L:l|+:+:R:q|=:=:L:l|.:.:R:q|:1:R:3#0#0#0m#0:0:L:m|1:1:L:m|+:+:R:q|=:=:L:m|.:.:R:q|:0:R:4#0#0#0n#0:0:L:n|1:1:L:n|+:+:R:q|=:=:L:n|.:.:R:q|:0:R:4#0#0#0o#0:0:L:o|1:1:L:o|+:+:R:q|=:=:L:o|.:.:R:q|:1:R:4#0#0
16、#0p#0:0:L:p|1:1:L:p|+:+:R:q|=:=:R:q|.:.:R:q|:1:R:s#0#0#0q#0:0:R:q|1:1:R:q|+:+:R:q|=:=:R:q|.:.:R:q|:R:q#0#0#1r#0:0:R:r|1:1:R:r|+:+:R:r|=:=:R:r|.:.:R:r|:R:r#0#1#0s#0:0:R:s|1:1:R:s|+:+:R:s|=:=:R:s|.:.:R:s|:L:t#0#0#0t#0:L:t|1:L:t|+:L:t|=:L:r|.:L:t|:R:q#0#0#0二进制加法例子:11+10 111+102 11+10=311+10=131+10=113+
17、10=11+310=11+130=11+103=11+150=11+71.=117+1.=191+1.=c1.+1.c=1.+1.c =1.+1.13=1.+1.1=31.+1.1=13.+1.1=1.3+1.1=1.+31.1=1.+13.1=1.+1.31=1.+15.1=1.+51.1=1.8+.1=1a.+.1=a1.+.1e=.+.e1=.+.e 1=.+.041=.+.014=.+.01=4.+.01=.4.+.01=.4+.01=.+4.01=.+.4.01=.+.401=.+.f.01=.+f.01=.f+.01=.g.+.01=g.+.01g=.+.0p1=.+.p01=.+.p 01=.+.1s01=.+.10s1=.+.101s=.+.101=s.+.101=.s.+.101=.s+.101=.+s.101=.+.s.101=.+.s101=.+.t.101=.+t.101=.t+101=.t.101=t.101t=10r111+10 accepted. The tape is 101专心-专注-专业
限制150内