ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:277.78KB ,
资源ID:4119900      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4119900.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(10学习指导与习题解答9.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

10学习指导与习题解答9.docx

1、10学习指导与习题解答9第九章 语言和有限状态机9.1 基本要求1. 掌握语法结构、语言、演绎、演绎树的概念,能识别语法结构的分类,能写出一个语法的Backus-Naur form。2. 掌握带有输出的有限状态机的定义,能够使用状态图和状态表表示带有输出的有限状态机。3. 会求串联、kleene闭包,掌握没有输出的有限状态机(有限状态自动机)的概念,了解非确定的有限状态机,知道能被一个非确定的有限状态自动机是别的语言也可以被一个确定的有限状态自动机识别。4. 掌握正则表达式和正则集合的概念,了解KLEENE定理。知道一个集合是由一个正则语法产生的当且仅当它是正则集合。了解其他种类的有限状态机。

2、5. 掌握Turing机的概念,知道Turing机如何识别一个符号串。9.2 主要解题方法9.2.1 语法结构与语言的关系1使用语法中所有的可能使用的产生式,将从S演绎出来的符号串求出来,或者将这样的符号串的规律找出来。这样就求出了一个语法所产生的语言。例9.2.1 设G是一个语法结构,字母表为V=S,A,a,b,终止符集合T=a,b,初始符号为S,产生式P=SaA,Sb,Aaa,这个语法的语言L(G)是什么?解:用产生式SaA可以从初始状态S演绎出aA,用产生式Sb可以演绎出b,用产生式Aaa从aA可以演绎出aaa,没有任何其它的词可以被演绎出来了,所以L(G)=b,aaa。例9.2.2 设

3、G是一个语法结构,字母表为V=S,0,1,终止符集合T=0,1,初始符号为S,产生式P=S11S,S0,这个语法的语言L(G)是什么?解:用产生式S0可以从初始状态S演绎出0,用产生式S11S可以演绎出11S,从11S可以演绎出110或者1111S,从1111S可以演绎出11110和111111S。在演绎的过程中,我们或者在S前加两个1,或者把S替换成0而结束演绎。所以L(G)=0,110,11110,1111110,这个集合中的符号串都是以偶数个1开头,然后由一个0结束。2给出一个语言,可以根据此语言的规律构造产生这个语言的语法结构。同一个语言可以有多个语法结构来产生。例9.2.3 给出一个

4、语法结构,可以产生集合0m1n|m和n是非负整数。解:我们将给出两个产生这个集合的语法G1,G2,这说明两个不同的语法可以产生同一个语言。语法G1的字母表是V=S,0,1,终止符集合T=0,1,产生式为S0S,SS1,和S。这个语法就能产生我们要求的集合,因为用第一个产生式m次就可以把m个0放在串的前面,用第二个产生式n次就可以把n个1放在串的后面。语法G2的字母表是V=S,A,0,1,终止符集合T=0,1,产生式为S0S,S1A,S1,A1A,A1和S。这个语法也能产生我们要求的集合。9.2.2 根据语法结构产生式的特点来判断语法结构的类型根据下面的表格就可以判断语法结构的类型。语法的类型类

5、型对于产生式的限制w1w20123没有任何限制w1的长度小于等于w2长度,或者w2=w1=A,A是非终止符。S,或者w1=A并且w2=aB或者w2=a,其中A,B是非终止符。例9.2.4 设语法是G=(V,T,S,P),其中,V=0,1,S,A,T=0,1,S是初始符,产生式为S0S1A;S;A1A;11A0。则这个语法是0型语法。例9.2.5 设语法是G=(V,T,S,P),其中V=0,1,2,S,A,B,T=0,1,2,初始状态是S,产生式是S0SAB,S,BAAB,0A01,1A11,1B12,2B22。则这个语法是上下文有关的语法(1型语法)。例9.2.6 设语法是G=(V,T,S,P

6、),其中,V=0,1,S,T=0,1,S是初始符,产生式为S0S1;S。则这个语法是上下文无关的语法(2型语法)。例9.2.7 设语法是G=(V,T,S,P),其中,V=S,A,0,1,终止符集合T=0,1,产生式为S0S,S1A,S1,A1A,A1和S。则这个语法是正则语法(3型语法)。9.2.3 求演绎树以及判断一个词是否属于一个语法产生的语言一个由上下文无关语法产生语言的演绎可以用一个有序的根树来表示,一个这样的演绎就对应一个有跟树。例9.2.8 给出书中例子中关于a hungry mathematician eats wildly的演绎的演绎树。判断一个符号串是否在一个由上下文无关语法

7、产生的语言中,我们有两种解决办法。第一种方法是自顶向下分析,从S开始,试图使用一系列的产生式来演绎出要判断的词;第二种方法称为自底向上的分析,在这种方法中,过程正好相反。例9.2.9 判断词cbab是否属于由语法G=(V,T,S,P)产生的语言,其中V=a,b,c,A,B,C,S,T=a,b,c,S是初始符号,产生式为SAB,ACa,BBa,BCb,Bb,Ccb,Cb解:第一种方法,因为只有一个产生式的左端是S,所以必须从SAB开始,接着使用唯一的一个左端是A的产生式,即ACa,得到SABCaB,因为cbab以字符cb开头,所以我们要使用产生式Ccb。这样我们得到SABCaBcbaB,最后使用

8、产生式Bb,得到SABCaBcbaBcbab。第二种方法,因为cbab是要被演绎的符号串,我们可以用产生式Ccb,有Cabcbab,然后我们使用产生式ACa,有AbCabcbab,使用产生式Bb,有ABAbCabcbab,最后,使用SAB得到了关于cbab的演绎:SABAbCabcbab。9.2.4 求2型语法的Backus-Naur formBackus-Naur form用来描述很多计算机语言的规则,包括Java。在2型语法的产生式中左边都有单个的一个非终止符。我们不把所有的产生式都分别列举出来,而是把左边有同样的非终止符的产生式结合成一个短语,在产生式中不再使用符号,而是使用:=,把所有

9、的非终止符放在括弧里,并且把产生式的所有右端都放在一个短语里,用一个竖线隔开。例9.2.10 给出十进制整数的产生式的Backus-Naur form。解:Backus-Naur form如下::=:=+|-:=|:=0|1|2|3|4|5|6|7|8|99.2.5 求有限状态机的输出及用状态图和状态表来表示带有输出的有限状态机根据转换函数,一个输入的符号串可以让初始状态经过一系列的状态的变化,当我们从左向右一个符号一个符号地读输入的符号串时,每个读入的符号都让状态机从一个状态变成另一个状态。因为每个转换都能产生一个输出,所以一个输入的符号串也能产生一个输出串。例9.2.11 对于下图所示的有

10、限状态机,如果输入是101011,请找出对应的输出是什么?解:输出是001000。连续状态和输出如下表所示。表输入1 0 1 0 1 1 -状态s0 s3 s1 s2 s3 s0 s3输出0 0 1 0 0 0 -例9.2.12 在许多电子器件中有一个很重要的元件,称为单位延迟器,它的作用是把输入延迟一个指定的时间输出。怎样构造一个有限状态机来把一个输入串延迟一个单位时间输出呢?即对于给定的二进制输入串x1x2xk,可以得到一个输出二进制串0 x1x2xk-1。解:我们把这个延迟器构造成有两个输入,即0和1,有一个初始状态s0,因为它要记住上一个输入是0还是1,所以还需要两个另外的状态s1,s

11、2,如果上一个输入是1,则它有状态s1,如果上一个输入是0,则它有状态s2,对于从s0出发的第一个转换所产生的输出是0,从s1出发的转换产生一个输出1,从s2出发的转换产生一个输出0,对于给定的二进制输入串x1x2xk,可以得到一个输出二进制串0 x1x2xk-1。状态图如下图所示,状态表如下表所示。状态表状态fg输入0 1输入0 1s0s1s2s2 s1s2 s1s2 s11 02 11 09.2.6 求集合A的kleene闭包例9.2.13 设A=0,11,B=1,10,110,请给出AB和BA。解:集合AB包含所有A中的串和B中的串的串联,因此,AB=01,010,0110,111,11

12、10,11110,集合BA包含所有B中的串和A中的串的串联,所以,BA=10,111,100,1011,1100,11011。例9.2.14 设A=1,00,请求出An其中n=0,1,2,3。解:由定义有:A0=,A1= A0 A= A=1,00,A2= A A =11,100,001,0000,A3= A2 A=111,1100,1001,10000,0011,00100,00001,000000。例9.2.15 设A=0,B=0,1,C=11,问A、B、C的kleene闭包分别是什么?解:A*=0n|n=0,1,2,设字母表V=0,1,则B*=V*。C*=12n|n=0,1,2,。9.2.

13、7 识别被有限状态自动机识别的语言一个符号串x说是被一个自动机M=(S,I,f,s0,F)识别或被接受,如果x可以让初始状态s0变成终止状态,即f(s0,x)是F中的一个状态的时候。被自动机M识别或接受的语言,记为L(M),是所有被M识别的符号串的集合。例9.2.16 请给出被下图所示的有限状态自动机M1,M2,M3识别的语言。解:M1只有一个终止状态s0,让s0变成它自己的符号串是含有零个或多个1的符号串,因此,L(M1)=1n|n=0,1,2,.M2只有一个终止状态s2,让s0变成s2的符号串是1和01。所以L(M2)=1,01。M3的终止状态是s0和s3,让s0变成它自己的符号串是,0,

14、00,000,即零个或多个0组成的符号串,让s0变成s3的符号串是零个或多个0,后跟10,再后跟任何符号串的符号串。所以L(M3)= 0n,0n10x|n=0,1,2,x是任何符号串。9.2.8 使用KLEENE定理构造识别正则集合的有限状态自动机要知道什么是正则表达式以及其所代表的正则集合。例9.2.17 下列正则表达式所代表的正则集合中都有哪些符号串?10*,(10)*,001,0(01)*,(0*1)*。解:由这些正则表达式代表的正则集合如表9.4.1所示。表9.4.1表达式符号串10*(10)*0010(01)*(0*1)*一个1后跟若干个0 (包括零个0)若干个10(包括空串)符号串

15、0或者符号串01以0开头的任意符号串不以0结尾的任意符号串例9.2.18 构造一个能识别正则集合1*01的非确定的有限状态自动机。解:我们先构造识别1*的自动机。首先构造识别1的自动机,然后根据KLEENE定理证明中构造MA*的方法来构造1*的自动机。接着构造识别01的自动机,先构造识别0和1的自动机,然后根据KLEENE定理证明中构造MAB的方法来构造01的自动机。最后根据KLEENE定理证明中构造MAB的方法来构造1*01的自动机。下图表示了这个构造过程。9.2.9 构造Turing机以及求出Turing机工作时的执行情况例9.2.19 下图(a)给出了一个带子,Turing机T用下面七个

16、五元组来定义,(s0,0,s0,0,R),(s0,1,s1,1,R),(s0,B,s3,B,R),(s1,0,s0,0,R),(s1,1,s2,0,L),(s1,B,s3,B,R),(s2,1,s3,0,R),问T停止的时候,最后的带子是什么样的?解:T开始的状态是s0,位置在带子的最左面的非空白符号上。第一步用五元组(s0,0,s0,0,R),状态是s0,读到的是0,在这个格子里写上0,然后右移一个格子。第二步用五元组(s0,1,s1,1,R),状态是s0,读到的是1,进入状态s1,在这个格子里写上1,然后右移一个格子。第三步用五元组(s1,0,s0,0,R),状态是s1,读到的是0,进入状

17、态s0,在这个格子里写上0,然后右移一个格子。第四步用五元组(s0,1,s1,1,R),状态是s0,读到的是1,进入状态s1,在这个格子里写上1,然后右移一个格子。第五步用五元组(s1,1,s2,0,L),状态是s1,读到的是1,进入状态s2,在这个格子里写上0,然后左移一个格子。第六步用五元组(s2,1,s2,0,R),状态是s2,读到的是1,进入状态s3,在这个格子里写上0,然后右移一个格子。最后,第七步Turing机停止,因为在Turing机的定义中没有以(s3,0)开头五元组。各个步骤如图9.5.2所示。这个Turing机把第一次遇到的连续的两个1改成0然后停止。例9.2.20 给出一

18、个Turing机使得它识别一个二进制符号串,这个串的第二个位置是1,即正则集合(01)1(01)*。解:我们要求的Turing机是这样的:从带子的最左边非空白符号开始,右移一位,看第二个符号是否为1,如果第二个符号为1,则进入终止状态,如果第二个符号不是1,则它不停或者停在非终止状态。为了构造这个Turing机,我们应该有五元组(s0,0,s1,0,R)和(s0,1,s1,1,R),这样Turing机就可以读过第一个字符,然后进入状态s1,然后还应该有五元组(s1,0,s2,0,R)和(s1,1,s3,1,R),如果读入的第二个字符是0,则Turing机进入状态s2,如果读入的是1,则它进入状

19、态s3。因为我们不能识别第二位是0的符号串,所以s2不能是终止状态,而s3是终止状态。所以我们还要有五元组(s2,0,s2,0,R)。因为我们还不能识别空串和只有一位的串,所以我们还要包括五元组(s0,B,s2,0,R)和(s1,B,s2,0,R)。包含上面七个五元组的Turing机T停止在终止状态s3上当且仅当二进制符号串至少包含两位且第二位是1。如果这个符号串不足两位或者第二位不是1,则T停止在状态s2。9.3 第九章习题解答9.3.1习题9.1解答1. 设语法G=(V,T,S,P),初始符为sentence,终止符集合为T=the,sleepy,happy,tortoise,hare,p

20、asses,runs,quickly,slowly,非终止符的集合N=sentence,noun phrase,transitive verb phrase,intransitive verb phrase,article,adjective,noun,transitive verb,intransitive verb,adverb,产生式为:sentencenoun phrase transitive verb phrase noun phrasesentencenoun phrase intransitive verb phrase noun phrasearticle adjective

21、 nounnoun phrasearticle nountransitive verb phrasetransitive verbintransitive verb phraseintransitive verb adverbintransitive verb phraseintransitive verbarticletheadjectivesleepyadjectivehappy nountortoisenounharetransitive verbpassesintransitive verbrunsadverbquicklyadverbslowly证明下列句子是有效的句子:(1) th

22、e happy hare runs.(2)the sleepy tortoise runs quickly.(3)the tortoise passes the hare.(4)the sleepy hare passes the happy tortoise.解:产生有效句子的过程如下:(1)sentencenoun phrase intransitive verb phrasearticle adjective noun intransitive verbthe happy hare runs (2)sentencenoun phrase intransitive verb phrasea

23、rticle adjective noun intransitive verb adverbthe sleepy tortoise runs quickly(3)sentence noun phrase transitive verb phrase noun phrase article noun transitive verb article noun the tortoise passes the hare(4)sentence noun phrase transitive verb phrase noun phrase article adjective noun transitive

24、verb article adjective noun the sleepy hare passes the happy tortoise2. 语法G见1题。除了1题中给出的句子,请再给出5个有效的句子。解:the sleepy hare runs the happy tortoise runs quickly the sleepy tortoise runs slowly the hare passes the tortoise the sleepy hare passes the tortoise3. 语法G见1题。证明:句子the hare runs the sleepy tortois

25、e不是有效的。解:因为runs是intransitive verb所以只能使用产生式sentencenoun phrase intransitive verb phrase,从而使得runs后面不会出现noun phrase,所以后面不可能出现the sleepy tortoise.4. 设V=S,A,B,a,b,T=a,b,如果产生式如下,请分别找出对应的语言。(1).SAB,Aab,Bbb。(2). SAB,SaA,Aa,Bba。(3). SAB,SAA,AaB,Aab,Bb。(4). SAA,SB,AaaA,Aaa,BbB,Bb。(5). SAB,AaAb,BbBa,A,B。解:(1)L

26、(G)=abbb (2)L(G)=aba,aaba,aaaba,aaba (3)L(G)=abb,abab (4)L(G)=aaaa,aaaaaa,.,b,bb,bbb,bbbb,从4个a开始偶数个a,以及n个b,其中n0。 (5)L(G)=abba,aabbba,aabbbbaa,.,n个a后跟n个b,在后跟m个b以及m个a,其中, m,n05. 说明例9.1.5中给出的语法产生的集合是0n1n|n=0,1,2。略。6. 用例9.1.5中给出的语法构造0313的演绎。解:S0S100S11000S1110001117. 构造能产生下列集合的语法结构:(1). 012n|n=0,1,2。解:G

27、=(V,T,S,P),V=S,A,0,1,T=0,1,S是初始符,P=S0A,A,A11A.(2). 0n12n|n=0,1,2。解:G=(V,T,S,P),V=S,0,1,T=0,1,S是初始符,P= S,S0A11,A,A0A11.(3). 0n1m0n |n,m=0,1,2.解:G=(V,T,S,P),V=S,A,B,0,1,T=0,1,S是初始符,P= S,S0A0,A0A0,A1B,A,B1B, B.8. 构造习题1中句子的演绎树。(1) 解: (2)(3)(4)9. a).如果产生式的Backus-Naur form如下,那么语法中的产生式是什么? :=()|+|*| :=x|y

28、b).给出这个语法中(x*y)+x的演绎树。解:(a)产生式为:表达式表达式表达式表达式+表达式表达式表达式*表达式表达式变量变量x变量y表达式(b)9.3.2习题9.2解答1. 画出下面状态表所代表的有限状态机的状态图。状态fg输入0 1输入0 1s0s1s2s3s1 s0s2 s0 s0 s3s1 s20 01 11 11 0状态fg输入0 1输入0 1s0s1s2s1 s0s0 s2s1 s10 10 10 0状态fg输入0 1输入0 1s0s1s2s3s4s0 s4s0 s3s0 s2s1 s1s1 s01 10 11 02 11 0解:状态图分别为:2. 对于例9.2.2中给定的有限

29、状态机,确定在下列输入的情况下的输出。.010*解:a). 1100 b).00110110 c).111111111113. 构造一个有限状态机,它把输入延迟2个字节,输出的头两位是00。解:4. 构造一个密码锁的有限状态机,它有从1到40的数字,当输入是10右,8 两次左,37右的时候,它就被打开。输入是一个三元组。解: 密码锁的状态表状态下一个状态输出输入(10,右,1) (8,左,2) (37,右,1) 其它输入 输入(10,右,1) (8,左,2) (37,右,1) 其它输入s0s1s2s3s4s1 s4 s4 s4 s4 s2 s4 s4 s4 s4 s3 s4 s3 s3 s3 s3 s4 s4 s4 s4 n n n n n n n n n n y ny y y yn n n n5. 构造一个收费机的有限状态机,它可以接收5分,10分,25分的硬币,只要投入的硬币一共是25分或25分以上,它的门就打开,但不找零钱,超出25分的部分也不留给下一个司机。解:状

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1