NFA转DFA与DFA化简



正则表达式-->NFA--->DFA--->最简DFA

DFA(有限自动机,每个状态的下一步都是确定的,没有空。只有一个开始状态,只有一个结束状态)

NFA(有可能转到多个状态,可能有空)


※由正则表达式转到NFA

基本可以分成3种:

AB(连接)

A|B(或)

A*(0到多个A)

NFA转DFA与DFA化简 - 小镜子~ - 菜园子
 

例:正则表达式(a|b)*(aa|bb)(a|b)*NFA

NFA转DFA与DFA化简 - 小镜子~ - 菜园子

 

NFADFA匹配串的时间空间复杂度

NFA转DFA与DFA化简 - 小镜子~ - 菜园子
 


NFA的确定化:NFADFA

空闭包,子集法

原理:有些状态是在做同样的工作,他们的工作完全可以用一个状态来做,把这些相同功能的状态组合成一个集合,并把它重新命名为一个状态。

:

将以下NFA转换为DFA

NFA转DFA与DFA化简 - 小镜子~ - 菜园子

 

按下表不断构建,直到Ia,Ib中出现的集合,全部都出现在I中。并且将他们重新编号

(终态是那些有Y的集合,Y为原先NFA的终态)

NFA转DFA与DFA化简 - 小镜子~ - 菜园子
 

转成DFA的结果:

NFA转DFA与DFA化简 - 小镜子~ - 菜园子
 


DFA化简成最简DFA

1.划分终态,非终态: P={{4,5,6,7},{1,2,3}}

2.{4,5,6,7}内部能识别ab,不再划分,(成一个大的部门处理相同的事情

3.{1,2,3} 根据识别a的能力,划分为{1,3}{2}1,3识别a都转到3

  根据识别b的能力,划分为{1} {3} {2}

4.(此例不用考虑这条)删除死循环(即一个对所有输入符号都有到自身转换的非终态)和不可达状态

结果P={{4,5,6,7},{1},{2},{3}}

给四个划分再重新命名 变成1,2,3,4

结果是:

NFA转DFA与DFA化简 - 小镜子~ - 菜园子
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值