有限自动机理论CH.ppt
《有限自动机理论CH.ppt》由会员分享,可在线阅读,更多相关《有限自动机理论CH.ppt(332页珍藏版)》请在三一办公上搜索。
1、第六章 图灵机,接收能力最强的自动机 图灵机(即TuringM-TM)。由A.Turing于1936年提出。,TM是可计算性的数学模型 研究可计算性(可计算的特点是 有穷、离散、机械执行、停机)。为计算机的发展奠定了理论基础。,图灵机可以模拟现代的计算机的计算能力。使用图灵机可以解决计算机程序的可计算问题。图灵机的构造技术类似于计算机的编程(设计指令)技术。,6.1 图灵机的基本模型,6.1.1 图灵机的定义,图灵机的物理模型,a1,a2,a3,aj,an,an+1,FSC,一个有限状态控制器(FSC)一个外部的存储设备 可以向右扩展的无限长度带 带上具有左端点,使用“”表示图灵机直接扫描输入
2、带上左端点右边的第一个符号。,带分解为单元,每个单元可以为空(B)或存放字母表上的字母符号 有限状态控制器通过一个读/写头与带进行耦合。带的右边用B标记带的右期间。,在某个时刻,有限状态控制器处于某个状态,读/写头将扫描带上的一个单元 依照状态和扫描到的带上符号,图灵机将有一个动作如下:,有限状态控制器的状态进行改变;把刚刚扫描过的单元上符号擦除掉,并印刷上一个新的符号(有可能印刷上与原来符号相同的符号);读/写头向左或者向右移动一个单元;或者读/写头不移动。,五元式描述动作,其中:x,W 图灵机处于状态q,扫描到符号x,则状态变换为q,印刷上新的符号W,读/写头向左、或向右 或不移动。,例6
3、-1 用TM接收,语言a2n|n0,图灵机带上符号串为:aaaaaaB 图灵机初始处于状态even,将要扫描第一个a,则,/可省略,若带上a的个数为偶数,则图灵机经过多个动作后,处于接收状态accept;,若带上a的个数为奇数,根据,图灵机将不会停机,可以永远继续下去 这与其它的自动机不同,即图灵机可能会导致永不停止的计算。,例6-2 语言为a2n|n0,定义6-1 图灵机是一个五元式,TM=(Q,q0,q,)Q是有限状态集合;是带上字母表的有限集合=BA;的增广集合,即输入带上符号的集合,q0Q,是开始状态qQ,是接收状态,:QQL,R,N对于任意的(q,x)Q(q,x)=(q,W,L,R,
4、N)将记为一般形式:,或 图灵机是一个七元组,TM=(Q,q0,B,F)F Q 终止状态集合;是带符号集合;B 称为空白符;:Q Q R,L,N,定义6-2 图灵机的格局ID,w1qw2w1是读/写头左边带上的符号串q是图灵机当前所处的状态w2是还未扫描到的带上的符号串,()*Q()*,图灵机在格局w1qw2时停机若w1qw2=w1qxw对于 无定义。,(q,x),?,定义6-3 格局的转换,若M在w1qw2上不停机,则如下定义格局的转换:某个时刻,图灵机处于格局w1qw2=r1yqxr2,其中:r1y=w1,(若w1=,则y=B,r1=)xr2=w2,(若w2=,则r2=,x=B),使用=表
5、示图灵机的格局转换,若(q,x)=(q,x,L),则 r1yqxr2=若(q,x)=(q,x,N),则 r1yqxr2=若(q,x)=(q,x,R),则 r1yqxr2=,r1qyxr2,r1yqxr2,r1y xqr2,使用=+代表格局的多次变换使用=*代表格局的任意次变换,定义6-4,图灵机M=(Q,q0,q,)在字母表上接收的语言为L(M),则 L(M)=w|存在w1,w2()*有=*,q0w,w1qw2,定义6-5 完全的图灵机,如果图灵机对于一切输入串都能够停机-完全的图灵机。完全的图灵机接收的语言L称为递归语言(图灵可判定语言),6.1.2 图灵机的构造,例-接收仅有一个1的0、1
6、串TM=(q0,q1,q2,0,1,q0,q2,),=0,1,B,q1,B?,例6-4 构造图灵机,接收语言 anbn|n0,思路:,当图灵机遇到a时,将a改写为#向右寻找b,找到b,将b改写为#再向左找a 直到所有a都找完。(向左找的a是整个a串最左边的a),指令为,读到一个a,用#代替它,向右找b,处于状态del_b,扫描到b,用#代替它,向左寻找a,(从重复循环)/最右的a,seek_a状态时,没有再发现a(都已被#所代替),还需要检查是否所有的b都已经被扫描过。,问题,该图灵机能接收anbn的所有串 但该图灵机也能接收aababb 等 原因:使用#代表已扫描的a和b 没有保证a和b的顺
7、序。,为了区别原来的字母a和b 使用#和$分别代替字母a和b 当a和b都识别后,带上的串为#$B,例6-5 修改上例:,读到一个a,用#代替它,向右寻找b,处于状态del_b,扫描到b,用$代替它,向左寻找a,(从重复循环),在seek_a状态时,没有再发现a(都已经被#所代替)需检查是否所有的b都已经被扫描过 还必须注意#与$的顺序。,例6-6 anbn|n0的第二种算法,当图灵机遇到a时,将a改写为#向右寻找b,找到b,将b改写为$再向左找a(此时的a是整个a串最左边的a),直到所有a都找完。,指令,读到一个a,用#代替它,向右寻找b,处于状态del_b,扫描到b,用$代替,向左寻找a,(
8、从重复循环)/跳过a串/最右#/最左a,在seek_a状态时,没有再发现a,需检查是否所有的b都已经被扫描过。,思考,比较对于相同的输入串,两种算法的图灵机的指令数量、每条指令的执行次数(总次数);能否给对图灵机的性能进行评价?,例6-7 anbn|n0第三种算法,思路:首先检查输入串是否为a+b+的格式;如果不是,则拒绝该串 如果是,检查a和b的个数是否相等。,指令,(扫描a)(扫描b),(开始检查a和b的个数是否相等),已经保证顺序,(检查是否有多余的b),例6-8接收语言 anbncn|n0,TM=(Q,start,accept,)Q=start,del_b,del_c,seek_a,c
9、heck1,check2,check3,accept=a,b,c=a,b,c,B,#,$,!,指令,读到一个a,用#代替它,向右寻找b,处于状态del_b时,扫描到b,用$代替它,向右寻找c:,处于状态del_c时,扫描到c,用!代替它,向左找a,(从开始又重复循环),在seek_a状态时,没有再发现a(都已经被#所代替)还需要检查是否所有的b和c都已经被扫描过 注意#、$和!的顺序,识别第一个!跳过剩余!,类似地,图灵机接收语言 anbncn|n0,也有多种方法。,思考:,构造TM接收语言aibjci+j|i,j0构造TM接收语言aibjci*j|i,j0构造TM接收语言wcwT|w(a,b
10、)*,6.2 图灵机作为非负整数函数计算模型,设有k元函数f(n1,n2,nK)=m 如果TM接受输入串 0n110n2110nk而“输出”符号串 0m,则称TM计算k元函数f;或称f为TM计算的函数。也称f是图灵可计算的。但当f(n1,n2,nK)无定义时,TM 没有适当的输出。,自动机都具有识别语言的功能 图灵机还具有“计算”功能 可以规定非负整数的表示方法,从而实现非负整数的函数求值。,使用“一进制”方式表示一个非负整数,即 使用0m表示整数m。若需要计算f(m,n),则可以在输入带上存放0m10n形式的串图灵机将串改写为0f(m,n)的形式,即表示出计算f(m,n)的结果。,加法图灵机
11、,对于非负整数n、m,计算n+m。,分析,图灵机输入0n10m 需要输出0n+m算法:将1改写为0,最后一个0改写为B(可能是1改写成的0),TM=(Q,,start,accept,)Q=start,q1,q2,accept=0,1=0,1,B,指令,串为1或10m 第1个0 跳过剩余的0 遇到1,改为0 遇到B,向左找0最后的0改为B,注意,扫描1左边和右边的0的工作都由 完成。整个串只允许一个1。,例6-16 构造TM,实现非负减法(真减法)m n=m-n mn=0 mn(即全是B),或,思路1,带上字符串的形式为0m10n寻找1左边的0,删除1右边的0 可能在寻找1左边的0时结束(mn)
12、或者在删除1右边的0时结束(mn),(1)扫描第1个0(2)/原标记的1(3)/将1后的第1个0变为1/后加的,strat,1,q2,B,(4)向左找0 读写头位置 转(1)重复上述动作,?,mn,(5)/遇到最右边的B,表示1右边已没有0 将1改写为B 补写1个0,结束,m n,(6)start将遇到第一个1 将后面1改写为B 将后面0改写为B 结束此时,输入带上全为,表示,mn,在第(5)步开始时,输入带上的字符串形式为:BBBB000011 11B m-n-1个 n个 左边B有n+1个。,mn,根据TM的动作,在左边消除一个0,再去1的右边找0 当发现1的右边已经没有0时,此时减法工作应
13、该结束,mn,但左边多消除了一个0 因此,第(5)步,在q4的的控制下除了将1改写为B外 还应该将一个0补写回来,才能结束减法工作。,mn,此时,输入带上的字符串形式为:BBBB0000 B m-n个,m=n时,整个减法的结果应该为0输入带全为,B,特殊:m=n=0,则串为1BB 结束,思路2 自学,图灵机反复进行下面的工作:先用B替换1左边领头的0 向右搜寻1右边的第一个0,并将这个0替换为X,然后左移到B。重新开始循环。,退出循环的条件有两种:1)1的左边找不到0,说明mn 输出0,应将所有非B符号改写为B;2)1的右边找不到0,说明mn 输出0m-n,应将1换为0,将X换为B。,状态转换
14、函数为:(1)开始循环,用B替换1左边领头的0(2)向右搜寻1。,(3)向右寻1右边的第一个0,并将这个0替换为X,(4)左移到B,重新开始循环。,(5)符合退出条件1),即1的左边找不到0,用状态q4向右扫描将所有非B符号改写为B,并进入终止状态q6,(6)符合退出条件2),即1的右边找不到0,用状态q5向左扫描将所有X改写为B,将1替换为0,并进入终态q6/1换为0,6.3 图灵机的构造技术,构造TM,就相当于编写一个程序(指令或规则的组合)。本节介绍的图灵机的一些构造技术,这些技术具有一般性,对于图灵机的构造(程序设计)具有较大的意义。,6.3.1 图灵机的存储技术,例6-12 构造TM
15、,识别字母表 a,b,c上的语言L:每个字符串的第一个符号在该串中仅仅出现一次。,思路:,要求:第一个符号仅仅出现一次 图灵机可以“记住”输入带上的第一个符号(a或b或者c)。,使用二元式表示状态 第一个分量仍然表示原来的状态;第二个分量存储带上的第一个符号。q,a、q,b和q,c分别代表输入串的第一个符号为a、b和c的状态。,(1)扫描第一个符号,并存储,(2)第一个符号是a,(3)第一个符号是b,(4)第一个符号是c,结束,(5)遇到最右的B,接收该串,注意,直接运用规则(1)和(5)可以接收 仅仅只有一个符号的输入串。,例6-13 构造TM,识别,a,b,c上的语言L:每个句子的最后一个
16、符号在该串中仅仅出现一次。,思路1:,最后个符号仅仅出现一次 TM先将读/写头移动到带的最后“记住”输入带上的最后一个符号 向左扫描输入带上的其他符号 与最后一个符号进行比较,x=a,b,c,(1)将读/写头移动到带的最后,start,B?,(2)存储最后的符号,向左扫描输入带上的其他符号遇到结束,思路2:,TM需要存储已经出现过的符号 为了识别输入带上的最后一个符号,图灵机还需要存储当前扫描的符号,以便确定最后一个符号。,使用三元组表示单个状态,第一个分量仍然表示原来的状态;第二个分量是已经出现过的符号的串(ab、ac或bc)第三个分量表示上一次扫描的符号。,如q,ab,a 代表输入带上的字
17、符已经出现过a和b上一次扫描的符号为a。具体指令 略,思考:构造TM,该语言的每个句子的(倒数)第n个符号 在该串中仅仅出现K次。n=1,2,3,;K=1,2,3,,图灵机的移动技术,在解决比较复杂的问题时 TM需要将输入带上一组连续的非空符号左移或者右移若干个单元。使用n元式存储多个符号 直到某个阶段再将这些符号印刷到需要的位置上。,例6-14构造TM,=a,b,c,将输入串右移两个单元 使用三元组q,a1,a2表示状态 q表示原来的状态;a1、a2可以代表a、b、c。,设串长度=3,(1)扫描第一个符号,并存储(2)扫描第二个符号,并存储(3)将a1放在a3位置,将a3存储,(4)将倒数第
18、二个符号放在右边空白单元,将最后一个符号存储在状态中(5)将最后一个符号放在带上,其中规则(3)需要重复多次使用。,本例使用三元组表示特殊状态 也可以使用二元组表示特殊状态 如q,a1,a2可以记为q,a1a2(n元组也可以表示为二元组),对带上符号进行移动,一般只是比较复杂的TM的识别任务中的一部分工作 移动本身不会涉及到串的接收或拒绝问题 复杂的TM可以继续从end_move状态开始其他的工作,思考:构造TM,将整个输入串前两个符号删除。,思路,将带上符号从右向左移动两个单元。,例6-15构造TM,输入字母表为0,1 在输入串的开始处添加子串10。略。,例6-16构造TM,=a,b,c 将
19、整个串包含的第一个abc子串删除。,思路,存储技术寻找到第1个abc子串的位置 将后面的符号向左移动三个单元。略。,例6-18,构造TM,输入字母表为0,1,要求M接收语言L:该语言的每个字符串包含且仅只能包含一个101子串(有且仅有一个101,不可以没有101子串),思路,当识别出第一个101后,检查输入带上剩余的串 不能再包含10110101,?,TM=(Q,start,accept,)Q=start,q,0,q,1,q,10,check,check,0,check,1,check,10,refuse,accept=0,1=0,1,B,(1)扫描第一符号 空串,(2),(3)已经扫描到“1
20、”,等待可能的“0”(4)已经扫描到“10”,等待可能的“1”,(5)已扫描到101,检查串的剩余部分,(6)(7),(8)的第2条指令与(9)可以省略,(8)(9)整个输入串中没有101,结束,(10)整个输入串只有一个101,思考,构造TM,接收语言L:该语言的每个句子必须包含两个101,例6-19,构造TM,接收语言L:该语言的每个句子最多只能包含一个100子串(可以没有100子串)。,思路,接收1个100子串的所有串;接收没有100子串的所有串。,例6-23 构造TM,接收语言L:该语言的每个句子不包含子串100。,思路,当识别出第一个100后,就拒绝。,6.3.3 图灵机扫描多个符号
21、技术,略,图灵机的多道技术,为了能够保存和处理更复杂的数据,可以将TM的输入带划分为若干道在各道上可以存放不同的符号。,没有改变图灵机的基本模型,只是将带上符号当做一个向量的组合每个符号可以是一个K维向量(将输入带划分为K道)。,单带K道的图灵机,状态转换函数,一般形式为 对于K道图灵机一次需要扫描一个符号的多道,思考,二进制的加法考查第3题,例6-24:构造图灵机,字母表为a 接收语言L:an|n=0,且n为完全平方数,基本数学公式:(n+1)2=n2+2n+1,思路,使用三道的图灵机 第一道存放输入串;第二、三两道作为“运算器”使用。,初始时,从i=0开始 在第二道上放i2个a 比较第一道
22、与第二道上a的个数 如果相等,就接收;,不相等,则在第三道上设置(计算)出 2*i+1个a,将第三道上的a加入到第二道上去,从而,在第二道上形成(i+1)2个a 再与第一道上a的个数进行比较。,初始 i=0 第2道a个数为02,aaa aB n个aBBBB 02=0BBBB,第3道设置为2*0+1,aaa aBBBBB 02aBBB 2*0+1,第2道设置为12 i=1,aaa aBaBBB 12aBBB,第3道设置为2*1+1,aaa aB naBBB 12aaaBB 2*1+1,第2道设置为22 i=2,aaa aB naaaaB B 22aaaBB,第3道设置为2*2+1,aaa aB
23、naaaaB.B 22aaaaaBB 2*2+1,第2道设置为32 i=3,aaa aB naaaaaaaaaB.B 32aaaaaBB,第3道设置为2*3+1,aaa aB naaaaaaaaaBB 32aaaaaaaBB 2*3+1,第2道设置为42 i=4,aaa.aB naaaaaaaaaaaaaaaaBB 42aaaaaaaB.B,上述动作一直重复下去,直到第一、二道上a的个数相等,则接收;或者第一、二道上a的个数不相等则拒绝该输入串。,从i=2过渡i=3到时,图灵机输入带为:,TM=(Q,start,accept,)Q=start,q1,,q9,refuse,accept=a=a,
24、B,(1)对于两种特殊情况:n=0或者n=1,进行处理,(2)i=0:准备工作 在第三道上放一个a,(3)计算(i+1)2其中:x,ya,B,将第道的a复制第2道的a的后面向左找复制标志b或,建立新标志(i=0)/在第三道上放b为新标志,其中:xa,B,在第二道上复制一个a,其中:xa,B,(4)计算2(i+1)+1,为下次做准备(实际上,在第3道每次增加2个a)仅当输入串为a4和 a9时(i2=2*i),其中:x,ya,B,(5)比较第一道和第二道上a的个数/第一道上a的已经查完,其中:x a,B,仅当输入串为a4和 a9时(i2小于2i)第二道的a少于第一道的a,继续扫描,(6)拒绝情况(
25、可省略)第二道的a多于第一道上的a,停机 第一道上已经没有a,停机,图灵机的查讫技术,在TM的工作中,有时需要对已经扫描过的符号进行检查。为了区分带上的某个符号是否已经检查过,可以使用查讫符号“”进行标记 需要使用多道技术存储查讫符号,初始时,所有带上符号的查讫标记都标记为“B”。,例6-25 构造TM,L(M)=w2w|w0,1+,分析,依次比较2前后的符号 将带分成两条道 第一条道上存放输入符号串 第二条道上存放检查标记。,初始,输入带上的符号情况为:a1a2 an 2 b1 b2 bm B B B B B B B B B,比较时,使用存储技术,将符号“2”前面的待比较符号存储,再与2后面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限 自动机 理论 CH
链接地址:https://www.31ppt.com/p-5358874.html