【编译原理-练习题-2】词法分析大题

题型1:正规表达式构造NFA

1.构造正规表达式a(aa)*bb(bb)*a(aa)* 的NFA(非确定有限自动机)。

在这里插入图片描述

2.对正规式(a|b)*abb构造其等价的NFA。

在这里插入图片描述

3.构造正规表达式((a|b)*|aa)*b的NFA。

解:

在这里插入图片描述

题型二:NFA转换为DFA

4.设M=( {x,y}, {a,b}, f, x, {y} )为一NFA(非确定的有限自动机),其中f定义如下:

           f(x,a)={x,y}       	f{x,b}={y}
           f(y,a)=Φ         	f{y,b}={x,y}
试构造相应的确定有限自动机M′。

解:

1)对照确定有限自动机的定义M=(S,Σ,f,So,Z),

  • S是一个有限状态集,他的每一个元素称为状态
  • Σ是一个又穷输入字母表他的每一个元素称为一个输入字符
  • f是一个从S*Σ到S的单值映射,即f(si,a)=sj,且有si,sj属于S和a属于Σ
  • S0是初态
  • Z是终态集

由f的定义可知f(x,a)、f(y,b)均为多值函数,不满足定义,因此M是一非确定有限自动机。

2)先画出NFA M相应的状态图,如下图所示。
由M=( {x,y}, {a,b}, f, x, {y} )可知初态是x,终态是y
f(x,a)={x,y} ---------- 表示x接收a字符到x,y
f{x,b}={y} ---------- 表示x接收b字符到y
f(y,a)=Φ ---------- 表示y接收a字符到空
f{y,b}={x,y} ---------- 表示y接收b字符到x,y
在这里插入图片描述

3)用子集法构造状态转换矩阵,如下表所示。
在这里插入图片描述
4)将转换矩阵中的所有子集重新命名,形成下表所示的状态转换矩阵,即得到

在这里插入图片描述
5)M′=({0,1,2},{a,b},f,0,{1,2}),M′状态转换图如下图所示。
在这里插入图片描述

5.将下图所示的非确定有限自动机(NFA)变换成等价的确定有限自动机(DFA)。其中,X为初态,Y为终态。

在这里插入图片描述

用子集法将NFA确定化,如图所示。

在这里插入图片描述
确定化的DFA如下图所示:
在这里插入图片描述

题型三:DFA最小化

6.将以下DFA(确定有限自动机) 最小化

在这里插入图片描述

解:

1)将状态分解为

  • 终态集{Y}
  • 非终态集{X,1,2}

2)考察非终态集{X,1,2}接收a字符

  • X接收a字符到1 (1属于非终态集)
  • 1不接收字符
  • 2接收a字符到1 (1属于非终态集)

故将非终态集{X,1,2},分为{X,2},{1}

3)考察{X,2}接收b字符

  • X接收不接受b
  • 2接收不接受b

4)按顺序重新命名状态子集{X,2},{1},{Y}为0,1,2得到状态转换矩阵

Sab
01
10
2

5)根据状态转换矩阵绘制化简后的状态转换图
在这里插入图片描述

7.将下图所示的确定有限自动机(DFA)最小化。其中,X为初态,Y为终态。

在这里插入图片描述

先划分为终态集{Y}和非终态集I={X,1,2,3}
X面对输入符号b时下一状态属于I,而1,2,3面对输入符号b时下一状态属于{Y},故划分为{X}、{1,2,3}
非终态2和非终态3面对输入符号a的下一状态相同,而1不同,即最简状态{X}、{1}、{2,3}、{Y}。按顺序重新命名为0、1、2、3,则得到最简DFA,
在这里插入图片描述

8.将下图的DFA最小化。

在这里插入图片描述

初始划分:II={{0,1,2},{3,4}}(1分)
(1)考查{0,1,2},1和2接受a,b后都转向相同的状态,且接受b后转向终态,而0接受b后转向非终态2,所以0与1,2可分,IInew={{0},{1,2},{3,4}}(1分)
(2)考查{3,4},接受a,b后都转向相同的状态,所以3,4不可分。IInew={{0},{1,2},{3,4}}(1分)
将1,2合并用1代表,3,4合并用3代表,最终的最小化DFA如下:

Iab
012
112
222

在这里插入图片描述

题型四:正规表达式求DFA

9.构造正规表达式a(aa)*bb(bb)*a 的最小化的确定有限自动机M′。

解:

先画出正规式相应的NFA M状态图,如下图所示。
在这里插入图片描述
用子集法构造状态转换矩阵,如下表所示。
在这里插入图片描述
观察状态转换矩阵,发现I中含有Y的为终态集,则:
将状态分为终态集{Y}和非终态集{X,1,2,3,4,5}
非终态集{X,1,2,3,4,5}
X接收a字符到1 1属于非终态集
1接收a字符到2 2属于非终态集
2接收a字符到1 1属于非终态集
3接收a字符到-
4接收a字符到Y
5接收a字符到-
所以非终态集分为{X,1,2},{3,5},{4}
X接收b字符到-
1接收b字符到3
2接收b字符到-
因为{X,1,2}b={,3,},所以分为{X,2},{1},
3接收b字符到4
5接收b字符到4
最后得到集合{X,2},{1},{3,5},{4},{Y}重新命名为1,2,3,4,5得到最小化的DFA M′状态转换矩阵和状态转换图如下图所示。

在这里插入图片描述
在这里插入图片描述

  • 23
    点赞
  • 155
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计忆芳华

制作不易,欢迎打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值