第三章词法分析|最小化DFA

做题步骤:(三步走

正则表达式 ----->  NFA  -----> DFA  ----->  DFA最小化

例题1:求与正则表达式(a|d)*对应的最小化DFA。

(1) 求正则表达式(a|d)*对应的NFA

(2)NFA转化为DFA

以非终结符集(此题为a,b)为列,画表格。

构造Ⅰ0规则如下:

① 把开始状态S加入Ⅰ0中。

② 从开始状态S出发,把 能通过识别ε到达的状态 都加入到Ⅰ0中。

得到Ⅰ0 {S,1,Z} 。

然后构造其他Ⅰi

依次看Ⅰ0中的状态,通过识别a,能够到达哪些状态。将这些状态加入Ⅰi。

如果,识别a后,还可以通过识别ε得到新状态,就把这些状态也加入Ⅰi。

得到Ⅰi{1,Z} ,这个新Ⅰi与Ⅰ0不同,因此记为Ⅰ1。

同理,依次看Ⅰ0中的状态,通过识别b,能够到达哪些状态。

如果,识别b后,还可以通过识别ε得到新状态,就把这些状态也加入Ⅰi。

将这些状态加入Ⅰi。

得到Ⅰi{1,Z},这个新Ⅰi与Ⅰ1相同,因此记为Ⅰ1。

存在新产生的Ⅰ,就把这些新产生的Ⅰ按照顺序依次写到第Ⅰ列上。

然后,重复上述操作,直至不再产生新的Ⅰ为止。

最终得到表格如下所示:

ⅠaⅠb
Ⅰ0 {S,1,Z}Ⅰ1{1,Z}Ⅰ1{1,Z}
Ⅰ1{1,Z}Ⅰ1{1,Z}Ⅰ1{1,Z}

设Ⅰ0为初始状态S,Ⅰ1为终止状态Z。

得到未化简的DFA如下:

(3)DFA最小化

① 找初态集和终态集

终态集就是在第(2)步中,表格里求出来的Ⅰ0,Ⅰ1,Ⅰ2.........中,包含终止状态Z的集合。

初态集就是除了终态集以外的其他状态组成的集合。

因此,本题的

终态集为 {Ⅰ0,Ⅰ1}

初态集为空。

下面分别对这两个集合进行如下分析:

如果Ⅰ0能够通过a或者b到达终态集{Ⅰ0,Ⅰ1}以外的新状态,则将Ⅰ0从终态集中独立出来。

同理,处理其他状态。

同理,处理初态集。

最后得到新的集合为{Ⅰ0,Ⅰ1},发现Ⅰ0和Ⅰ1同处一个集合内。

就将这两个状态Ⅰ0和Ⅰ1合并,记作终止状态Z。

得到最终化简后的DFA为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

访问宇宙

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值