编译原理第3章 习题解答

合集下载

编译原理第3章文法和语言

编译原理第3章文法和语言

第3章文法和语言第1题文法G=({A,B,S},{a,b,c},P,S)其中P为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。

答案:L(G[S])={abc}第2题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。

V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD....=>NDDDD...D=>D......D或者:允许0开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。

答案:G[S]:S->S+D|S-D|DD->0|1|2|3|4|5|6|7|8|9第4题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。

答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=>aaa..ab...bbbL(G[Z])={anbn|n>=1}第5题写一文法,使其语言是偶正整数的集合。

要求:(1)允许0打头;(2)不允许0打头。

答案:(1)允许0开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|0第6题已知文法G:<表达式>::=<项>|<表达式>+<项> <项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。

(5)i+(i+i)(6)i+i*i答案:(5)<表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)(6)<表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i<表达式><表达式>+<项><因子><表达式><表达式>+<项><因子>i<项><因子>i<项><因子>i()<表达式><表达式>+<项><项>*<因子><因子>i<项><因子>ii第7题证明下述文法G[〈表达式〉]是二义的。

编译原理(龙书)答案第三章

编译原理(龙书)答案第三章

3.3.2, 3.3.6, 3.3.7, 3.3.8, 3.3.9,3.6.3, 3.6.4, 3.6.53.7.1, 3.7.2, 3.7.33.8.1, 3.8.23.9.3《编译原理》(龙书)第三章答案3.3.2 描述下列正则表达式代表的语言。

a) a(a|b)*ab) ((ε|a)b*)*c) (a|b)*a(a|b)(a|b)d) a*ba*ba*ba*e) (aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)*)*答案(a)由a开头并结尾的由a和b构成的字符串(b)由a和b构成的字符串(c)倒数第三位为a的由a和b构成的字符串(d)仅含3个b的由a和b构成的字符串(e)含有偶数个a和偶数个b的由a和b构成的字符串注意:请准确描述语言的性质而不是列举满足正则表达式的串3.3.6 写出满足下列定义的字符a) The first ten letters in either upper or lower caseb) The lowercase consonantsc) The “digits” in a hexadecimal numberd) The characters that can appear at the end of a legitimate English sentence答案(a)a-jA-J(b)a-j(c)0-9a-f(d).?!3.3.7 写出匹配字符串“\ 的正则表达式答案:\”\\3.6.3 对于图3.29表示的NFA,列出aabb的所有路径。

这个NFA能否接受aabb? 答案:aabb的所有路径01223 00111 012000 00000 01222 00011 00123存在路径1223和0123所以能接受aabb3.6.4 对于图3.30表示的NFA,列出aabb的所有路径。

这个NFA能否接受aabb? 答案:01012301012120301230301212030303232030303212303030321212由于存在03210这样的环,所以这里有无数种路径存在路径终止于3,所以能接受aabb3.6.5 给出以下NFA的Transition Table(a) 图3.29(b) 图3.30(c) 图3.26答案:3.7.1 把下列NFA转化为DFA(a)图3.26(b)图3.29(c)图3.30答案:(a)(b)注意:以上答案并不唯一,等价即可3.7.2 用算法3.22模拟NFA(输入为aabb)(a)图3.29(b)图3.30答案:F={3} 所以返回yesF={3},所以返回yes3.7.3 用算法3.23和3.20把下列正则表达式转换为DFAa) (alb)*b) (a*lb* )*c) ((ela)b*)*d) (alb)*abb(alb)*答案:a) NFAb) NFAc) NFAd) NFA注意:这道题要求大家按照算法构造NFA和DFA,有些同学的NFA没有完全按照算法构造。

编译原理 第3章习题解答

编译原理 第3章习题解答

第三章习题参考解答3.1 构造自动机A,使得①②③当从左至右读入二进制数时,它能识别出读入的奇数;④它识别字母表{a, b}上的符号串,但符号串不能含两个相邻的a,也不含两个相邻的b;⑤它能接受字母表{0, 1}上的符号串,这些符号串由任意的1、0和随后的任意的11、00对组成。

⑥它能识别形式如±dd*⋅ d*E ±dd的实数,其中,d∈{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。

3.2 构造下列正规表达式的DFSA:① xy*∣yx*y∣xyx;② 00∣(01)*∣11;③ 01((10∣01)*(11∣00))*01;④ a(ab*∣ba*)*b。

3.3 消除图3.24所示自动机的空移。

bεq1q2q3aba,bqaq6q4q5abεεε图3.24 含空移的自动机3.4 将图3.25所示NDFSA确定化和最小化。

xyqq1q2q4q3xyxyx,yx图3.25 待确定化的NDFSA3.5 设e、e1、e2是字母表∑上的正规表达式,试证明① e∣e=e;② {{e}}={e};③ {e}=ε∣e{e};④ {e1 e2} e1= e1{e2 e1};⑤ {e1∣e2}={{e1}{e2}}={{e1}∣{e2}}。

3.6 构造下面文法G[Z]的自动机,指明该自动机是不是确定的,并写出它相应的语言: G[Z]:Z→A0A→A0∣Z1∣03.7 设NDFSA M=({x, y},{a, b},f, x, {y}), 其中,f(x, a)={x, y}, f(x, b)={y}, f(y, a)=∅, f(y, b)={x, y}。

试对此NDFSA确定化。

3.8 设文法G[〈单词〉]:〈单词〉→〈标识符〉∣〈无符号整数〉〈标识符〉→〈字母〉∣〈标识符〉〈字母〉∣〈标识符〉〈数字〉〈无符号整数〉→〈数字〉∣〈无符号整数〉〈数字〉〈字母〉→a∣b〈数字〉→1∣2试写出相应的有限自动机和状态图。

编译原理习题解答(第2-3章)_吴蓉

编译原理习题解答(第2-3章)_吴蓉

P39 12.试分别构造产生下列语言的文法: 试分别构造产生下列语言的文法: 试分别构造产生下列语言的文法 (1){ abna | n=0,1,2,3……} ) , , , (3){ aban | n≥1} ) (5){ anbmcp | n,m,p≥0} ) , , 解: (1)G={VN,VT,P,S},VN={S,A },VT= ) = , , , , {a,b}, , , P:S∷=aAa : ∷ 或 S∷=aB ∷ A∷=bA |ε B∷=bB | a ∷ ∷ (3)G={VN,VT,P,S},VN={S,A },VT= ) = , , , , {a,b}, , , P:S∷=abA : ∷ 或 S∷=Sa | aba ∷ A∷=aA | a ∷
P41 27. 给 出 一 个 产 生 下 列 语 言 L ( G ) = {W|W∈{a,b}*且W中含 的个数是 个数两倍的前 中含a的个数是 ∈ 且 中含 的个数是b个数两倍的前 后文无关文法。 后文无关文法。 解:文法G=({S, A, B}, {a, b}, P, S) 文法 P: S::=AAB|ABA|BAA|ε A::=aS B::=bS 或者 S::=Saab|aSab|aaSb|aabS|Saba|aSba|abSa|abaS|Sbaa |bSaa|baSa|baaS|ε 或者 S::=aaB|aBa|Baa|ε B::=SbS
1 0 S 0
A
0 Z 0
1
解题思路二: 写出其正规表达式 解题思路二 : 写出其正规表达式(0|10)*(10|0|1)【 如果仅有 【 (0|10)*的话推导不出 ,因为是连接关系,后面缺了 的话 的话推导不出1,因为是连接关系,后面缺了10的话 的话推导不出 就会以1结尾 同样的道理还要推导出0, 结尾, 就会以 结尾 , 同样的道理还要推导出 , 所以得到此正规 画出转换系统,然后根据转换系统来推导出文法。 式 】 , 画出转换系统 , 然后根据转换系统来推导出文法 。 也可以根据正规表达式直接写文法,例如正规表达式 (0|10)*(10|0|1)可以看成是 可以看成是a*b,推导出 可以看成是 ,推导出A::= (0|10)A|10|0|1, , 即A::= 0A|1B|10|0|1,其中 ,其中B::=0A,但是 此项不符合正规 ,但是10此项不符合正规 文 法 的 选 项 , 可 以 进 行 改 写 从 而 得 到 A::= 0A|1B|0|1 B::=0A|0。 。

编译原理第三章练习题答案

编译原理第三章练习题答案

编译原理第三章练习题答案一、选择题1. 在编译原理中,词法分析器的作用是什么?A. 将源代码转换为汇编代码B. 将源代码转换为中间代码C. 识别源代码中的词法单元D. 检查源代码的语法正确性答案:C2. 词法单元中,标识符和关键字的区别是什么?A. 标识符可以重定义,关键字不可以B. 标识符和关键字都是常量C. 标识符是用户自定义的,关键字是语言预定义的D. 标识符和关键字都是变量名答案:C3. 下列哪个不是词法分析器生成的属性?A. 行号B. 列号C. 词法单元的类型D. 词法单元的值答案:A4. 词法分析器通常使用哪种数据结构来存储词法单元?A. 栈B. 队列C. 链表D. 数组答案:C5. 词法分析器的实现方法有哪些?A. 手工编写正则表达式B. 使用词法分析器生成器C. 编写扫描程序D. 所有上述方法答案:D二、简答题1. 简述词法分析器的基本工作流程。

答案:词法分析器的基本工作流程包括:读取源代码字符,根据正则表达式匹配词法单元,生成词法单元的类型和值,并将它们作为输出。

2. 什么是正规文法?它在词法分析中有什么作用?答案:正规文法是一种形式文法,它使用正则表达式来定义语言的词法结构。

在词法分析中,正规文法用于描述程序设计语言的词法规则,帮助词法分析器识别和生成词法单元。

三、应用题1. 给定一个简单的词法分析器,它需要识别以下词法单元:标识符、关键字(如if、while)、整数、运算符(如+、-、*、/)、分隔符(如逗号、分号)。

请描述该词法分析器的实现步骤。

答案:实现步骤如下:- 定义词法单元的类别和对应的正则表达式。

- 读取源代码字符,逐个字符进行匹配。

- 使用状态机或有限自动机来识别词法单元。

- 根据匹配结果生成相应的词法单元类型和值。

- 输出识别的词法单元。

2. 设计一个简单的词法分析器,它可以识别以下C语言关键字:int, float, if, else, while, return。

蒋立源编译原理第三版第三章习题与答案(修改后)

蒋立源编译原理第三版第三章习题与答案(修改后)
第 3 章 习题
3-1 试构造一右线性文法,使得它与如下的文法等价 S→AB A → UT U → aU|a D →bT|b B → cB|c
并根据所得的右线性文法,构造出相应的状态转换图。
3-2 对于如题图 3-2 所示的状态转换图 0
0 0 A
D
1
0 1
B
C1
F
0
1
0
E
1 题图 3-2
(1) 写出相应的右线性文法; (2) 指出它接受的最短输入串; (3) 任意列出它接受的另外 4 个输入串; (4) 任意列出它拒绝接受的 4 个输入串。

{1}
b=
故 1 和 2 可区分,于是便得到下一分划
π1: {1}, {2}, {3}
此时子集已全部分裂,故最小化的过程宣告结束, M′即为状态数最小的 DFA。
(3) 将 NFA M确定化后得 DFA M′,其状态转换矩阵如答案图 3-4-(3) 之 (a) 所示, 给各状态重新命名,即令:
[S]=1, [A]=2, [S,B]=3 且由于 3 的组成中含有 M的终态 B,故 3 为 DFAM′的终态。于是,所构造之 DFAM′的 状态转换矩阵和状态转换图如答案图 3-4-(3) 之(b) 及(c) 所示。
π0:{1,2}, {3}
( ⅱ) 为得到下一分划,考察子集 {1,2} 。因为
{2} b ={3}

{1}
b=
故 1 和 2 可区分,于是便得到下一分划
π1: {1}, {2}, {3}
此时子集已全部分裂,故最小化的过程宣告结束, M′即为状态数最小的 DFA。
(4) 将 NFA M确定化后得 DFA M′,其状态转换矩阵如答案图 3-4-(4) 之 (a) 所示, 给各状态重新命名,即令:

编译原理第三版课后习题答案

编译原理第三版课后习题答案

目录P36-6 (2)P36-7 (2)P36-8 (2)P36-9 (3)P36-10 (3)P36-11 (3)P64–7 (4)P64–8 (5)P64–12 (5)P64–14 (7)P81–1 (8)P81–2 (9)P81–3 (12)P133–1 (12)P133–2 (12)P133–3 (14)P134–5 (15)P164–5 (19)P164–7 (19)P217–1 (19)P217–3 (20)P218–4 (20)P218–5 (21)P218–6 (22)P218–7 (22)P219–12 (22)P270–9 (24)P36-6(1)L G ()1是0~9组成的数字串(2)最左推导:N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334556568最右推导:N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434886868568P36-7G(S)O N O D N S O AO A AD N→→→→→1357924680|||||||||||P36-8文法:E T E T E T TF T F T F F E i→+-→→|||*|/()| 最左推导:E E T T TF T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()最右推导:E E T E TF E T i E F i E i i T i i F i i i i i E T F T F F F E F E T F E F F E i F T i F F i F i i i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+⇒+**********()*()*()*()*()*()*()*()语法树:/********************************EE FTE +T F F T +iiiEEFTE-T F F T -iiiEEFT+T F FTiii*i+i+ii-i-ii+i*i*****************/P36-9句子iiiei 有两个语法树:S iSeS iSei iiSei iiiei S iS iiSeS iiSei iiiei ⇒⇒⇒⇒⇒⇒⇒⇒P36-10/**************)(|)(|S T TTS S →→***************/P36-11/*************** L1:ε||cC C ab aAb A AC S →→→ L2:bcbBc B aA A AB S ||→→→εL3:εε||aBb B aAb A AB S →→→ L4:AB B A A B A S |01|10|→→→ε ***************/第三章习题参考答案P64–7(1)确定化:最小化:{,,,,,},{}{,,,,,}{,,}{,,,,,}{,,,}{,,,,},{},{}{,,,,}{,,}{,,,},{},{},{}{,,,}{,01234560123451350123451246012345601234135012345601231010==== 3012312401234560110112233234012345610101}{,,,}{,,}{,},{,}{},{},{}{,}{}{,}{,}{,}{}{,}{}{},{},{,},{},{},{}=====P64–8(1)01)0|1(*(2))5|0(|)5|0()9|8|7|6|5|4|3|2|1|0)(9|8|7|6|5|4|3|2|1(*(3)******)110|0(01|)110|0(10P64–12(a)确定化:给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}012301101223032330123a ba b ====(b)已经确定化了,进行最小化最小化:{{,}, {,,,}}012345011012423451305234523452410243535353524012435011012424{,}{}{,}{,}{,,,}{,,,}{,,,}{,,,}{,}{,}{,}{,}{,}{,}{,}{,}{{,},{,},{,}}{,}{}{,}{,}{,}a b a b a b a b a b a =============={,}{,}{,}{,}{,}{,}{,}10243535353524 b a baP64–14(2):给状态编号:最小化:{,},{,}{,}{}{,}{}{,}{,}{,}{}{,},{},{}0123011012231323301230101====第四章P81–1(1) 按照T,S 的顺序消除左递归ε|,)(||^)(T S T TS T T a S S G '→''→→' 递归子程序: procedure S; beginif sym='a' or sym='^' then abvance else if sym='('then beginadvance;T;if sym=')' then advance;else error;endelse errorend;procedure T;beginS;'Tend;procedure 'T;beginif sym=','then beginadvance;S;'Tendend;其中:sym:是输入串指针IP所指的符号advance:是把IP调至下一个输入符号error:是出错诊察程序(2)FIRST(S)={a,^,(}FIRST(T)={a,^,(}FIRST('T)={,,ε}FOLLOW(S)={),,,#}FOLLOW(T)={)}FOLLOW('T)={)}预测分析表是LL(1)文法P81–2文法:|^||)(|*||b a E P F F F P F T T T F T E E E T E →'→''→→''→+→''→εεε(1)FIRST(E)={(,a,b,^} FIRST(E')={+,ε} FIRST(T)={(,a,b,^} FIRST(T')={(,a,b,^,ε} FIRST(F)={(,a,b,^} FIRST(F')={*,ε} FIRST(P)={(,a,b,^} FOLLOW(E)={#,)} FOLLOW(E')={#,)} FOLLOW(T)={+,),#} FOLLOW(T')={+,),#}FOLLOW(F)={(,a,b,^,+,),#} FOLLOW(F')={(,a,b,^,+,),#} FOLLOW(P)={*,(,a,b,^,+,),#} (2)考虑下列产生式:'→+'→'→'→E E T T F F P E a b ||*|()|^||εεεFIRST(+E)∩FIRST(ε)={+}∩{ε}=φ FIRST(+E)∩FOLLOW(E')={+}∩{#,)}=φ FIRST(T)∩FIRST(ε)={(,a,b,^}∩{ε}=φ FIRST(T)∩FOLLOW(T')={(,a,b,^}∩{+,),#}=φ FIRST(*F')∩FIRST(ε)={*}∩{ε}=φFIRST(*F')∩FOLLOW(F')={*}∩{(,a,b,^,+,),#}=φ FIRST((E))∩FIRST(a) ∩FIRST(b) ∩FIRST(^)=φ 所以,该文法式LL(1)文法.(4)procedure E;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin T; E' endelse errorendprocedure E';beginif sym='+'then begin advance; E endelse if sym<>')' and sym<>'#' then error endprocedure T;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin F; T' endelse errorendprocedure T';beginif sym='(' or sym='a' or sym='b' or sym='^' then Telse if sym='*' then errorendprocedure F;beginif sym='(' or sym='a' or sym='b' or sym='^' then begin P; F' endelse errorendprocedure F';beginif sym='*'then begin advance; F' endendprocedure P;beginif sym='a' or sym='b' or sym='^'then advanceelse if sym='(' thenbeginadvance; E;if sym=')' then advance else error endelse errorend;P81–3/***************(1) 是,满足三个条件。

编译原理 第二版 第三章课后答案

编译原理 第二版 第三章课后答案

第三章作业第三章作业答案P47 练习1、文法G=({A,B,S},{a,b,c},P,S),其中P为:S->Ac|aB A->ab B->bc写出L(G [S])的全部元素。

S=>Ac=>abc或S=>aB=>abc所以L(G[S])={abc}2、文法G[N]为:N->D|NDD->0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?【解】N=>ND=>NDD.... =>NDDDD...D=>D......DG[N]的语言是V+。

V={0,1,2,3,4,5,6,7,8,9}或:解: N ND n-1D n{0,1,3,4,5,6,7,8,9}+∴L(G[N])= {0,1,3,4,5,6,7,8,9}+5.写一文法,使其语言是偶正数的集合。

要求:(1)允许0打头(2)不允许0打头【解】(1)允许0开头的偶正整数集合的文法E->NT|G|SFMT->NT|GN->D|1|3|5|7|9D->0|GG->2|4|6|8S->NS|εF->1|3|5|7|9|GM->M0|0(2)不允许0开头的偶正整数集合的文法E->NT|DT->FT|GN->D|1|3|5|7|9D->2|4|6|8F->N|0G->D|09.考虑下面上下文无关文法:S→SS*|SS+|a(1) 表明通过此文法如何生成串aa+a*,并为该串构造推导树。

(2) 该文法生成的语言是什么?【解】(1) S=>SS*=>SS+S*aa+a*该串的推导树如下:(2) 该文法生成的语言是只含+、*的算术表达式的逆波兰表示。

11.令文法G[E]为:E→T|E+T|E-TT→F|T*F|T/FF→(E)|i证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章习题解答
1.构造正规式1(0|1)*101相应的DFA.
[答案]
先构造NFA
确定化
0 1
X A
A A AB
AB AC AB
AC A ABY
ABY AC AB
重新命名,令AB为B、AC为C、ABY为D
0 1
X A
A A B
B C B
C A D
D C B
转化成DFA:
============================================================== 2.将下图确定化:
[答案]
0 1
S VQ QU
VQ VZ QU
QU V QUZ
VZ Z Z
V Z
QUZ VZ QUZ
Z Z Z
重新命名,令VQ为A、QU为B、VZ为C、V为D、QUZ为E、Z为F。

0 1
S A B
A C B
B D E
C F F
D F
E C E
F F F
转化为DFA:
================================================================ 3.把下图最小化:
[答案]
(1)初始分划得Π0:终态组{0},非终态组{1,2,3,4,5}
对非终态组进行审查:
{1,2,3,4,5}a {0,1,3,5}
而{0,1,3,5}既不属于{0},也不属于{1,2,3,4,5} ∵{4} a {0},所以得新分划 (2)Π1:{0},{4},{1,2,3,5} 对{1,2,3,5}进行审查: ∵{1,5} b {4}
{2,3} b {1,2,3,5},故得新分划 (3)Π2:{0},{4},{1, 5},{2,3} {1, 5} a {1, 5}
{2,3} a {1,3},故状态2和状态3不等价,得新分划 (3)Π3:{0},{2},{3},{4},{1, 5} 这是最后分划了 (4)最小DFA :
======================================= 4.构造一个DFA ,它接收Σ={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。

并给出该语言的正规式和正规文法。

[答案]
按题意相应的正规表达式是0*(100*)*0* 构造相应的DFA ,首先构造NFA 为
用子集法确定化
I
I0
I1 {X,1,2} S {1, 2} A {3} B {4,5,6,2,7,Y} C {5,6,2,7,Y} D {1, 2} A {1, 2} A {4,5,6,2,7,Y} C {5,6,2,7,Y} D {5,6,2,7,Y} D
{3} B {3} B / {3} B {3} B
可最小化,终态组为G1={C, D},非终态组为G2={S, A, B} 对于G2分析:f(S,0)=A, f(A,0)=A, 后继状态均属于G2 而f(B,0)=C, 后继状态属于G1 将G2分割成G21={S ,A}, G22={B}
X
1
2
3
4
5
6
Y
ε
ε
1
ε ε
0 7
ε
ε
ε
S
A
B
D
C
0 0 1
1
1 0 0
1
经检查DFA最小状态集有三个,可用S、B、D表示。

或:
按题意相应的正规表达式是0*(0 | 10)*0*
首先构造NFA为
用子集法确定化
I I0 I1 S 0 1
{X,0,1,3,Y} {0,1,3,Y} {2}
{1,3,Y} {0,1,3,Y}
{0,1,3,Y}
{1,3,Y}
{1,3,Y}
{2}
{2}
/
{2}
1
2
3
4
2
2
4
4
3
3
3
DFA:
可最小化,终态组为{1,2,4},非终态组为{3},{1,2,4}0 {1,2,4},{1,2,4}1 {3},所以1,2,4为等价状态,可合并。

=============================================
5.给出下列文法所对应的正规式:
S->0A|1B
A->1S|1
B->0S|0
[答案]
解方程组S的解:
S=0A|1B
A=1S|1
B=0S|0
将A、B产生式的右部代入S中
S=01S|01|10S|10=(01|10)S|(01|10)
所以:S= (01|10)*(01|10)
=================================================
6.为下边所描述的串写正规式,字母表是 {a,b}.
a) 以ab 结尾的所有串
b) 包含偶数个b但不含a的所有串
c) 包含偶数个b且含任意数目a的所有串
d) 只包含一个a的所有串
e) 包含ab子串的所有串
f) 不包含ab子串的所有串
[答案]
注意正规式不唯一
a) (a|b)*ab
b) (bb)*
c) (a*ba*ba*)*
d) b*ab*
e) (a|b)*ab(a|b)*
f) b*a*
======================================
7.请描述下面正规式定义的串. 字母表S = {0,1}.
a) 0*(10+)*0*
b) (0|1)*(00|11) (0|1)*
c) 1(0|1)*0
[答案]
a) 每个1至少有一个0跟在后边的串
b) 所有含两个相继的0或两个相继的1的串
c) 必须以 1 开头和0结尾的串
==========================================
8. 构造有穷自动机.
a) 构造一个DFA,接受字母表S = {0, 1}上的以01 结尾的所有串
b) 构造一个DFA,接受字母表S = {0, 1}上的不包含01 子串的所有串.
c) 构造一个NFA,接受字母表S = {x,y}上的正规式x(x|y)*x描述的集合
d) 构造一个NFA,接受字母表S = {a, b}上的正规式(ab|a)*b+描述的集合并将其转换
为等价的DFA.以及最小状态DFA
[答案]
b)
c)
最小化的DFA
9.设有如图所示状态转换图,求其对应的正规表达式。

[答案]
可通过消结法得出正规式
R=(01)*((00|1)(0|1)*|0)
也可通过转换为正则文法,解方程得到正规式。

==========================================
10. 已知正规式:
(1)((a|b)*|aa)*b;
(2)(a|b)*b.
试用有限自动机的等价性证明正规式(1)和(2)是等价的,并给出相应的正规文法。

[分析]
基本思路是对两个正规式,分别经过确定化、最小化、化简为两个最小DFA,如这两个最小DFA一样,也就证明了这两个正规式是等价的。

[答案]
状态转换表1
a b
X124 1234 124Y
1234 1234 124Y
124Y 1234 124Y
状态转换表2
a B
1 2 3
2 2 3
3 2 3
由于2与3完全一样,将两者合并,即见下表
a b
1 2 3
2 2 3
而对正规式(2)可画NFA图,如图所示。

a b
X12 12 12Y
12 12 12Y
12Y 12 12Y
可化简得下表
a b
1 2 3
2 2 3
得DFA图
两图完全一样,故两个自动机完全一样,所以两个正规文法等价。

对相应正规文法,令A对应1,B对应2
故为:
A->aA|bB|b
B->aA|bB|b
即为S->aS|bS|B,此即为所求正规文法。

相关文档
最新文档