第6789章作业及参考答案.docx
《第6789章作业及参考答案.docx》由会员分享,可在线阅读,更多相关《第6789章作业及参考答案.docx(20页珍藏版)》请在冰豆网上搜索。
第6789章作业及参考答案
第6789章作业及参考答案
第6章P231:
1、构造产生下列语言的CFG
(2){1n02m1n|n,m≥1}
解:
需保证1的个数相等且0的个数为偶数
S1S1|1A1
A00A|00
(4)含有相同个数的0和1的所有0、1串
S0AS|1BS|ε
A1|0AA
B0|1BB
错解1:
S10S|01S|10|01|ε
错解2:
S1S0|0S1|1A0|0A1,A10|01|ε(推不出0110)
错解3:
S→10S|1S0|S10|01S|0S1|S01|ε(推不出00111100)
讨论:
不能限制0和1必须在同一次推导中都出现
15、构造与下列文法(原题中去ε产生式后的文法)等价的CNF
S→a|b|aB|aBB|bA|bAA
B→aa|aB|Ba|aBa
A→bb|bbA
解:
第一步
S→a|b|BaB|BaBB|BbA|BbAA
B→BaBa|BaB|BBa|BaBBa
A→BbBb|BbBbA
Ba→a
Bb→b
第二步
S→a|b|BaB|BaB1|BbA|BbA1
B→BaBa|BaB|BBa|BaB2
A→BbBb|BbB3
Ba→a
Bb→b
B1→BB
A1→AA
B2→BBa
B3→BbA
讨论:
这种题需要将步骤写清,意义在于机械化这种事情是我们的目标,你不必加入太多自己的智慧.
Ba和Ba的区别?
第7章P257:
1、构造识别下列语言的PDA
(2)L={1n02m1n|n,m≥1}
要求
●用两种方法做
●用七元组表示
●用推广的状态转换图表示
解法1:
先构造产生该语言的GNF文法,再由文法推导的启示或依定理7-3的构造方法,设计出PDA
构造出产生该语言的CFG
S→1S1|1B1
B→00B|00
得到对应的GNF:
S→1SA|1BA
A→1
B→0C|0CB
C→0
构造PDAM1=({q},{0,1},{S,A,B,C},δ1,q,S,Φ)
其中δ1为:
δ1(q,1,S)={(q,SA),(q,BA)}
δ1(q,1,A)={(q,ε)}
δ1(q,0,B)={(q,C),(q,CB)}
δ1(q,0,C)={(q,ε)}
有N(M1)={1n02m1n|n,m≥1}
用推广的状态转换图如右所示:
提示,还可以仿照书中例题,加入终止状态qf及初始栈符号Z,使
N(M1)=L(M1)={1n02m1n|n,m≥1},注意:
如果要这样做,请加适当的说明
解法1拓展(2005级崔卫华的想法):
问能否把GNF中A→a中的a用作00
思考:
崔同学实际是想设计接受{1nam1n|n,m≥1}的PDA以简化,但又没有底气
这种想法很大胆(褒义的"大胆")
也是可行的.
过程是:
先设计PDA接受L={1nam1n|n,m≥1}这儿∑={1,a}
构造代换f:
f
(1)=1,f(a)=00,则f(L)就是我们要的∆={1,0}上的语言,PDA随之而定
只是未向同学们介绍如何利用代换设计PDA
解法2之一:
可以将PDA的工作分为3个阶段:
(1)接受1并记载的阶段;
(2)接受偶数个0的阶段;
(3)匹配1的阶段
设q0为开始状态,q1为接受1并记载的阶段,Z0为初始栈符号
δ2(q0,1,Z0)={(q1,AZ0)}
δ2(q1,1,A)={(q1,AA)}
q1状态下读入0将进入接受0的状态q2
δ2(q1,0,A)={(q2,BA)}
为了接受偶数个0,可设q3状态用于接受第2个0,这时只要将进入q2状态时压入的B出栈即可,q3状态下读入0的情形同q1状态下读入0时的情形
δ2(q2,0,B)={(q3,ε)}
δ2(q3,0,A)={(q2,BA)}
在q3状态下读入1且栈顶是A时,进入对1的匹配阶段
δ2(q3,1,A)={(q4,ε)}
q3状态下继续进入1和A的匹配
δ2(q4,1,A)={(q4,ε)}
正确的匹配应是q3状态下读完所有的符号,且栈中只余Z0
δ2(q4,ε,Z0)={(q5,ε)}
综上,设计的PDA为:
M2=({q0,q1,q2,q3,q4,q5},{0,1},{A,B,Z0},δ2,q0,Z0,{q5})
有L(M2)=N(M2)=L
用推广的状态转换图如下所示:
解法2之二:
可以将PDA的工作分为3个阶段:
(1)接受1并记载的阶段;
(2)接受偶数个0的阶段;
(3)匹配1的阶段
设q0为开始状态,q1为接受1并记载的阶段,Z0为初始栈符号
δ2(q0,1,Z0)={(q1,AZ0)}
δ2(q1,1,A)={(q1,AA)}
q1状态下读入0将进入接受0的状态q2,用栈符号B记忆
δ2(q1,0,A)={(q2,BA)}
q2状态读入0且栈顶为B,这时一定是第偶数个0,B被匹配,B出栈
δ2(q2,0,B)={(q2,ε)}
q2状态读入0且栈顶为A,这时已经出现过偶数个0,这个零为第奇数个0,将B压栈
δ2(q2,0,A)={(q2,BA)}
在q2状态下读入1且栈顶是A时,进入对1的匹配阶段
δ2(q2,1,A)={(q3,ε)}
q3状态下继续进入1和A的匹配
δ2(q3,1,A)={(q3,ε)}
正确的匹配应是q3状态下读完所有的符号,且栈中只余Z0
δ2(q3,ε,Z0)={(q4,ε)}
综上,设计的PDA为:
M2=({q0,q1,q2,q3,q4},{0,1},{A,B,Z0},δ2,q0,Z0,{q4})
有L(M2)=N(M2)=L
解法2之三(采纳2005级岳宝的思路,贺利坚改正并整理):
M2=({q0,q1,qf},{0,1},{A,B,Z0},δ2,q0,Z0,{qf})
在记忆阶段,用A记忆读入的0,B记忆读入的1,则有:
δ2(q0,1,Z0)={(q0,BZ0)}
δ2(q0,1,B)={(q0,BB)}
δ2(q0,0,B)={(q0,AB)}
δ2(q0,0,A)={(q0,AA)}
设计不确定的PDA,由记忆阶段转到匹配阶段:
δ2(q0,ε,A)={(q1,A)}
匹配阶段的工作,再匹配的0的个数与栈中A的个数必相等,即0必为偶数个:
δ2(q1,0,A)={(q1,ε)};
匹配阶段,再匹配的1的个数与栈中B的个数必相等:
δ2(q1,1,B)={(q1,ε)};
进入终态:
δ2(q1,ε,Z0)={(q2,ε)};
这样,有L(M2)=N(M2)=L
解法2之四(2005级孙磊提供,贺利坚加说明):
将L看作两部分,前面部分为1n0m,后面部分为0m1n
M2=({q0,q1,qf},{0,1},{A,B,Z0},δ2,q0,Z0,{qf})
其中:
q0:
处理句子的前半部分
q1:
处理句子的后半部分
qf:
终止状态
(1)在q0状态时先接受1并将B压入栈
δ2(q0,1,Z0)={(q0,BZ0)}
δ2(q0,1,B)={(q0,BB)}
(2)在q0状态栈顶为B时接受一个0,首先要将A压栈以记忆
δ2(q0,0,B)={(q0,AB)}
(3)在q0状态栈顶为A时接受一个0,可能是前半部分的0需要记忆,也可能是后半部分的0需要匹配
δ2(q0,0,A)={(q0,AA),(q1,ε)}
(注意不定义δ2(q0,1,A))
(4)在q1状态下对读入的0和1逐个地进行匹配
δ2(q1,0,A)={(q1,ε)}
δ2(q1,1,B)={(q1,ε)}
(5)当栈中只留Z0时,清栈且进入终止状态
δ2(q1,ε,Z0)={(qf,ε)}
这样,有L(M2)=N(M2)=L
解法2之四(2006级的“集体智慧”,贺利坚完善):
M2=({q0,q1,q2,qf},{0,1},{A,B1,B2,Z0},δ2,q0,Z0,{qf})
(1)q0状态:
在读入0之前,记载1的个数,每读入一个1,在栈中压入符号A
δ2(q0,1,Z0)={(q1,AZ0)}
δ2(q1,1,A)={(q1,AA)}
(2)在读到0后,0的个数为偶数个,第奇数个0,压入栈符号B1,第偶数个0时,用栈符号B2取代B1。
δ2(q1,0,A)={(q1,B1A)}
δ2(q1,0,B1)={(q1,B2)}
δ2(q1,0,B2)={(q1,B1)}
δ2(q1,1,B2)={(q2,ε)}
(3)在q2状态,匹配1
δ2(q2,1,A)={(q2,ε)}
δ2(q2,ε,Z0)={(qf,ε)}
有L(M2)=N(M2)=L
本题主要存在的问题:
(1)不写解题过程的说明,无法看清思路(考试中会强调一定要写过程)
(2)不写清接受方式:
以空栈方式接受或以终止状态接受或二者均可
(3)未画状态转移图(布置时有这一要求)
8、构造与下列文法等价的PDA
(1)S→aBB|bAA,B→aBB|aA|a,A→bBA|b
解:
(根据定理7-3证明中提供的构造方法完成)
有PDAM=({q},{a,b},{S,A,B},δ,q,S,Φ)
δ(q,a,S)={(q,BB)}
δ(q,b,S)={(q,AA)}
δ(q,a,B)={(q,BB),(q,A),(q,ε)}
δ(q,b,A)={(q,BA),(q,ε)}
从而N(M)=L(G)------一定要点出接受方式是以空栈方式接受
主要问题
(1)不按定理的方法构造:
PDAM=({p,q},{a,b},{S,A,B},δ,q,S,Φ)
!
学会机械化的构造方法
如果另起炉灶(鼓励这样做,唯有此才能前进,才能进步,这也是终极目标),但要先有前期工作.
不能突然而至,似有照猫画虎嫌疑,结果不猫不虎.
(2)按教材上的原题做:
S→aBB|bAA,B→aBB|aA|a,A→bBA|ε
有PDAM=({q},{a,b},{S,A,B},δ,q,S,Φ)
δ(q,a,S)={(q,BB)}
δ(q,b,S)={(q,AA)}
δ(q,a,B)={(q,BB),(q,A),(q,ε)}
δ(q,b,A)={(q,BA)}
δ(q,ε,A)={(q,ε)}
从而N(M)=L(G)
错误!
原因:
给出的CFG是GNF吗这能保证这一点,不能这么做.
按原题的正确做法是:
首先,ε∉L(G)
消除文法S→aBB|bAA,B→aBB|aA|a,A→bBA|ε中的空产生式,并转换为等价的GNF,有
S→aBB|bAA|bA|b,B→aBB|aA|a,A→bBA|bB
从而有PDAM=({q},{a,b},{S,A,B},δ,q,S,Φ)
δ(q,a,S)={(q,BB)}
δ(q,b,S)={(q,AA),(q,A),(q,ε)}
δ(q,a,B)={(q,BB),(q,A),(q,ε)}
δ(q,b,A)={(q,BA),(q,B)}
从而N(M)=L(G)
11、构造CFG,产生如下PDA用空栈接受的语言
(1)M=({q,p},{0,1},{A,B,C},δ,q,A,Φ)
δ(q,0,A)={(q,B),(q,BB)}
δ(q,1,A)={(q,C),(q,CC)}
δ(q,0,B)={(q,BB),(q,BBB),(p,ε)}
δ(q,1,B)={(q,CB),(q,CCB)}
δ(q,0,C)={(q,BC),(q,BBC)}
δ(q,1,C)={(q,CC),(q,CCC),(p,ε)}
δ(p,0,B)={(p,ε)}
δ(p,1,C)={(p,ε)}
解:
(根据定理7-4证明中提供的构造方法完成)
构造得CFGG=(V,{0,1},P,S),其中
V={S}∪{[pAp],[pBp],[pCp],[pAq],[pBq],[pCq],[qAp],[qBp],[qCp],[qAq],[qBq],[qCq]}
产生式集合P由以下产生式构成(约定符号pa,pb,pc∈{q,p}):
首先有:
S→[qAp]|[qAq]
由(q,B)∈δ(q,0,A)有[qApa]→0[qBpa],
因pa∈{q,p},展开有:
[qAp]→0[qBp]和[qAq]→0[qBq]
由(q,BB)∈δ(q,0,A)有[qApb]→0[qBpa][paBpb]
因pa,pb∈{q,p},展开有:
[qAp]→0[qBp][pBp],[qAq]→0[qBp][pBq],
[qAp]→0[qBq][qBp],[qAq]→0[qBq][qBq]
因pa∈{q,p}展开有[qAp]→0[qBp]和[qAq]→0[qBq]
由(q,C)∈δ(q,1,A)有[qApa]→1[qCpa],…….(以下同法展开)
由(q,CC)∈δ(q,1,A)有[qApb]→0[qCpa][paCpb]
由(q,BB)∈δ(q,0,B)有[qBpb]→0[qBpa][paBpb]
由(q,BBB)∈δ(q,0,B)有[qBpc]→0[qBpa][paBpb][pbBpc]
由(p,ε)∈δ(q,0,B)有[qBp]→0
由(q,CB)∈δ(q,1,B)有[qBpb]→1[qCpa][paBpb]
由(q,CCB)∈δ(q,1,B)有[qBpc]→1[qCpa][paCpb][pbBpc]
由(q,BC)∈δ(q,0,C)有[qCpb]→0[qBpa][paCpb]
由(q,BBC)∈δ(q,0,C)有[qCpc]→0[qBpa][paBpb][pbCpc]
由(q,CC)∈δ(q,1,C)有[qCpb]→1[qCpa][paCpb]
由(q,CCC)∈δ(q,1,C)有[qCpc]→1[qCpa][paCpb][pbCpc]
由(p,ε)∈δ(q,1,C)有[qCp]→1
由(p,ε)∈δ(p,0,B)有[pBp]→0
由(p,ε)∈δ(p,1,C)有[pCp]→1
可以对上面的CFG进行化简。
主要问题:
(1)有些同学看不懂问题:
要构造的是CFG
(2)要把五元组首先写出来
(3)我意想不到的错误
根据给定PDA,设计出相应的GNF:
A→0B|0BB|1C|1CC
B→0BB|0BBB|0|1CB|1CCB
C→0BC|0BBC|1CC|1CCC|1
(有些还在继续)则相应的CFG是:
A→0B|1C
B→0B|BB|1C|0
C→CB|1C|0BC|CC|1
(或者有些在这样继续,可能是在做补充题)构造与其等价的以终止状态接受的PDA是
M=(,,,,,,)……甚至M=(,,,,,,Φ)
补充题:
构造与11
(1)中PDA等价的以终止状态接受语言的PDAM’
11
(1)M=({q,p},{0,1},{A,B,C},δ,q,A,Φ)
δ(q,0,A)={(q,B),(q,BB)}
δ(q,1,A)={(q,C),(q,CC)}
δ(q,0,B)={(q,BB),(q,BBB),(p,ε)}
δ(q,1,B)={(q,CB),(q,CCB)}
δ(q,0,C)={(q,BC),(q,BBC)}
δ(q,1,C)={(q,CC),(q,CCC),(p,ε)}
δ(p,0,B)={(p,ε)}
δ(p,1,C)={(p,ε)}
解:
(根据定理7-4证明中提供的构造方法完成)
PDAM=({q,p},{0,1},{A,B,C},δ,q,A,Φ)
取PDAM’=({q,p,q02,qf},{0,1},{A,B,C,Z02},δ’,q02,Z02,{qf})
δ’的定义如下,
①M’进入M的开始状态:
δ’(q02,ε,Z02)={(q,AZ02)}
②M2完全模拟M1的移动:
对于∀(q,a,Z)∈{q,p}×{0,1,ε}×{A,B,C},δ’(q,a,Z)=δ(q,a,Z),即有
δ’(q,0,A)=δ(q,0,A)={(q,B),(q,BB)}
δ’(q,1,A)=δ(q,1,A)={(q,C),(q,CC)}
δ’(q,0,B)=δ(q,0,B)={(q,BB),(q,BBB),(p,ε)}
δ’(q,1,B)=δ(q,1,B)={(q,CB),(q,CCB)}
δ’(q,0,C)=δ(q,0,C)={(q,BC),(q,BBC)}
δ’(q,1,C)=δ(q,1,C)={(q,CC),(q,CCC),(p,ε)}
δ’(p,0,B)=δ(p,0,B)={(p,ε)}
δ’(p,1,C)=δ(p,1,C)={(p,ε)}
③M的栈已空时,Z02成为栈中唯一符号,M’进入终止状态,以终态接受,有
δ’(q,ε,Z02)={(qf,ε)}和
δ’(p,ε,Z02)={(qf,ε)}
则L(M’)=L(M)
存在的问题:
(1)不写解题说明;
(2)PDAM’=(,,,,,,Φ)
6、构造PDAM,使L(M)=N(M)={1n0n|n≥1}{1n02n|n≥1}
解:
(1)首先构造PDAM1,使L(M1)=N(M1)={1n0n|n≥1},有
M1=({q1,q1f},{0,1},{A,Z1},δ1,q1,Z1,{q1f})
其中δ1定义为:
δ1(q1,1,Z1)={(q1,AZ1)}
δ1(q1,1,A)={(q1,AA)}
δ1(q1,0,A)={(q1,ε)}
δ1(q1,ε,Z1)={(q1f,ε)}
(2)再构造PDAM2,使L(M2)=N(M2)={1n02n|n≥1},有
M2=({q2,q2f},{0,1},{B,Z2},δ2,q2,Z2,{q2f})
其中δ2定义为:
δ2(q2,1,Z2)={(q2,BBZ2)}
δ2(q2,1,B)={(q2,BBB)}
δ2(q2,0,B)={(q2,ε)}
δ2(q2,ε,Z2)={(q2f,ε)}
(3)在M1和M2基础上构造PDAM,使L(M)=N(M)={1n0n|n≥1}{1n02n|n≥1}
M=({q0,qf,q1,q1f,q2,q2f},{0,1},{A,B,Z1,Z2,Z0},δ,q0,Z0,{qf})
其中δ定义为:
在M开始工作时,转入M1开始工作,栈底保留
δ(q,ε,Z0)={(q1,Z1Z0)}
M完全模拟M1的工作
对∀(q,a,Z)∈{q1,q1f}⨯{0,1,ε}⨯{A,Z1},δ(q,a,Z)=δ1(q,a,Z)
在M1本身的栈空且进入终止状态后,进入M2工作,栈底仍然保留
δ(q1f,ε,Z0)={(q2,Z2Z0)}
M完全模拟M2的工作
对∀(q,a,Z)∈{q2,q2f}⨯{0,1,ε}⨯{B,Z2},δ(q,a,Z)=δ2(q,a,Z)
在M2本身的栈空且进入终止状态后,进入M的终止状态且清空栈
δ(q2f,ε,Z0)={(qf,ε)}
这样,L(M)=N(M)={1n0n|n≥1}{1n02n|n≥1}
若仅构造以空栈方式接受的PDA,可用解法2(根据2006级岳光同的思路整理)
产生{1n0n|n≥1}的文法是:
S1→1S1A|1A,A→0
产生{1n02n|n≥1}的文法是:
S2→1S2BB|1BB,B→0
设计PDAM1=({q1},{0,1},{S1A},δ1,q1,S1,{})
δ1(q1,1,S1)={(q1,S1A),(q1,A)}
δ1(q1,0,A)={(q1,ε)}
有:
N(M1)={1n0n|n≥1}
设计PDAM2=({q2},{0,1},{S2,A},δ2,q2,S2,{})
δ2(q2,1,S2)={(q2,S2BB),(q2,BB)}
δ2(q2,0,B)={(q2,ε)}
有:
N(M2)={1n02n|n≥1}
增加一个开始状态q0,增加一个初始栈符号S,开始时使M1工作,同时在栈中置入M2的栈底符号,当M1的栈空后,进入M2工作,构造的PDAM是:
M=({q0,q1,q2},{0,1},{S,S1,S2,A,B},δ,q0,S,{})
δ(q0,ε,S)={(q1,S1S2)
δ(q1,1,S1)={(q1,S1A),(q1,A)}
δ(q1,0,A)={(q1,ε)}
δ(q1,ε,S2)={(q2,S2)
δ(q2,1,S2)={(q2,S2BB),(q2,BB)}
δ(q2,0,B)={(q2,ε)}
有N(M)={1n0n|n≥1}{1n02n|n≥1}
补充题:
构造产生(识别)语言L的CFG
L={0n1n0m12m|n,m≥1}
解:
L(G)={0n1n0m12m|n,m≥1}={0n1n|n≥1}{0n12n|n≥1}
构造G1=({A},{0,1},{A→01|0A1},A),L(G1)={0n1n|n≥1}
构造G2=({B},{0,1},{B→011|0B11},A),L(G2)={0n12n|n≥1}
在G1和G2基础上可以构造出
G=({S,A,B},{0,1},{S→AB,A→01|0A1,B→011|0B11},S),
L(G)=L(G1)L(G2)
推荐:
对两个补充题,要有利用运算性质构造的意识
第9章P318
3、给出M处理4+3的过程
解:
输入4+3表示为00001000,则有
q000001000├0q20001000├00q2001000├000q201000├0000q21000├00000q2000
├000000