《有限自动机理论CH》PPT课件.ppt
《《有限自动机理论CH》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《有限自动机理论CH》PPT课件.ppt(330页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章第六章图灵机图灵机接收能力最强的自动机接收能力最强的自动机图灵机图灵机(即即TuringM-TM)。由由A.Turing于于1936年提出。年提出。TM是可计算性的数学模型是可计算性的数学模型研究可计算性研究可计算性(可计算的特点是可计算的特点是有穷、离散、机械执行、停机有穷、离散、机械执行、停机)。为计算机的发展奠定了为计算机的发展奠定了理论基础理论基础。图灵机可以模拟现代的计算机的图灵机可以模拟现代的计算机的计算能力计算能力。使用图灵机可以解决计算机程序使用图灵机可以解决计算机程序的的可计算问题可计算问题。图灵机的图灵机的构造技术构造技术类似于计算机类似于计算机的的编程编程(设计指令
2、设计指令)技术技术。6.1图灵机的基本模型图灵机的基本模型6.1.1图灵机的定义图灵机的定义图灵机的图灵机的物理模型物理模型a1a2a3 aj anan+1FSC一个有限状态控制器一个有限状态控制器(FSC)一个外部的存储设备一个外部的存储设备可以向右扩展的无限长度带可以向右扩展的无限长度带带上具有带上具有左端点左端点,使用,使用“”表示表示l图图灵灵机机直直接接扫扫描描输输入入带带上上左左端端点点右右边边的的第一个符号第一个符号。带分解为单元,每个单元可以为带分解为单元,每个单元可以为空空(B)或存放字母表上的字母符号或存放字母表上的字母符号有限状态控制器通过一个有限状态控制器通过一个读读/
3、写头写头与带进行耦合。与带进行耦合。带的右边用带的右边用B标记带的标记带的右期间右期间。在在某某个个时时刻刻,有有限限状状态态控控制制器器处处于于某某个个状状态态,读读/写写头头将将扫扫描描带带上上的的一个单元一个单元依依照照状状态态和和扫扫描描到到的的带带上上符符号号,图灵机将有一个图灵机将有一个动作动作如下:如下:有限状态控制器的有限状态控制器的状态状态进行进行改变改变;把把刚刚刚刚扫扫描描过过的的单单元元上上符符号号擦擦除除掉掉,并并印印刷刷上上一一个个新新的的符符号号(有有可可能能印印刷刷上上与原来符号相同的符号);与原来符号相同的符号);读读/写写头头向向左左或或者者向向右右移移动动
4、一一个个单单元元;或者读或者读/写头写头不移动不移动。五元式描述动作其中:其中:x,W图灵机处于状态图灵机处于状态q,扫描到符号,扫描到符号x,则,则状态变换为状态变换为q,印刷上新的符号,印刷上新的符号W,读读/写头写头向左向左、或、或向右向右或或不移动不移动。例例6-1用用TM接收接收语言语言a2n|n0图灵机带上符号串为:图灵机带上符号串为:aaaaaaB图图灵灵机机初初始始处处于于状状态态even,将将要要扫扫描描第一个第一个a,则,则/可省略可省略l若带上若带上a的个数为偶数,的个数为偶数,则则图图灵灵机机经经过过多多个个动动作作后后,处处于于接收状态接收状态accept;l若带上若
5、带上a的个数为奇数的个数为奇数,根根据据,图图灵灵机机将不会停机,可以永远继续下去将不会停机,可以永远继续下去这这与与其其它它的的自自动动机机不不同同,即即图图灵灵机机可能会可能会导致导致永不停止永不停止的计算。的计算。例例6-2语言为语言为a2n|n0定义定义6-1图灵机是一个五元式图灵机是一个五元式lTM=(Q,q0,q,)Q是有限状态集合;是有限状态集合;是带上字母表的有限集合是带上字母表的有限集合=BA;的的增增广广集集合合,即即输入带上符号的集合输入带上符号的集合q0Q,是开始状态,是开始状态qQ,是接收状态,是接收状态:QQL,R,N对于任意的对于任意的(q,x)Q(q,x)=(q
6、,W,L,R,N)将将记为一般形式:记为一般形式:或或图灵机是一个七元组图灵机是一个七元组TM=(Q,q0,B,F)F Q终止状态集合;终止状态集合;是带符号集合;是带符号集合;B 称为空白符;称为空白符;:Q Q R,L,N定义定义6-2图灵机的格局图灵机的格局IDw1qw2w1是读是读/写头左边带上的符号串写头左边带上的符号串q是图灵机当前所处的状态是图灵机当前所处的状态w2是还未扫描到的带上的符号串是还未扫描到的带上的符号串()*Q()*l图灵机在格局图灵机在格局w1qw2时停机时停机若若w1qw2=w1qxw对于对于无定义。无定义。(q,x)?定义6-3格局的转换l若若M在在w1qw2
7、上上不不停停机机,则则如如下下定定义义格局的转换:格局的转换:l某某 个个 时时 刻刻,图图 灵灵 机机 处处 于于 格格 局局w1qw2=r1yqxr2,其中:,其中:r1y=w1,(若若w1=,则,则y=B,r1=)xr2=w2,(若若w2=,则,则r2=,x=B)使用使用=表示图灵机的格局转换表示图灵机的格局转换l若若(q,x)=(q,x,L),则,则r1yqxr2=l若若(q,x)=(q,x,N),则,则r1yqxr2=l若若(q,x)=(q,x,R),则,则r1yqxr2=r1qyxr2r1yqxr2r1yxqr2使用使用=+代表格局的代表格局的多次多次变换变换使用使用=*代表格局的
8、代表格局的任意次任意次变换变换定义6-4l图图灵灵机机M=(Q,q0,q,)在在字字母母表表上上接接收收的的语语言言为为L(M),则,则L(M)=w|存在存在w1,w2()*有有=*q0ww1qw2定义6-5完全的图灵机如如果果图图灵灵机机对对于于一一切切输输入入串串都都能能够够停停机机-完全的图灵机。完全的图灵机。完完全全的的图图灵灵机机接接收收的的语语言言L称称为为递递归归语言语言(图灵可判定语言图灵可判定语言)6.1.2图灵机的构造图灵机的构造例例-接收仅有一个接收仅有一个1的的0、1串串TM=(q0,q1,q2,0,1,q0,q2,)=0,1,B0思路:l当图灵机遇到当图灵机遇到a时,
9、将时,将a改写为改写为#向右寻找向右寻找b,找到,找到b,将,将b改写为改写为#再向左找再向左找a直到所有直到所有a都找完。都找完。(向左找的向左找的a是整个是整个a串串最左边的最左边的a)指令为指令为读到一个读到一个a,用,用#代替它,向右找代替它,向右找b处处于于状状态态del_b,扫扫描描到到b,用用#代代替替它,向左寻找它,向左寻找a,(从,(从重复循环)重复循环)/最右的最右的aseek_a状状态态时时,没没有有再再发发现现a(都都已已被被#所所代代替替),还还需需要要检检查查是是否否所所有有的的b都已经被扫描过。都已经被扫描过。问题问题l该图灵机能接收该图灵机能接收anbn的所有串
10、的所有串但该图灵机也能接收但该图灵机也能接收aababb等等原因:使用原因:使用#代表已扫描的代表已扫描的a和和b没有保证没有保证a和和b的的顺序顺序。l为了区别原来的字母为了区别原来的字母a和和b使用使用#和和$分别代替字母分别代替字母a和和b当当a和和b都识别后,带上的串为都识别后,带上的串为#$B例例6-5修改上例:修改上例:读到一个读到一个a,用,用#代替它,向右寻找代替它,向右寻找b处处于于状状态态del_b,扫扫描描到到b,用用$代代替替它,向左寻找它,向左寻找a,(从,(从重复重复循环循环)在在seek_a状状态态时时,没没有有再再发发现现a(都都已经被已经被#所代替)所代替)需
11、检查是否所有的需检查是否所有的b都已经被扫描过都已经被扫描过还还必须注意必须注意#与与$的顺序的顺序。例6-6anbn|n0的第二种算法l当图灵机遇到当图灵机遇到a时,将时,将a改写为改写为#l向右寻找向右寻找b,找到,找到b,将,将b改写为改写为$再向左找再向左找a(此时的此时的a是整个是整个a串串最左边的最左边的a),直到所有,直到所有a都找完。都找完。指令指令读到一个读到一个a,用,用#代替它,向右寻找代替它,向右寻找b处处于于状状态态del_b,扫扫描描到到b,用用$代代替替,向左寻找向左寻找a,(从,(从重复循环)重复循环)/跳过跳过a串串/最右最右#/最左最左a在在seek_a状状
12、态态时时,没没有有再再发发现现a,需需检查是否所有的检查是否所有的b都已经被扫描过。都已经被扫描过。思考思考l比较对于相同的输入串,两种算法的比较对于相同的输入串,两种算法的图灵机的指令数量、每条指令的执行图灵机的指令数量、每条指令的执行次数(总次数);次数(总次数);l能否给对图灵机的性能进行评价?能否给对图灵机的性能进行评价?例例6-7anbn|n0第三种算法第三种算法思路思路:首先检查输入串是否为首先检查输入串是否为a+b+的格式;的格式;如果不是,则拒绝该串如果不是,则拒绝该串如果是,检查如果是,检查a和和b的个数是否相等。的个数是否相等。指令指令(扫描扫描a)(扫描扫描b)(开始检查
13、开始检查a和和b的个数是否相等的个数是否相等)已经保证顺序已经保证顺序(检查是否有多余的(检查是否有多余的b)例6-8接收语言接收语言anbncn|n0lTM=(Q,start,accept,)Q=start,del_b,del_c,seek_a,check1,check2,check3,accept=a,b,c=a,b,c,B,#,$,!指令指令读到一个读到一个a,用,用#代替它,向右寻找代替它,向右寻找b处处于于状状态态del_b时时,扫扫描描到到b,用用$代代替替它,向右寻找它,向右寻找c:处处于于状状态态del_c时时,扫扫描描到到c,用用!代代替替它,向左找它,向左找a,(从从开始又
14、重复循环开始又重复循环)在在seek_a状状态态时时,没没有有再再发发现现a(都都已经被已经被#所代替)所代替)还还需需要要检检查查是是否否所所有有的的b和和c都都已已经经被被扫描过扫描过注意注意#、$和!的顺序和!的顺序识别第一个识别第一个!跳过剩余跳过剩余!l类类 似似 地地,图图 灵灵 机机 接接 收收 语语 言言 anbncn|n0,也有多种方法。,也有多种方法。思考:构造构造TM接收语言接收语言aibjci+j|i,j0构造构造TM接收语言接收语言aibjci*j|i,j0构造构造TM接收语言接收语言wcwT|w(a,b)*6.2图灵机作为非负整数函数计算模型图灵机作为非负整数函数计
15、算模型l设有设有k元函数元函数f(n1,n2,nK)=m如果如果TM接受输入串接受输入串0n110n2110nk而而“输出输出”符号串符号串0m则称则称TM计算计算k元函数元函数f;或称或称f为为TM计算的函数。计算的函数。也称也称f是图灵可计算的是图灵可计算的。但当但当f(n1,n2,nK)无定义时,无定义时,TM没有适当的输出。没有适当的输出。l自动机都具有识别语言的功能自动机都具有识别语言的功能图灵机还具有图灵机还具有“计算计算”功能功能可可以以规规定定非非负负整整数数的的表表示示方方法法,从从而实现而实现非负整数的函数求值非负整数的函数求值。l使使用用“一一进进制制”方方式式表表示示一
16、一个个非非负负整整数,即数,即使用使用0m表示整数表示整数m。l若若需需要要计计算算f(m,n),则则可可以以在在输输入入带上存放带上存放0m10n形式的串形式的串l图图灵灵机机将将串串改改写写为为0f(m,n)的的形形式式,即即表示出计算表示出计算f(m,n)的结果。的结果。加法图灵机加法图灵机l对于非负整数对于非负整数n、m,计算,计算n+m。分析分析图灵机输入图灵机输入0n10m需要输出需要输出0n+m算法:算法:将将1改写为改写为0,最后一个,最后一个0改写为改写为B(可能是可能是1改写成的改写成的0)lTM=(Q,,start,accept,)Q=start,q1,q2,accept
17、=0,1=0,1,B指令指令串为串为1或或10m第第1个个0跳过剩余的跳过剩余的0遇到遇到1,改为,改为0遇到遇到B,向左找,向左找0最后的最后的0改为改为B注意注意l扫描扫描1左边和右边的左边和右边的0的工作都由的工作都由完成。完成。整个串整个串只允许一个只允许一个1。例例6-16构造构造TMl实现非负减法实现非负减法(真减法真减法)mn=m-nmn=0mn(即全是即全是B)或或思路思路1带上字符串的形式为带上字符串的形式为0m10n寻找寻找1左边的左边的0,删除,删除1右边的右边的0可能在寻找可能在寻找1左边的左边的0时结束时结束(mn)或者在删除或者在删除1右边的右边的0时结束时结束(m
18、n)(1)扫描第扫描第1个个0(2)/原标记的原标记的1(3)/将将1后的第后的第1个个0变为变为1/后加的后加的strat,1q2,B(4)向左找向左找0读写头位置读写头位置转(转(1)重复上述动作重复上述动作?mn(5)/遇到最右边的遇到最右边的B,表示,表示1右边已没有右边已没有0将将1改写为改写为B补写补写1个个0,结束,结束mn(6)start将遇到第一个将遇到第一个1将后面将后面1改写为改写为B将后面将后面0改写为改写为B结束结束此时,输入带上全为,表示此时,输入带上全为,表示mnl在在第第(5)步步开开始始时时,输输入入带带上上的的字字符符串串形式为:形式为:BBBB000011
19、11Bm-n-1个个n个个左边左边B有有n+1个。个。mn根据根据TM的动作,的动作,在左边消除一个在左边消除一个0,再去,再去1的右边找的右边找0当当发发现现1的的右右边边已已经经没没有有0时时,此此时时减减法工作应该结束法工作应该结束mn但但左边多消除了一个左边多消除了一个0因因此此,第第(5)步步,在在q4的的的的控控制制下下除除了将了将1改写为改写为B外外还还应应该该将将一一个个0补补写写回回来来,才才能能结结束束减减法工作。法工作。mnl此时,输入带上的字符串形式为:此时,输入带上的字符串形式为:BBBB0000Bm-n个个lm=n时,整个减法的结果应该为时,整个减法的结果应该为0l
20、输入带全为输入带全为 Bl特殊:特殊:m=n=0,则串为,则串为1BB结束结束思路思路2自学自学l图灵机反复进行下面的工作:图灵机反复进行下面的工作:先用先用B替换替换1左边领头的左边领头的0向向右右搜搜寻寻1右右边边的的第第一一个个0,并并将将这这个个0替换为替换为X,然后左移到然后左移到B。重新开始循环。重新开始循环。l退出循环的条件有两种:退出循环的条件有两种:1)1的左边找不到的左边找不到0,说明,说明mn输出输出0,应将所有非,应将所有非B符号改写为符号改写为B;2)1的右边找不到的右边找不到0,说明,说明mn输出输出0m-n,应将应将1换为换为0,将,将X换为换为B。状态转换函数为
21、:状态转换函数为:(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
22、/1换为换为06.3图灵机的构造技术图灵机的构造技术构造构造TM,就相当于,就相当于编写一个程序编写一个程序(指令或规则的组合指令或规则的组合)。本节介绍的图灵机的一些构造技术,本节介绍的图灵机的一些构造技术,这些技术具有一般性,对于图灵机的这些技术具有一般性,对于图灵机的构造构造(程序设计程序设计)具有较大的意义。具有较大的意义。6.3.1图灵机的图灵机的存储技术存储技术例例6-12构构造造TM,识识别别字字母母表表a,b,c上上的语言的语言L:每每个个字字符符串串的的第第一一个个符符号号在在该该串串中中仅仅仅出现一次仅出现一次。思路:要求:第一个符号仅仅出现一次要求:第一个符号仅仅出现一次
23、图图灵灵机机可可以以“记记住住”输输入入带带上上的的第第一一个符号个符号(a或或b或者或者c)。)。使用使用二元式二元式表示表示状态状态第一个分量仍然表示原来的状态;第一个分量仍然表示原来的状态;第二个分量存储带上的第一个符号。第二个分量存储带上的第一个符号。q,a、q,b和和q,c分分别别代代表表输输入入串的第一个符号为串的第一个符号为a、b和和c的状态。的状态。(1)扫描第一个符号,并存储扫描第一个符号,并存储(2)第一个符号是第一个符号是a(3)第一个符号是第一个符号是b(4)第一个符号是第一个符号是c结束结束(5)遇到最右的遇到最右的B,接收该串,接收该串注意注意直接运用规则(直接运用
24、规则(1)和()和(5)可以接收)可以接收仅仅仅仅只有一个符号只有一个符号的输入串。的输入串。例6-13构造TM,识别a,b,c上的语言上的语言L:每每个个句句子子的的最最后后一一个个符符号号在在该该串串中中仅仅仅出现一次。仅出现一次。思路1:最后个符号仅仅出现一次最后个符号仅仅出现一次TM先将读先将读/写头移动到带的最后写头移动到带的最后“记住记住”输入带上的输入带上的最后一个符号最后一个符号向左扫描输入带上的其他符号向左扫描输入带上的其他符号与最后一个符号进行比较与最后一个符号进行比较x=a,b,c(1)将读将读/写头移动到带的最后写头移动到带的最后start,B?(2)存储最后的符号存储
25、最后的符号向向左左扫描输入带上的其他符号扫描输入带上的其他符号遇到遇到结结束束思路思路2:TM需要存储需要存储已经出现过的符号已经出现过的符号为了识别输入带上的最后一个符号,为了识别输入带上的最后一个符号,图灵机还需要图灵机还需要存储当前扫描的符号,存储当前扫描的符号,以便确定最后一个符号。以便确定最后一个符号。使用三元组表示单个状态使用三元组表示单个状态第一个分量仍然表示原来的状态;第一个分量仍然表示原来的状态;第第二二个个分分量量是是已已经经出出现现过过的的符符号号的的串串(ab、ac或或bc)第三个分量表示上一次扫描的符号。第三个分量表示上一次扫描的符号。如如q,ab,a代表输入带上的字
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限自动机理论CH 有限 自动机 理论 CH PPT 课件
限制150内