形式语言与自动机王柏杨娟编著课后习题答案.docx
《形式语言与自动机王柏杨娟编著课后习题答案.docx》由会员分享,可在线阅读,更多相关《形式语言与自动机王柏杨娟编著课后习题答案.docx(23页珍藏版)》请在冰豆网上搜索。
形式语言与自动机王柏杨娟编著课后习题答案
形式语言与自动机课后习题答案
第二章
4.找出右线性文法,能构成长度为1至5个字符11以字母为首的字符串。
答:
G={NXPZS}
其中N二{SABCD}T二{x,y}其中x曰所有字母}丫曰所有的字符}P如下:
S—xS—xAA—yA-*yB
B~yB—yCC—yC—yDD—y
6.构造上下文无关文法能够产生
L={3/3W{a,b}*且3中a的个数是b的两倍}
■
答:
G={N,T,P,S}
其中N珂S}T={a,b}P如下:
S-*aabS-*abaS-*baa
S-*aabSS-*aaSbS—aSabS—Saab
S-^abaSS-*abSaS—aSbaS—Saba
S-*baaSS-*baSaS—bSaaS—Sbaa
7.找出由下列各组生成式产生的语言(起始符为S)
(1)S-SaSS-b
(2)S-*aSbS—c
⑶/
(4)S—aS—aEE—aS
答:
(1)b(ab)n/n^O}或者L={(ba)nb/n>0}
(2)L={ancbn/n>0}
(3)L={a2n+1/n^0}
第三章
1.下列集合是否为正则集,若是正则集写出其正则式。
(1)含有偶数个a和奇数个b的{a,b}*上的字符串集合
(2)含有相同个数a和b的字符串集合
(3)<
■4.不含子串aba的{a,b}*上的字符串集合
答:
(1)是正则集,口动机如下
⑵不是正则集,用泵浦引理可以证明,具体见17题
(2)。
⑶是正则集
先看『为包含子串aba的{a,b}*上的字符串集合
显然这是正则集,可以写出表达式和画出自动机。
(略)则不包含子串aba的{a,b}*上的字符串集合L是1/的非。
根据正则集的性质,L也是正则集。
4.对下列文法的生成式,找出其正则式
(1)G=({S,A,B,C,D},{a,b,c,d},P,S),生成式P如下:
S~aAS—B
A-abSA~bB
B-bB-cC
C-DD-bB
D-d
(2)G=({S,A,B,C,D},{a,b,c,d},P,S),生成式P如下:
S~aAS—B
A-cCA-bB
B~bBB—a
C-DC-abB
D-d
答:
(1)由生成式得:
S=aA+B①
A二abS+bB②
!
B=b+cC③
C=D④
D二d+bB⑤
③④⑤式化简消去CD,得到B=b+c(d+bB)
即B二cbB+cd+b=>B=(cb)*(cd+b)⑥
将②⑥代入①
S=aabS+ab(cb)*(cd+b)+(cb)*(cd+b)=>S=(aab)*(ab+£)(cb)*(cd+b)
(2)由生成式得:
S=aA+B①
A=bB+cC②
B=a+bB③
C=D+abB④
D=dB⑤
由③得B=b*a⑥
将⑤⑥代入④C=d+abb*a=d+ab+a⑦
将⑥⑦代入②A=b*a+c(d+b+a)⑧
将⑥⑧代入①S=a(b+a+c(d+ab+a))+b*a
=ab+a+acd+acab+a+b*a
5.为下列正则集,构造右线性文法:
⑴{a,b}*
(2)以abb结尾的由a和b组成的所有字符串的集合
(3)以b为首后跟若干个a的字符串的集合
⑸含有两个相继a和两个相继b的由a和b组成的所有字符串集合
答:
(1)右线性文法G=({S},{a,b},P,S)
P:
S~aSS-bSS-£
(2)右线性文法G=(⑸,{a,b},P,S)
P:
S-*aSS-*bSS—abb
(3)此正则集为{ba*}
右线性文法G=({S,A},{a,b},P,S)
)
P:
S—bAA—aAA—£
(4)此正则集为{{a/b}*aa{a,b}*bb{a,b}*/{a,b}*bb{a,b}*aa{a,b}*}右线性文法G=({S,A,B,C},{a,b},P,S)
P:
S-^aS/bS/aaA/bbB
A—aA/bA/bbC
BfaB/bB/aaC
C-aC/bC/e
7.设正则集为a(ba)*
(1)构造右线性文法
(2){
O)找出
(1)中文法的有限口b动机
答:
(1)右线性文法G=({S,A},{a,b},P,S)
P:
S~aAA~bSA—£
(2)口动机如下:
9•对应图(a)(b)的状态转换图写出正则式。
(图略)
(1)由图可知qo二aqo+bqi+a+£
qi=aq2+bqiqo=aqo+bqi+a
=>qi=abqi+bqi+aaq0+aa
=(b+ab)qx+aaqo+aa
=(b+ab)*(aaqo+aa)
=>qo=aq0+b(b+ab)*(aaq0+aa)+a+£
=qo(a+b(b+ab)*aa)+b(b+ab)*aa+a+£
=(a+b(b+ab)*aa)*((b+ab)*aa+a+£)
)
=(a+b(b+ab)*aa)*
(4)q0=aq1+bq2+a+b
qi=aqo+bq2+b
qo=aqi+bqo+a
=>q1=aq0+baq1+bbq0+ba+b
=(ba)*(aq0+bbq0+ba+b)
=>q2=aaqo+abq2+bqo+ab+a
=(ab)*(aaq0+bq0+ab+a)
=>q0=a(ba)*(a+bb)q0+a(ba)*(ba+b)+b(ab)*(aa+b)q0+b(ab)*(ab+a)+a+b=[a(ba)*(a+bb)+b(ab)*(aa+b)]*(a(ba)*(ba+b)+b(ab)*(ab+a)+a+b)
10•设字母表T={a,b}z找岀接受下列语言的DFA:
(1)含有3个连续b的所有字符串集合
(2)以aa为首的所有字符串集合
(3)以aa结尾的所有字符串集合
答:
(1)M=({q0/qio.qojqj}),其中°如下:
a
b
q。
•
qo
qi
qi
qo
q2
q2
q。
q3
Qb
(2)M=({q0/qiq2JJa.b},o皿你}),其中。
如下:
a
b
qo
q:
G
qi
C〔2
G
Qz
qz
(3)M=({q0,qiq2}z{a,b},。
皿件}),其中。
如下:
a
b
qo
q:
qo
Qi
C12
q。
q2
C[2
q。
14构造DFAIVk等价于NFAM,NFAM如下:
(1)M=({q0/qiq^qsLfa^},o亦©}),其中。
如下:
0(q0,a)={q0/qi}。
(q0/b)={q0}
0(qi,a)={q2}o(qi/b)={q2}
o(q2,a)={q3}o(q2/b)=e
0(q3,a)={q3}o(q3/b)={q3}
(2)M=({qoqq"*屜b},o,qo,{qie}),其中。
如下:
o(q0,a)={qlzq2}o(q°,b)二{q」
o(qba)={q2}o(qlzb)={qizq2}
0(q2,a)={q3}o(q2,b)={q。
}
(
0(Q3,a)=ea(q3/b)={q。
}
答:
(1)DFA{a”b},o.(Qo]/{[qo/Qi/Q3]>[qo/h/b],[Qo;口丄心心]}
其中Ch^[qojzlqozqi],[qo,qi,q2L[qo^qaLtqo,q»qo^i,qj」qo,q2,qJ」qo’qs]}S满足
a
b
[qo]
(qo,qj
[Qo]
e
[qo,qi]
[Qo/Qi/Qz]
[qo,q2]
[qo,qi,q2]
[qo,qi,^2,^3]
[qo.qz]
[qo,q2]
[Qo,qi/Q3)
[qo]
[Qo/AdQ2/Q3]
[qo,qi,^2,^3]
[Q0/Q2/Q3]
[Qo,qi/Q3)
[qo,qi,^2,^3]
[q%”Q3]
[Qo,q2/Q3)
[Qo,qi/Q3)
[Qo.qJ
[qo,q3]
[Qo,qi/Q3)
[qo,qj]
(2)DFAM讦{CL{a,b},oD[q(J,{[q[q»q血诃“亠环心]}其中Qi二{[qo]」qi,q儿[qj/q』」qoqeHqsqJ/qd[qi.q^qjjq^qj}
S满足
a
b
[qo]
(qi/Qs]
[q』
[qg]
[Qj
[qo,q「q2]
g]
[Qj
[qg]
[q2]
[qj
[qo]
<
[qo,qi,q21
[Q1/Q2/Q3]
[Qo/Qi/Qz]
[qg]
[qg]
[qo,q「q2]
[qsl
e
[qo]
[qi,q2,q3)
•
[qm』
[qo,q「q2】
[qg]
[qj
[qol
15.15•对下面矩阵表示的e-NFA
£
a
1
b
c
p(起始状态)
{p}
{q}
{r}
q
{p}
{q}
1
{r}
r(终止状态)
{q}
{r}
4)
{p}
⑴给出该口动机接收的所有长度为3的串
(2)将此£-NFA转换为没有£的NFA
答:
(1)可被接受的的串共23个,分别为aac,abc,acc,bac,bbc,bcc,caczcbc,ccc,caa,cabzcba,ebb,cca,ccb,bba,aca,acbzbca,beb,bab,bbb,abb
■
(2)£-NFA:
M=({p,q,r},{a,b,c},o,p,ij其中。
如表格所示。
因为e-closure(p)=e
则设不含£的NFAIVk=({p,q,r},{a,b,c},oi,p,r)
0i(p,a)=°/(P,a)=£-closure(o(o[p,z),a))二{p}
oi(p,b)=o'(p’b)二£-closure(o(a,(p,e),b))二{p,q}
0i(p,c)=o/(p/c)=£-closure(a(o'(p,£),c))={pzq,r}
oi(q,a)=o/(q,a)=£-closure(o(o[q,£),a))={p,q}
0i(q,b)=o/(q,b)=e-closure(0(o,(q,£Lb))={p,q,r}
0i(q,c)=o/(q/c)=e-closure(0(oz(q,£),c))={p,qj}
oi(r,a)=o/(r/a)=e-closure(o(o#(rze),a))={p,q』}
¥
o!
(r,b)=Ohb)二£-closurefo(o"£),b))={pqr}
0i(r,c)=o'(r,c)二£-closure(o(a«e)/c))={p,q/r}
图示如下:
(r为终止状态)
abc
16.设NFAM=({q0/qi}/{a,b}/o,q0/{qi}),其中0如下:
0(qo,a)={qo,qi}°(q°,b)二{qj
°(q»a)=①0(q」)={q0/qj
构造相应的DFAM】,并进行化简
答:
构造一个相应的DFAMi={Qi,{a,b},oi,[q°],{[q[,[qo,qi]}其中Qi={[Qo]>[qj»[Qo/Qi]}
5满足
a
b
[qo]
(Qo,qi]
$
[qd
[qJ
巾
[qo,qj
[qo,qi]
(qo,qj
[qo,qi]
由于该DFA己是最简,故不用化简
17.使用泵浦引理,证明下列集合不是正则集:
(1)<
⑴由文法G的生成式S-aSbS/c产生的语言L(G)
(3){3/3W{a,b}*且3有相同个数的a和b}
(4){akca7k^l}
(5){33/3W{a,b}*}
证明:
(1)在L(G)中,a的个数与b的个数相等假设L(G)是正则集,对于足够大的k取3"伽比
GJ=3]G)qCi)2
因为|3。
|>0|3丄3。
|Wk存在3。
使G)1G)oiG)2eL
所以对于任意3。
只能取3o=annG(0,k)
则3132=ak"n(an)'(cb)kc在i不等于0时不属]'L
A
与假设矛盾。
则L(G)不是正则集
(2)假设该集合是正则集,对于足够大的k取3=a5k
令3=G>i3o32
因为|3。
|>0|3丄3。
|Wk存在%使(UWoigWL
所以对于任意3。
只能取o0=annG(O,k)
则G)1woiQ2=ak"n(an)ibk在i不等于0时a与b的个数不同,不属于该集合与假设矛盾。
则该集合不是正则集
(3)假设该集合是正则集,对于足够大的k取3=aSak
令3=3i3°32
【人I为|3°|>0|3丄3°|Wk存在3°使3丄3*32GL
A
所以对于任意3。
只能取30=annG(O,k)
则G)1G)0,G)2=ak-n(anjicak在j不等于0时C前后a的个数不同,不属于该集合与假设矛盾。
则该集合不是正则集
(4)假设该集合是正则集,对于足够大的k取0G)=aWb
令3Ci)=G)1a)0(i>2
因为I3。
|>0I3丄3。
|Wk存在3。
使(UWoigWL
所以对于任意3。
只能取o0=annG(O,k)
则w1G)oi
与假设矛盾。
则该集合不是正则集
18•构造米兰机和摩尔机
对T{a,b}*的字符串,如果输入以bab结尾,则输出1;如果输入以bba结尾,则输出2;否则输出3。
答:
米兰机:
说明状态qaa表示到这个状态时,输入的字符串是以aa结尾。
其他同理。
b/3
摩尔机,状态说明同米兰机。
▲
第四章
10.把下列文法变换为无£生成式、无单生成式和没有无用符号的等价文法:
S-*A1IA2,Al—A31A4,A2-*A4IAs,A3-*S|b|£,A4-*S|a.As—S|d|£解:
⑴由算法3,变换为无£生成式:
N'={S,A1,A2,A3,A4,A5}
Gx=({SDSZA】AAAA},{a,b,d},P-SJ,其中生成式P】如下:
Gi=({S4A,B},{a,b},P-SJ,其中生成式P.如下:
Si-e|ASB|AB,
S-ASB|AB,
A—aAS|aA|a,
B-SBS|SB|BS|aAS|aA|a|bb,
⑶由算法1和算法2,消除无用符号(此题没有无用符号);
⑷转化为等价的Chomsky范式的文法:
将SI-ASB变换为S~AC,C-SB,
将S-ASB变换为S-AC,
将A-aAS|aA变换为A-ED|EA,D-AS,E-a,
将B-SBS|aAS|aA|a|bbz变换为B-CS|ED|EA|FF,F-b,⑸由此得出符合题目要求的等价文法:
Gi=({SDS,A,B,C,D},{a,b},Pj,S’),其中生成式P】如下:
S1-eIACIABz
S-AC|AB,
A-ED|EA|az
B-CS|SB|BS|ED|EA|a|FF,
C-SB,
D-AS,
E—a”
15.将下列文法变换为等价的Greibach范式文法:
(1)S-DD|a,D-SS|b
解:
将非终结符排序为S,D,S为低位,D为高位,
(1)对于D-SS,用S-DD|a代入得D-DDS|aS|b,用引理变化为D-aS|b|aSD1|bD1zD?
-DS|DSD\
(2)将D生成式代入S生成式得S-aSD|bD|aSD'D|bD0|a,
(3)将D生成式代入D,生成式得
D‘-aSS|bS|aSD*S|bD*S|aSSD1|bSD*|aSD'SD1|bD*SD1z(
⑷由此得出等价的Greibach范式文法:
Gi=({S,D,D,},{a,b},Pj,S),其中生成式Pi如下:
SfaSDIbDIaSD'D|bD'D|a,
D-aS|b|aSD1|bD\
D‘-aSS|bS|aSD*S|bD'S|aSSD1|bSD*|aSD'SD*|bD*SD*・
(2)Ai〜Asb|A2a,A2—A^b|A2A2a|b,A3-^Aia|A3A3b|a解:
⑴转化为等价的Chomsky范式的文法:
AiA3A4IA2A5,
A2〜A2A4IA2A6Ib,
A3fA1A5IA3A7Ia,
A4—b,
A5—a,
%fA2A5/
A?
fR皿.
⑵转化为等价的Greibach范式的文法:
将非终结符排序为Ai,A2/A3/A4,A5,Ai为低位As为高位,
1对于A2-*AiA4,用Ai-A3A4IA2A5代入得A2-A3A4A4IA2A5A4IA2A6Ib.用引理变化为
AzfA3A4A41bIA3A4A4AJ1bA2zz
A/-A5A4A2'IAgAJIA5A4IA6/
2对于As-AiA5/用Ai-A3A4IA2A5代入得A3-A3A4A5IA2A5A5IA3A7Ia.a3生成式右边第一个字符仍是较低位的非终结符,将a2生成式代入a3生成式得
AmfA3A4AsIA3A4A4A5A5IbA5A5IA3A4A4A2'A5A5IbA2?
AsA5|A3A7|a,用引理变化为
Am〜bA5A5IbA2”A5A5IaIbA5A5A3"|bA2‘A5A5A3'|,
A/〜A4A5IA4A4A5A5IAaMA:
A5A5IA7IAaAsA,IA4A4A5A5A3'I人4£人2虫5人5人3‘I
3对于As〜A2A5,将A2生成式代入As生成式得
A6-A3A4A4A5IbA5IAsAaA^A/As|bAfAs,
A6生成式右边第一个字符仍是较低位的非终结符,将A3生成式代入A6生成式得
人6»bAsAsAaA^AsIbA?
A5A5A4A4A5|aA4A4A5|bAjAjAjA4A4A5jbA?
A5A5A3A4A4A5IaA3A4A4A5IbAsAsAdZKsjA?
A5|bA?
A5A5A4A4A2A5|aAaAaA?
A5|bAsAsA3,A4A4A2,A5|bA2,AsA5A3/A4A4A2,As||bA2”As|bAs,
4对于A?
-A3A4,将A3生成式代入A7生成式得
A7bA5A5A4IbAz'AsAsAa|aA4|bAsAsA/Aa|bAz^AsAsAs^a|aA3?
A4,
5将A〉A&生成式代入A/生成式得
K2〜I匕人5人5阳人亦5人2‘|bd:
A44444;\3虹4山5皿|
匕人5人5人3‘人山山5人2"IbAz'AsAsAs'AdAdAsAz"I8人3‘人4人4人5人2"I匕人5人5人4人小2"人5^2|
bA2/A5A5A4A4A2/A5A2,|3\bAsAsA/AaAaAfA5A2'|
匕人2"人5人5人3虫亦亦2虫5人2"|aA/A4A4A2'A5A2'|匕人2虫5人2‘|bA5A2"|adj|bA5A5A4A4A5IbA?
A5A5A4A4A5IaA4A4A5IbAsAsAsA4A4A5|bA?
A5A5A3A4A4A5|aA3,A4A4A5IbAsAsA^Az^s|bA2/A5A5A4A4A2/A5|aAa/WVAs|bA5A5A3,A4A4A2/A5|匕人2虫5人5人3虫亦亦2虫5|aA*44^4;A5\bA2#AsIbAs/
将£,A7生成式代入A,生成式得
A3aaAsIaA^A^As|aA4A2A5A5|aAsAj|aA4A5A5A3|aA4A2A5A5A3|bA5A5A4|bAz^sAsAaIaA4IbAsAsAs^|bA2/A5A5A3/A4|aA^Ad|bAsAsA^A,|bA2/A5A5A4A3/IaA4A3"IbAsAsAs'AdA3"IbA2"AsAsA3"A4A3"|aASAaA,,
⑶由此得出等价的Greibach范式文法:
Gi=({S,D,D'},{a,b},Pj,S),其中生成式Pi如下:
AifA3A4IA2A5,
A2->A3A4A4IbIA3A4A4A2/IbAA3bA5A5IbAz^sAsIa|bAsAsA3/|bA2/AsAsA3,|aA3*,
A4—b,
A5—a,
AefbAsAsAoAoAs|bA2?
AsAsA4A4As|qAaAaAs|bAsAsAs^AAoAs|匕人2‘人5人5人3虫山亦5|aA,氏aA山5|bAsAsAaAAAz^AsIbAz^sAsAdAaAz^As|As\
bA5A5A3/A4A4A2,A5|bAjAsAsA/AAAA|aA3/A4A4A2/A5|bA/A5|bA5/
A7"*bA5A5A4IbA/AsAsAaIaAa|bAsAsAs'Aa|bA2*AsAsA3fA4|aA3/A4/
Af-a;IbAsAs/UU^Aj|3/4443\aA4A4A5A2/|
bA5A5A3/A4A4A5A2/|IaA3/A4A4A5A2/|泳444皿足A/|
bA2/AsAsA4A4A2,A5A2,|aA4A4A2?
AsA2?
|bAsA5A3/A4A4A2,AsA2/|
匕人“皿工皿“九IaA3/A4A4A2,A5A2/|bA/AsA/|bA5A2#|aA4