编译原理 第四章 学习笔记1

FA—有穷自动机—Finite Automata
NFA—不确定的有穷自动机—Nondeterministic Finite Automata
DFA—确定的有穷自动机—Deterministic Finite Automata

1、NFA的确定化
在这里插入图片描述

DFAabF
[x51][513][514]
[513][51326y][514]
[514][513][51426y]
[51326y][51326y][5146y]1
[51426y][5136y][51426y]1
[5146y][5136y][51426y]1
[5136y][51326y][5146y]1
DFAabF
012
132
214
3351
4641
5641
6351

在这里插入图片描述
2、FA与正则文法的关系
定理1:对任意的正则文法G=( VN, VT, P, S),都存在一个有穷自动机A,使得L(A)=L(G)
定理2:对任一DFA(或NFA),都存在一个正则文法G,使L(G)=L(A)
具体步骤:
(1)对于 A->a的产生式,按归约理解,句子中的第1个字符,都是用A->a的产生式进行归约的.对应到FA中,FA从开始状态出发,读到句子的第一个字符a,将它归约为A。此时引入初态 q, 定义为:f(q,a)=A.
(2)对于 A->Ba的产生式,FA应该在状态B读入 a,其状态转为A , 即 f(B,a)=A. 也可理解为在状态B时,FA已将当前句子处理过的前缀归约成了B,此时它读入 a时,要将Ba归约为A。
(3)按归约来说,如果一个输入串是文法G产生语言的合法句子,它最终应该被归约成开始符号。所以G的开始符号就是FA M的终止状态。
【EG】构造下述文法G[S]的自动机:
S—>A0 (1)
A—>A0 | S1 | 0 (2)
该自动机是确定的吗?若不确定,则对它确定化。该自动机相应的语言是什么?根据规则画出FA

NFA01F
qA
AAS
SA1
DFA01F
[q]-1[A]-2
[A]-2[AS]-3
[AS]-3[AS]-3[A]-21

在这里插入图片描述
该自动机的不是确定的,相应的语言是:00(0|10)*

3、正则式与FA的等价性
【EG】已知L(G)={x | x 属于{0,1}* ,且不含两个相邻的1}, 求文法G。
在这里插入图片描述
画出对应的FA,可知文法为:
S—>0S | 1A | 空
A—>0S | 空

两个定理:
(1)对于上的NFA M,可构造一个上的正则式r,使L®=L(M);
(2)对于上的每个正则式r,可构造上的NFA M,使L(M)=L®。

【EG】已知FA,求正则式
在这里插入图片描述
正则式:(a | b | c (a|b)* d)*

【EG】已知FA,求正则式。
在这里插入图片描述
正则式:0(0 | 10)*0
简单的解释一下:S->A和A->B的是两个不可省略的过程,也就是我们写出正则式前后的两个0,所以所有的文章都出在A上面,所以我们只需要看A要经历哪些状态再次回到A,才能保证S顺利的到达B。A可以一直0循环,也可以先到S再回来并且不断循环,所以(0|10) *。由此我们可以确定正则式。

4、正则式构造等价NFA
【EG】已知正则式r=b*(d|ad)(b|ad)+构造等价的NFA M。
在这里插入图片描述
【EG】已知正则式r= 1 (01) * (0* | 1* ) 0 ,构造等价的NFA M。
在这里插入图片描述
5、DFA的化简(DFA最小化)
1.化简的FA:是指没有多余状态且状态中没有两个是互相等价的。
2.多余状态:从DFA的开始状态出发,任何输入串也不能到达的那个状态。
3.在DFA中,状态s和t状态等价的条件是:
(1)一致性条件——s和t必须同时为可接受态或不可接受态。
(2)蔓延性条件——对于所有输入符号, s和t必须转换到等价的状态集里。
如果DFA的状态s和t不等价,则称s和t是可区分的。

【EG】将下图所示的DFA M最小化。
在这里插入图片描述

abF
163
273
315
446
5731
6411
7421

接下来划分集合
P=({1,2,3,4},{5,6,7})=({1,2},{3,4},{5},{6,7})=({1,2},{3},{4},{5},{6,7})
1、2相同,6、7相同
在这里插入图片描述
【EG】把图确定化、最小化
在这里插入图片描述

DFAabF
0121
114
213
332
405
554

P=({0},{1,2,3,4,5})=({0},{4},{1,2,3,5})=({0},{4},{1,5},{2},{3})
所以1和5是等价的
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值