第
四
章词法分析
1.构造下列正规式相应的DFA :
(1) 1(0|1)*101
(2) 1(1010*
|1(010)*
1)*
0 (3) a((a|b)*
|ab *
a)*b (4) b((ab)*
|bb)*
ab
解:
(1)1(0|1)*
101对应的NFA 为
下表由子集法将NFA 转换为
DFA :
***
下表由子集法
将NFA 转换为DFA :
0 0 0
(3)a((a|b)
*
|ab *
忧愁的近义词a
)*
操课
梅花古诗王安石b(略) (4)b((ab)*|bb)*
ab(略
) 2.已
知NFA=({x,y,z},
{0,1},M,{x},{z})其中:M(x,0)={z},M(y,0)={x,y},M(z,0)={x,z},M(x,1)={x},M(y,1)=φ,M(z,1)={y},构造相应的DFA 。
解:根据题意有NFA 图如下
下面将该DFA 最小化:
(1) 首先将它的状态集分成两个子集:P 1={A,D,E},P 2={B,C,F}
(2) 区分P 2:由于F(F,1)=F(C,1)=E,F(F,0)=F 并且F(C,0)=C,所以F ,C 等价。由于
F(B,0)=F(C,0)=C,F(B,1)=D,F(C,1)=E,而D ,E 不等价(见下步),从而B 与C ,F 可以区分。有P 21={C,F},P 22={B}。 0 0
F
1 1 0
C
B
0 1
0 1
(3) 区分P1:由于A ,E 输入0到终态,而D 输入0不到终态,所以D 与A ,E 可以区分,有
人民币最大面值P 11={A,E},P 12={D}。
(4) 由于F(A,0)=B,F(E,0)=F,而B ,F 不等价,所以A ,E 可以区分。
(5) 综上所述,DFA 可以区分为P={{A},{B},{D},{E},{C ,F}}。所以最小化的DFA 如下:
3.将图
4.16
4.把图4.17(b)分别确定化和最小 (a)(b) 解: (a):
下
子集法
将NFA 转换为烟花爆竹管理条例
可得图(a1),由于F(A,b)=F(B,b)=C,并且F(A,a)=F(B,a)=B,所以A,B 等价,可将DFA 最小化,即:删
除B ,将原来引向B 的引线引向与其等价的状态A ,有图(a2)。(DFA 的最小化,也可看作将上表中的B 全部替换为A ,然后删除B 所在的行。) (a1)确定化的DFA (a2)最小化的DFA (b ):该图已经是DFA 。下面将该
DFA 最
小化:
(6) 首先
a
a
u盘有写保护1
将它的状态集分成两个子集:P 1={0},P 2={1,2,3,4,5}
(7) 区分P 2:由于F(4,a)=0属于终态集,而其他状态输入a 后都是非终态集,所以区分P 2如下:
P 21={4},P 22={1,2,3,5}。
(8) 区分P 22:由于F(1,b)=F(5,b)=4属于P 21,而F(2,b)与F(3,b)不等于4,即不属于P 21,所以区分P 22如下:
P 221={1,5},P 222={2,3}。
(9) 区分P 221:由于F(1,b)=F(5,b)=4,即F(1,a)=1,F(5,a)=5,所以1,5等价。
(10) 区分P 222:由于F(2,a)=1属于P 221,而F(3,a)=3属于P 222,所以2,3可区分。P 222区分为P 2221{2},
P 2222{3}。
(11) 结论:该DFA 的状态集可分为:P={{0},{1,5},{2},{3},{4}},其中1,5等价。删去状态5,将原来引
向5的引线引向与其等价的状态1,有图(b1)。 (b1)最小化的DFA
5.构造一个DFA
={0,1}上所有满足如下条件的字符串:每个1
都有直接跟在右边。然后再构
造该语言的正则文法。 解:根据题意,DFA 的正规式应为:
(0|(10))*
的NFA 如下:
下表由子集法将NFA 转换为DFA :
显然,A ,B
对应的正规文法为: G[A]:
A ✍1C|0A|ε C ✍0A
6.设无符号数的正规式为θ:
θ=dd *
|dd *
.dd *
|.dd *
|dd *
e(s|ε)dd *
|e(s|ε)dd *
|.dd *
e(s|ε)dd *
|dd *
.
dd *
e(s|ε)dd *
化简θ,画出θ的DFA ,其中d={0,1,2,…9},s={+,-}
解:把原正规式的每2,3项,4,5项,6,7项分别合并后化简有:
θ=dd *
|d *
.dd *
|d *
e(s|ε)dd *
|d *
.dd *
e(s|ε)dd *
=dd *
|d *
.dd *
|(d *
|d *
.dd *
)e(s|ε)dd *
=(ε|d *
.|(d *
|d *
.
dd *
)e(s|ε))dd
* =(ε|d *
.|d *
(ε|.dd *
)e(s|ε))dd
*
怎么创建表格下面构造化简后的θ对
应的
NFA :
下表由子集法将NFA 转换为DFA :
7.给文法
G[S]: S ✍aA|bQ A ✍aA|bB|b
B ✍bD|aQ
Q ✍aQ|bD|b D ✍bB|aA E ✍aB|bF
F ✍bD|aE|b
构造相应的最小的DFA 。
解:由于从S 出发任何输入串都不能到达状态E 和F ,所以,状态E ,F 为多余的状态,不予考虑。这样,可以写出文法G[S]对应的
权志龙图片NFA :
由上表可知:
(1)因为4,5是DFA 的终态,其他是非终态,可将状态集分成两个子集: P 1={1,2,3,6,7},P 2
={4,5} (2)在P 1中因为2,3输入b 后是终态,而1,6,7输入b 后是非终态,所以P 1可区分为:
P 11={1,6,7},P 12={2,3}
a