形式语言自动机-图灵机.ppt

上传人:max****ui 文档编号:11504975 上传时间:2020-04-26 格式:PPT 页数:31 大小:558.50KB
返回 下载 相关 举报
形式语言自动机-图灵机.ppt_第1页
第1页 / 共31页
形式语言自动机-图灵机.ppt_第2页
第2页 / 共31页
形式语言自动机-图灵机.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
1,SchoolofComputerScience&Technology,BUPT,第五章图灵机,A.Turing在1936年介绍了这样一个通用的计算模型,该模型具有以下两个性质该模型的每个过程都是有穷可描述的;过程必须是由离散的、可以机械执行的步骤组成。图灵机是计算机的一种简单数字模型,尽管简单,但它具有模拟通用计算机的计算能力。通过研究TM来研究递归可枚举集和部分递归函数为算法和可计算性研究提供了形式化描述工具。,2,SchoolofComputerScience&Technology,BUPT,主要内容,TM的基本定义TM的格局TM接受的语言TM的构造技术TM的变形;重点:TM的定义、TM的构造。难点:TM的构造。,3,SchoolofComputerScience&Technology,BUPT,读写头在每一时刻扫描带上的一个单元带有一个最左单元,向右则是无限的。带的每个单元可容纳一个带符号开始时,最左边n个单元装着输入(n0,n为有限数),它是一个字符串,符号都选自“带符号”的一个子集,即所谓的“输入符号集合”。余下的有穷个单元都存放空白符,它是一个特殊的带符号,但不是输入符号。,图灵机的基本模型,4,SchoolofComputerScience&Technology,BUPT,在一个图灵机的动作中,图灵机根据带头(读写头)所扫描的符号和有限控制器的状态可能作改变状态在被扫描的带单元上重新写一个符号,以代替原来写在该单元上的符号.将带头向左或者右移一个单元。*图灵机和双向有限自动机的区别:图灵机能改变它带上的符号。,图灵机的工作机制,5,SchoolofComputerScience&Technology,BUPT,图灵机的形式化描述,有限状态集有限输入符号集有限带符号集转移函数开始状态特殊带符:空白符终态集合,q0QTBTFQ,转移函数:QQL,R,形式定义一个图灵机TM(Turingmachine)是一个七元组M=(Q,T,q0,B,F).,6,SchoolofComputerScience&Technology,BUPT,函数示例:QQL,R(q,ai)=(p,B,L)q,pQ(q,ai)=(p,b,R)aib格局用w1qw2描述图灵机的瞬间工作状态q为M的当前状态,w1w2*w1w2是当前时刻从开始端(因为可写)到右边空白符号为止的内容当读写头已达到带的右端,则w1w2为读写头以左的内容。约定:w1qw2表示读写头正扫描w2的最左字符w2则表示读写头正扫描一个空白字符。,图灵机的函数与格局,7,SchoolofComputerScience&Technology,BUPT,图灵机的格局,给定图灵机M=(Q,T,q0,B,F),定义格局之间的推导关系M如下:1.设(q,Xi)=(p,Y,L),则有X1X2Xi-1qXiXi+1XnMX1X2Xi-2pXi-1YXn,但有如下两个例外:(1)i=1时,qX1X2XnMqYX2Xn,和(2)i=n及Y=B时,X1X2Xn-1qXnMX1X2Xn-2pXn-1B.2.设(q,Xi)=(p,Y,R),则有X1X2Xi-1qXiXi+1XnMX1X2Xi-1YpXi+1Xn,但有如下两个例外:(1)i=n时,X1X2Xn-1qXnMX1X2Xn-1YpB,和(2)i=1及Y=B时,qX1X2XnMBpX2Xn-1Xn.,8,SchoolofComputerScience&Technology,BUPT,图灵机接受的语言,L(M)=T*且q0*1p2,pF,12*图灵机接受的语言是输入字母表中这样一些字符串的集合,初始时,这些字符串放在M的带上,M处于状态q0,且M的带头处在最左单元上,这些字符串将使M进入某个终止状态。假定:当输入被接受时,图灵机将停止,没有下一个动作。,9,SchoolofComputerScience&Technology,BUPT,任给图灵机M=(Q,T,q0,B,F),以及输入字符串wT*.试问:对于w,M是否停机?停机是指图灵机不存在下一个移动步(move).结论图灵机的停机问题是不可解的(即不可判定的).结论任给图灵机M,很容易构造一个图灵机M,使得L(M)=L(M),并满足:如果wL(M),则对于w,M接受w并一定停机.如果没有特别指出,总是假定图灵机到达终态(接受态)后一定停机.但是,对不能接受的字符串,图灵机可能永不停止.(只要M还在某个输入上运行,我们无法知道是因为运行的时间不够长而没有被接受,还是根本就不会停机),图灵机的停机问题,10,SchoolofComputerScience&Technology,BUPT,图灵机举例,例1:设语言L=anbnn=1,设计图灵机接受L。思路:最初带上为aaabbbBBBn个an个b首先用x替换M最左边的a,再右移至最左边的b用y替换之,左移寻找最右的x,然后右移一单元到最左的a,重复循环。如果(1)当在搜寻b时,M找到了空白符B,则M停止,不接受该串。(此时,a的个数大于b的个数)(2)当将b改为y后,左边再也找不到a,此时,若右边再无b,接受;若仍有b,则b的个数大于a的个数,不接受。,11,SchoolofComputerScience&Technology,BUPT,例1L=anbnn=1,(q0,a)=(q1,x,R)(q0,y)=(q3,y,R)(q1,a)=(q1,a,R)(q1,y)=(q1,y,R)(q1,b)=(q2,y,L)(q2,a)=(q2,a,L)(q2,y)=(q2,y,L)(q2,x)=(q0,x,R)(q3,y)=(q3,y,R)(q3,B)=(q4,B,R),例:aabb的接收格局序列q0aabbxq1abbxaq1bbxq2aybq2xaybxq0aybxxq1ybxxyq1bxxq2yyxq2xyyxxq0yyxxyq3yxxyyq3Bxxyyq4,12,SchoolofComputerScience&Technology,BUPT,对于输入字符串001122,该图灵机可以有如下推导步:,q0001122,M,Xq101122,M,X0q11122,M,X0Yq2122,M,X0Y1q222,M,X0Yq31Z2,*M,q3X0Y1Z2,M,Xq00Y1Z2,*M,XXYYZq22,M,XXYYq3ZZ,*M,Xq3XYYZZ,M,XXq0YYZZ,*M,XXYYq4ZZ,M,XXYYZq5Z,M,XXYYZZq5B,M,XXYYZZBq6B,例2L=0n1n2nn1.,13,SchoolofComputerScience&Technology,BUPT,转移图与转移表,14,SchoolofComputerScience&Technology,BUPT,作为整数函数计算机的图灵机,预备知识:图灵机除了作为语言接受器外,还可看作整数到整数的函数计算机。传统方法把整数表示成一进制整数i0用字符串0i表示如果一个函数有k个自变量,i1,i2,ik,那么这些整数开始时被放在带上,并用1把他们分隔开。形如0i110i210i310ik如果图灵机停止(不论是否在一个接受状态上)且带上为0m,则f(i1,i2,ik)=mf是被图灵机计算的k元函数如果f(i1,i2,ik)对所有i1,i2,ik有定义,那么称f是一个全递归函数。全递归函数对应于递归语言,因为它总是被能停下来的图灵机所计算。所有常用的整数算术函数都是全递归函数。,15,SchoolofComputerScience&Technology,BUPT,例3:设计图灵机求真减法,思路:1.用空白符B代替带上的最左端的02右移至紧跟1后的0,将其改为13左移找到B,将B之后的0改为B4重复上述过程如果(1)右移找0时,遇到B,意味着mnBBB0m-(n+1)1111n+1n个将后面n+1个1变为B,将左侧最后一个B变0,形如BBB00m-(n+1)BBBn个n+1个这时,带上留下m-n个0,即结果为m-n,初始带0m10n,16,SchoolofComputerScience&Technology,BUPT,求真减法(续),(2)M左移找不到0,意味着nm,形如BBB111100m个m个n-m个此时,用B替换所有剩余的1和0,17,SchoolofComputerScience&Technology,BUPT,例4:L=0mm=2n,n0,设计思路:对输入串w1.从左到右扫描带,隔一个消一个0;2若带上只剩唯一一个0,接受;3若带上不止一个0,且个数为奇数,拒绝;4让读写头返回带的最左端;5.转第一步。,18,SchoolofComputerScience&Technology,BUPT,识别L=0mm=2n,n0的图灵机,19,SchoolofComputerScience&Technology,BUPT,课堂练习,设计一个状态数不超过3的图灵机,它能够接受语言L=a(a+b)*,若假定T=a,b,两个状态的图灵机能否接受该语言?,20,SchoolofComputerScience&Technology,BUPT,5.2图灵机的构造技术,在设计图灵机的过程中,写出函数很麻烦,为了构造复杂的图灵机,需探讨图灵机的若干构造技术,并引入一些新的概念和工具。目的:设计时方便,但这些构造技术并未增加图灵机的功能。,21,SchoolofComputerScience&Technology,BUPT,5.2.1.利用带存储区的状态(storageinthestate),此类图灵机M=(Q,q0,B,F)中,状态中可以包含一个具有有限个取值的存储单元,即状态集合为Q=ST=q,a|qSaT,其中qS通常表示控制状态,而aT通常表示数据元素.一般情况下,有限控制器内允许存储n个字符,即状态的第2个元素可存储n个字符。,22,SchoolofComputerScience&Technology,BUPT,例:设计一个图灵机,读写头将扫视第一个字符存入有限控制器内,然后扫视整个带,若找不到与第一个相同的字符,则M接受该字符串,否则不接受。构造M=(Q,a,b,a,b,B,q0,B,F)其中Q=q0,q1a,b,B=q0,a,q0,b,q0,Bq1,aq1,bq1,B初态q0,B终态F=q1,B函数:(q0,B,a)=(q1,a,a,R)(q0,B,b)=(q1,b,b,R)存第一个字符(q1,a,b)=(q1,a,b,R)(q1,b,a)=(q1,b,a,R)后面符号与第一个不等,继续右移(q1,a,B)=(q1,B,B,L)(q1,b,B)=(q1,B,B,L)进入终态q1,B(q1,a,a)=(q1,b,b)=遇到相同符号,无定义M停机,不接受,23,SchoolofComputerScience&Technology,BUPT,5.2.2多道(multipletracks)图灵机,把图灵机的输入带分成两层或多层,这样,原来的每一单元变成了上下两个或多个单元。对含有n层的输入带来说,读写头一次可同时读出并改写n个单元的字符,这样的图灵机称为n道机。,24,SchoolofComputerScience&Technology,BUPT,例:多道图灵机,例:用三道机,检查某个数n(n2)是否为素数。(书p196)思路:将被检查的数n以二进制形式写在输入带的第一道上,数的两端分别用¥和定界允许的输入符号为¥,B,B,0,B,B,1,B,B,B,B分别代表1,2,3带上的内容。检查方法:在第二道上写下一个二进制数2把第一道上的数复制到第三道上将第三道上的数减去第二道上的数,余数留在第三道上若余数为0,被检查的数不是素数若余数不为0,将第二道数加1,将第一道数复制到第三道,重复上述1,2,3,4过程当一,二道数相等时,该数时素数。,25,SchoolofComputerScience&Technology,BUPT,5.2.3核对符,当用图灵机识别语言时,如果语言中存在有重复性或可逆性等类型的句子时,为了判定某个字符串是否属于语句中的句子,可以使用一个核对符,以此增加图灵机的灵活性。考虑用一个双道机,在第二道上使用核对符“”,在第一道上放要被检查的字符串,当字符串中某个字符一旦被核对以后,可以在第二道上对应位置写上核对符“”。,26,SchoolofComputerScience&Technology,BUPT,例:核对符,例:设计一个图灵机M,能够识别语言wtwwa,b*思路:以t为分界符,一个一个比较。解:构造M=(Q,T,q0,B,F)其中Q=qi,ci=1,2,9,c=a,b或B状态第二元素可存储一个字符。T=c,Bc=a,b或t两道与一道不同的表示法c,Yc=a,b,t或B,Y=B或q0=q1,B,F=q9,B空白符B在二道机下表示为B,B,27,SchoolofComputerScience&Technology,BUPT,例:核对符,28,SchoolofComputerScience&Technology,BUPT,核对符例:abtab的分析过程,q1,Babtabaq2,abtababq2,atababtq3,aababq4,Btabaq5,Bbtabq6,Babtabaq1,Bbtababq2,btababtq3,bababtaq3,bbabtq4,Babaq5,Bbtababq7,Btababtq8,Bababtaq8,Bb,29,SchoolofComputerScience&Technology,BUPT,5.2.4移位,可以让图灵机具备移位的功能,即对输入带上的字符进行移位操作。当需要在输入带上留出一部分空间时,可将输入带上的非空白符右移若干单元。假设需要输入带上的非空白字符右移n个单元,则可让控制器状态的第二个元素具有存储n单元的功能(n是有限数),30,SchoolofComputerScience&Technology,BUPT,例:构造图灵机M,要求它将带上非空白符向移动两个单元,原带为abcdB,移后为zzabcdB设M=(Q,T,q0,B,F);Q=q,D1,D2q=q0,q1,且D1,D2,Dn初始:q0,B,B,终态q1,B,B定义:(q0,B,B,D1)=(q0,B,D1,Z,R)(q0,B,D1,D2)=(q0,D1,D2,Z,R)(q0,D1,D2,D3)=(q0,D2,D3,D1,R)(q0,Dn-1,Dn,B)=(q0,Dn,B,Dn-1,R)(q0,Dn,B,B)=(q1,B,B,Dn,L)对DB,Z:(q1,B,B,D)=(q1,B,B,D,L)回到输入点,31,SchoolofComputerScience&Technology,BUPT,5.2.5子程序(subroutines)的设计,左上图的图灵机表示子程序copy,右上图的图灵机表示可以调用copy的主程序,完成两个正整数的乘法.初始时,带上的符号串形如0m10n1,而结束时,带上的符号串变为0mn.,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!