编译原理 第3章习题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章习题参考解答
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
ε
q
1
q
2
q
3
a
b
a,b
q
a
q
6
q
4
q
5
a
b
ε
ε
ε
图3.24 含空移的自动机
3.4 将图3.25所示NDFSA确定化和最小化。
x
y
q
q
1
q
2
q
4
q
3
x
y
x
y
x,y
x
图3.25 待确定化的NDFSA
3.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→A0
A→A0∣Z1∣0
3.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
试写出相应的有限自动机和状态图。
3.9 图3.29所示的是一个NDFSA A,试构造一个正规文法G,使得L(G)= L(A)。
A
B
b
S
a
a,b
C
a
D
b
图3.29 FSA A
3.10 构造一个DFSA,它接受∑={a, b}上的符号串,符号串中的每一个b都有a直接跟在右边;然后,再构造该语言的正规文法。
参考答案
3.1 解 (1)
(2)
(3) 依题意,当二进制数的末尾为1时,表示此二进制数为奇数。因此自动机接收由0、1构成的一个二进制串,且串的最后一位必为1(特殊情况下,接收数字1)。构造的自动机如下:
z
S
1
0,1
(4) 由题中自动机所识别的符号串的要求,得到相应的正规文法:
S→aB|bA|a|b|ε
A→aB|a
B→bA|b
由此正规文法得到相应的状态转换图如右图所示。利
用子集法构造确定的有穷自动机如下表所示(已换名)。
将NFSA确定化为DFSA的过程
I I a I b
[S,Z] 0[B,Z] 1[A,Z] 2
[B,Z] 1[A,Z] 2
[A,Z] 2[B,Z] 1
1、2都是
终止状态,但由于它们的输入符号不相同,所以这三个状
态不等价。因此,该DFSA已是最小化的DFSA。
(5) 由题中自动机所识别的符号串的要求:“0与1任意出现,随后的11和00也任意出现”,得到相应的正规表达式为(1|0)*(11|00)*
由此正规表达式得到相应的状态转换图(NFSA)如图所示。
11
Z
1
C
D
00
E
ε
ε
B
ε
A
ε
S
利用子集法构造确定的有穷自动机如下表所示(已换名)。
I I0I1
[S,A,B,C,Z] S[A,B,C,E,Z] A[A,B,C,D,Z] B
[A,B,C,E,Z] A[A,B,C,E,Z] A[A,B,C,D,Z] B
[A,B,C,D,Z] B[A,B,C,E,Z] A[A,B,C,D,Z] B
DFSA相应的状态图如下左图所示。对左图所示的DFSA进行最小化:因为该DFSA中所有的状态均是终止状态,且输入0均到达A,输入1均到达B,所以状态S、A、B等价。最小化DFSA如右图所示。
a, b, ε
a
B
b
b
A
S
a
a
b
Z
a
a
b
1
2
化简后的DFSA