形式语言与自动机理论蒋宗礼参考答案.docx
《形式语言与自动机理论蒋宗礼参考答案.docx》由会员分享,可在线阅读,更多相关《形式语言与自动机理论蒋宗礼参考答案.docx(18页珍藏版)》请在冰豆网上搜索。
形式语言与自动机理论蒋宗礼参考答案
2.1回答下面的问题:
(周期律02282067)
(1)在文法中,终极符号和非终极符号各起什么作用?
/终结符号是一个文法所产生的语言中句子的中出现的字符,他决上了一个文法的产生语言中字符的范围。
/非终结符号又叫做一个语法变量,它表示一个语法范畴,文法中每一个产生式的左部至少要还有一个非终结符号,(二,三型文法要求更严,只允许左部为一个非终结符号)他是推导或归约的核心。
(2)文法的语法范畴有什么意义?
开始符号所对应的语法范畴有什么特殊意义?
/文法的非终结符号A所对应的语法范畴代表着一个集合L(A),此集合由文法产生式中关于A的产生式推导实现的
/开始符号所对应的语法范畴则为文法G=(V,T,P,S}所产生的语言L(G)
*
={vvlwe厂且S=►w}
(3)在文法中,除了的变量可以对应一个终极符号行的集合外,按照类似的对应方法,一个字符串也可以对应一个终极符号行集合,这个集合表达什么意义?
/字符串对应的终极符号行集合表示这个字符串所能推导到的终极字符串集合,为某个句型的语言。
(4)文法中的归约和推导有什么不同?
/推导:
文法G={V,T,P,S},如果则称gd在G中
推导岀了汐5。
/归约:
文法G={V,T,P,S},如果则称汐5在G中归约到*7》。
/这他们的左义,我个人理解两个槪念从不同角度看待文法中的产生式,推导是自上而下(从产生式的左边到右边),而归约是自下而上(从产生式的右边到左边),体现到具体实际中,如编译中语法分析时语法树的建立,递归下降,LL
(1)等分析法采用自开始符号向下推导识別输入代码生成语法树,对应的LR
(1),LALR等分析法则是采用自输入代码(相当于文法中语言的句子)自底向上归约到开始符号建立语法树,各有优劣。
(5)为什么要求左义语言的字母表上的语言为一个非空有穷集合?
/菲空:
根据字母表幕的立义:
工°={£},£为字母表中0个字符组成的。
这样,当字母表中没有字符的情况,字母表也有一个元素,字母表为空就没有意义,而且,如果字母表为空,将无法定义其上的语言,使得理论体系不严密。
/有穷:
我们将语言抽象成形式语言的目的就是为了有穷的表示无限的语言,在此基础上我们才泄义了字母表和语言,如果字母表为无穷的,他就违背了我们研究问题的初衷,这也使得研究失去意义
(6)任意给泄一个字母表》,该字母表上的语言都具有有穷描述吗?
为什么?
/错误,因为一个字母表上有不可数无穷多个语言,而有穷表示只可能是可数无穷多个,又因为不可数无穷集和可数无穷集不是一一对应的,所以存在这样的语言,他不存在有穷表示。
(7>请总结一下,在构造文法时,可以从哪几个方面入手?
/我们可以将其类比于软件工程中的概念:
-)
/首先,也是最重要的一点,需求分析,我们需要知道需要构造的语言的特点,具体表现形式,以及一些需要注意的细节,通过一些特例提炼特点。
/其次,概要设计,将语言从具体中抽象到符号上,按照其特性将其划分类别。
/再次,详细设计,将每一部分抽象的成果具体化,将所有细右符号化
/再次,编码,将详细设计的结果用文法符号的语言表示出来
/最后,测试,找出边缘数据,特殊数据进行测试。
(8)按照文法的乔姆斯基体系,文法被分为几类?
各有什么样的特点?
分为四类:
/文法G={V,T,P,S},对应的L(G)则为0型文法或短语结果文法。
/如果对于Fa—卩已P,均有|0|二冋成立,则称G为1型文法或上下文有关文法,对应的L(G)称为1型语言。
/如果对于用a—卩已P、均有|0|纠闵成立,且aeV成立,则称G为2型文法,或上下文无关文法,对应的L(G)为2型语言。
/如果对于Pai卩已P,所有QT0均有:
At⑷或4twB成立,其中
A.BeV,vveT+,则称G为3型文法,或正则文法,对应的L(G)称3型语言。
(9)什么叫左线性文法?
什么叫右线性文法?
什么叫线性文法
/文法G={V,T,P,S},如果对于X/a—0已P,所有a—>均有:
Atw或4t
成立,A.BeV,x,weT\则称G为线性文法。
/文法G={V,T,P,S},如果对于,所有a—卩均有:
ATw或ATwB
成立,其中A,BeV,weT\则称G为右线性文法。
/文法G={V,T,P,S},如果对于—,所有a—卩均有:
ATw或AT
成立,其中A,BeV,weT\则称G为左线性文法。
(10)既然已经左义2-10中允许RL包含空语句£,那么泄理2-6和左理2-7还有什么意义?
/此为启义与左理的区别,泄义2-10是针对文法G是RG的情况下,泄义其产生式加上Sts后仍为RG,G的语言仍为RL,而泄理2-6和泄理2-7针对的前提条件是如果L为RL,他们都是通过泄义2-10证明得到的,可以在以后的推论中直接应用的。
**************************************************************************
2.设L={0"ln21},试构造满足要求的文法G
(1)G是RG
⑵G是CFG但不是RG.
⑶G是CSG但不是CFG.
(4)G是短语结构文法,但不是CSG.
解答:
1:
S-0I0S
2:
S-0I0SISS
3:
S-0I0SIAS
AS-SA
AS-0A
0A-S0
0AS-00
4:
S-0I0SIAS
AS-SAIABB
ABB-AS
AB-*Ale
****************************************$************##$***********************
3.设文法G的产生式集如下,试给出句子id+id*id的两个不同的推导和两个不同的归约
E-idlcl+EI-EIE+EIE-EIE*EIE^IE**EIFun(E)(褚颖娜02282072)
推导:
(1)E=>E+E=>E+E*E=>E+E*id=>E+id*id=>id+id*id
(2)E=>E*E=>E*id=>E+E*id=>E+id*id=>id+id*id
归约:
(1)id+id*id<=E+id*id<=E+E*id<=E+E*E<=E+E<=E
(2)id+id*id<=E+id*id<=E+E*id<=E*id<=E*E<=E
*************************************************************************14議冬注G前璨住茶研卡:
■胡前苟孝;;嬴竝岸勺室怎罰眛尚前敲謀羞灵罰碟同的归约(02282081刘秋雯)
bB-bb
CB-BC
bC-bc
cC—cc
解:
推导一:
S-aBCIaSBC
aB—ab
S=>aSBC
=>aaSBCBC
=>aaaBCBCBC
=>aaabCBCBC
=>aaabBCCBC=>aaabbCCBC=>aaabbCBCC=>aaabbBCCC=>aaabbbCCC=>aaabbbcCC=>aaabbbccc
推导二:
S=>aSBC
=>aaSBCBC=>aaaBCBCBC=>aaaBBCCBC=>aaaBBCBCC=>aaabbCBCC
=>aaabbBCCC=>aaabbbCCC=>aaabbbcCC=>aaabbbccc
归约一、归约二分别为推导一和推导二的逆过程
*******************************************************************************
(陈伟芳学号?
?
)
使用产生式S^aAa使用产生式ATSS使用产生式STbAb使用产生式ATSS使用产生式STc使用产生式STc使用产生式STbAb使用产生式ATSS使用产生式S->e使用产生式STc
5句子abeebbeeba的一个推导如下:
S=>aAa
=>aSSa
=>abAbSa
=>abSSbSa
=>abeSbSa
=>abeebSa
=>abeebbAba
=>abeebbSSba
=>abeebbeSba
=>abeebbeeba
不能给出abeebbeeb的归约,因为由文法G中产生式推出的句子只有三种情况:
头尾都是a,头尾都是b,或者只有一个c,而abeebbeeb上面三个条件都不符合,所以它不是文法G的一个句子,当然也就不能给出它的一个归约了。
***************************************$***************************************
2.6■冬去适£更/二空憑■缨忑再冷岂£■咚稱缺哼佟杏凹戢;
S-*aSalaaSaalaAa
A—bAlbbbAIbB
B—cBIcC
ccCIDD
D-dDId
解:
set(D)={d}+
set(C)={c2ndmlm>2n^O}
set(B)={c11d01Im22n^l}
set(A)={bpcndmI1,1)
set(S)={aqbpcndn,aqlp21n^Lq^l}
*******************************************************************************
7.给泄如下文法,请用自然语言描述它们泄义的语言。
(吴贤躍02282047)
(1)A-*aaA|aaB
B-*Bcc|D#cc
D-bbbD|#
解:
该语言由四部分组成:
第一部分是偶数个a(至少有两个),第二部分是3的倍数个b
(可以是0个),第三部分是两个“#”号,第四部分是偶数个c(至少有两个)。
(2)A-0B|IB|2B
B-OC|1C|2C
C-*0D|ID|2D|0|1|2
D-OB|IB|2B
解:
该语言的句子是字母表L={0.1,2}±所有长度为3的倍数的字符串,且非空。
(3)A-0B|IB|2B
B-0C|IB|2B
C-OE|ID|2D|0|1|2
D-0C|IB|2B
E-OE|ID|2D|0|1|2
解:
观察发现C和E所对应产生式右部是相同的。
所以将文法化简成如下的形式:
A-0B|1B|2B
B-OC|1B|2B
C_0C|ID|2D|0|1|2
D-0C|IB|2B
作出状态图如下:
可以看出从初始状态A到终态F,至少要经过A-B—C-F的过程,所以字符串的长度至少为3。
而且.到F只能经过C,如果到达C后走其它的路径,那么所经过的弧上
的字符串都是以0为结尾,也就是要回到C,最后一个字符一泄是0。
这样,该文法所确定的语言就是所有倒数第2个字符是0的串。
⑷S-aB|bA
A—a|aS|BAA
B-b|bS|ABB
解:
由于该文法所确泄的语言一时不易看出,可以先考虑简单的形式:
S-aB|bA
A-*a|aS
B-b|bS
不难看出,该文法所确立的语言为所有由ab和ba组成的串,且非空。
这些串有一个特点,就是a和b的个数相等。
然后,把产生式A-BAA和B-ABB加回到原来的文法中,并且可以把这两个产生式看成是在左部的符号前分别加上串BA和AB。
不妨把它们看成一个符号C和D。
这样原文法可以改造成如下形式:
S-aB|bA
A-*a|aS|CA
B_b|bS|DB
C-BA
D-AB
发现插入的C和D所导入的A和B是成对的,原文法所确定的语言可能就是字母表L={a.b}±所有含有相同个a和b的字符串,且非空。
从上而简单形式的文法中已经看到,它所确左的字符串比a和b个数相同的所有串少的只是多个a或b连续的情况。
而加上产生式A-BAA和B-ABB后则刚好满足。
例如:
由S推出aB后,在B前"插入”D(即AB),可由AB中的A推出a,就得到aaBB,如此类推,最终可得该文法所接受的语言为:
字母表S={a.b}±所有a和b个数相等的非空字符串。
***********************************************************************#
8.设艺={0.1},请给出W上的下列语言的文法
(1)所有以0开头的串
S-0AI0
A-0I1II0AI1A
(2)所有以0开头以1结尾的串
S-0A
A-1I0AI1A
(3)所有以11开头以11结尾的串
S-11AI11
A-11I0AI1A
(4)所有最多有一对连续的0或者最多有一对连续的1
1:
x中既没有成对的0,也没有成对的1
2:
x有一对连续的0
3:
x有一对连续的1
4:
x中既有一对连续的0,也有一对连续的1
S-AIBICID
A-elA'IA"
A'-0I01I01A'
远兮
吾将上下而求索•XXz
X、-1I10I10A"
B-B'OOB"
B'-llOlIlB'IOlB'
B"-1I1OI1B「OB"
C-C'IC
C‘fOllOIOC'llOC'
C"-OIOIIOC'IOIC"
D-EOOF11HIP11GOOK
E-lllE'lE'
E,-OIE'IE'
F-eI10I10F//F以1开头,以0结尾:
不含连续0和连续1
HfOIH'OIH'
H'—O1IO1H'
P-OIOP'IP'
P‘-10P110
G-elOllOlG//G以0开头,以1结尾:
不含连续0和连续1
K-1K1IK'
K'-10I10K'
(5)所有最多有一对连续的0而且最多有一对连续的1
1:
x中既没有成对的0,也没有成对的1
2:
x只有一对连续的0,没有连续的1
3:
y只有一对连续的1,没有连续的0
4:
x中既有一对连续的0,也有一对连续的1
S-AIBICID
A-£lA'IA"
A'-0I01I01A'
B-B'OOB"
B‘一eI1IO1IO1B,,I1B"
B‘‘-01101B"
B"-eI1I10I10B"
B"-10110B"
A"-1I10I10A"
〃B,是不含连续0,也不含连续1的串
//B-是不含连续0,也不含连续1的串
〃C是不含连续1,也不含连续0的串
//C-是不含连续1,也不含连续0的串
C"
-01101C'f
D-E00F11HIP11G00K
E-lllE'lE'
E‘一OIE'IE'
F-eI1OI1OF〃F以1开头,以0结尾:
不含连续0和连续1
H-OIITOIH'
H'-OIIOIH'
P-OIOP'IP'
P‘flOP'llO
G-eI01I01G//G以0开头,以1结尾:
不含连续0和连续1
K-1IK'1K
K'-10I10K'
(6)所有长度为偶数的串
S-O1I1OIOOI11IO1SI1OSIOOSI11S
(7)所有包含子串01011的串
S-X01011Y
X-£10X1IX
Y-eI0YI1Y
(8)所有含有3个连续0的串
S-XOOOY
X-£10X1IX
Y-£I0YI1Y
***********************“**************$$******導*****##$***********************2.9设》={d,b,c},,构造下列语言的文法。
⑴厶=(aHbnIn>0).
解答:
G严({S},{d,b},{ST"Sbl£},S)°
(2)L2={artb,nInjn>1)<>
解答:
G2=({S,A,8},{d,b},{Sf。
(3)厶3={anbnaliI«>1)o
解答:
G3=({S,A,B},{a,b},R,S)
PyS-*aABaSAB
BA-ABaB-*abbB-bb
bA-*ba
(4)厶4={a'''b,na^Injn,k>1)o
解答:
G4=({S,A),{d,Z?
},{STABA,A^aA\a,B^bB\b},S)。
(5)厶={awaI“wEweS"}<>
解答:
G5=({S,W},{“,b,c},{S->aWa,WTaW\bW\cW\a\b\c},S)。
(6)厶6={口亿『IX,W€Z+)o
解答:
G&=({S,W},{d",c},A,S)
P.S^aWa\bWb\cWc
W^aW\bW\cW\a\b\co
(7)厶={WIW=WT€S"}-
解答:
G7={{S,W},S,b,c},{StaWaIbWb\cWc\a\b\c},S}.
(8)Ljj={xx1wIx,weS*}o
解答:
Gs=({S,W,X},{“e,c},R,S)
R:
StXW
X^aXa\bXb\cXc\a\b\c
W^aW\bW\cW\a\b\co
*******************************************************************************第10题参见下题:
11、给定RG
Gm$Sj
厶厶■■■■
试分别构造满足下列要求的RGG,并证明你的结论。
⑴厶(G)=UG"(G2)
解:
不妨假设v,nv2=0,并且5^V,UV2,令G=({S}U%U%,T^TrAUgUE,s)其中,
P、=占—阴0訂亠且S]=>*证明:
(1)设xw厶(G),则S4x
若X=£,因为厶(GJ,£WL(GJ,所以£WZ,(GJ厶(G』)成立
若由产生式St^yS?
不妨设x=x,x2,其中x,e7^+,禹已厶(GJ
则S2x2,因为G的产生式包括出,所以x2eL(G2),可知x=xtx2eL(Gt)L(G2)
所以L(G)QL(Gt)L(G2)
(1)i5xeL(Gl)L(G2),不妨设x=其中禹已刁:
S】=>"斗,兀已=>"兀
£工却寸,由耳中{st+©,则S=<卓丄=>~%宀所以Xlx2eL(G)fL(G1)L(G2)qL(G)
Xi=£时,由出中{STa|S]Ta}S=>*x2
心=£时,由ST£,得S=>、X2所eL(G)
L(G,)L(G2)cL(G)
综上,l(g)=l(g,)l(g2)
⑵厶(G)=g)Ug)
解:
不妨假设%0勺=0,并且s$KU%,令g=({s}UKU%,AU£U片,s)其中,
片={S->a|S[->a或S?
->a}
证明:
(1)设xeL(GJUE(G2)不妨设"厶(GJ那么可知
由G构造方法可知,S=>\且xe厶(G)即L(G})\JL(G2)^L(G)
(2)设"厶(G)则S=/%,由出知,S、=>"x或S2=>*x
不妨设则xw厶(GJ,厶(Gjg厶(G)
同理L(G2)cL(G)则厶(GJUQG2)uE(G)所以L(G)=L(G1)U^(G2)
⑶厶(G)=L(GJ{a,b}UG2),其中a,b是两个不同的终极符号
解:
不妨假设V,DV2=0,并且令
G=({S}UKU%,T}{jT2f片U/U片,S)
其中,
出={scoaS2悶理其中co&T*且S]=>"©U{Stot}
证明:
(1)设xw厶(G)贝>J5=>'X由产生式STiyaS?
不妨=co}aco2则®e7f,S2n"co2则®e厶(GJ,co2eL(G2)
所以x=CDxaco2eL(Gl)[a,b]L(G2)同理①/?
©eL(Gl)[a,b]L(G2)可得UG)uE(Gj{“,b}厶(G?
)
(2)i^xeUG1){ayb}L(G2)
不妨设x=co}aco2其中©eL(GJ,a)2eL(G2)即S】=>*S2=>'a)2
由只中产生式S=>©aS?
=>
所以L(G^{a,h}L(G2)gL(G)
综上可得,L(G)=L(Gi){a,b}L(G2)
(4)厶(G)=UG)
解:
不妨假设取G=({S}U%TvP,S')
其中,
P={S-*a|Sl-*«GP1}U{S-*£}U{S-*«SISl-*aePl}
证明略。
⑸L(G)=L(G1)+
解:
不妨假设Eg%,瑕G=({S}U$,环P,S')
其中,
P={S-*a|Sl-aGPl}U{SfaSISl-aGP1}
证明略。
**************&$$**********************$******************************$*******
12.设文法G有如下产生式:
(吴贤躍02282047)
S-aB|bA
A—a|aS|bAA
B-*b|bS|aBB
证明L(G)={3I3中含有相同个数的a和b,且3非空}。
证:
观察发现A的产生式A-bAA中的bA可以用S来代替,同样B的产生式B-aBB中的aB也可以用S代替。
这样原来的文法可以化为如下的形式:
S-aB|bA
A-*a|aS|SA
B-*b|bS|SB
进一步地,可以把产生式A-aS中的S代换,把文法化为如下的形式:
S-aB|bA
A-*a|aaB|abA|SA
B-b|baB|bbA|SB
下而,我们就对字符串(・)的长度施归纳,同时证明以下三个命题成立。
(1)S=>*3辻f3中含有相同个数的a和b,且⑺非空。
(2)A=>*s辻f3中含有a的个数比b的个数恰好多一个。
(3)3iff<.)中含有a的个数比b的个数恰好少一个。
第一步,由于只有A和B可以直接推岀终结符,当s的长度为1时,直接用A推出a或直接用B推岀bo
直接用A推出a时,3中a的长度为1,b的长度为0,含有a的个数比b的个数恰好多一个。
直接用B推出b时,b的长度为1,a的长度为0,3中含有a的个数比b的个数恰好少一个。
这样,由S-aB|bA,知S推岀的最短串,分别是ab和bb,其长度是2,并且a和b的个数相等。
第二步,假设上面的三个命题对长度为x的串成立。
对S,x=2n(n>l):
对A和B,x=2n+l(n20)°我们可以看到,由A或B推出的串长度如果要变长的话,必须把A或B用其除A-a或B-b之外的产生式代替。
i).考虑代替A的情形。
若A用aaB代替,由假设B中a的个数比b的个数恰好少一个,则aaB中a的个数比b的个数恰好多一个。
若A用abA代替,由