DFA化简

NFA使用子集法转成DFA之后,DFA不是最简洁的版本,可以进行下一步的化简。

思路:将 DFA 的状态集划分为不相交的子集,使不同的两个子集的状态可区别,同一个

子集的状态都等价。即将等价的状态合在一起。
例子:

 
方法:将状态集S划分为两个子集,终态集和非终态集。
即Π0={{1,2,3,4},{5,6,7}},1234是非终态,567是终态。
因为{1,2,3,4}a={6,7,1,4},{1,2,3,4}接收a之后得到的状态是{6,7,1,4},不全包含在 Π0的子集中,不是Π0的一个子集,所以需划分。
又因为{1,2}a={6,7}落在{5,6,7}集合中, {3,4}a={1,4}落在{1,2,3,4}集合中,所以a可以将{1234}中的{12}和{34}区分开,所以得Π1={{1,2},{3,4},{5,6,7}}。
因为{3,4}a={1,4},不全包含在Π1的 子集中,需划分为{3},{4}得:
Π2={{1,2},{3},{4},{5,6,7}}。
因为{5,6,7}a={7,4},所以 Π3={{1,2},{3},{4},{5},{6,7}}。
到这里,已经将初始的集合从2个子集{567}、{1234}划分成5个子集{1,2},{3},{4},{5},{6,7}了,这5个集合中的元素是等价的,即12是等价的,67是等价的,只需要保留一个,可以删除2和7,删除的过程中需要注意:
删除某一个结点时,可能需要补一些线,使得整体的功能不变,由于67是等价的,所以删除2时,2和 7有的线,只要16有,那么就不需 要添加新的线,但是删除7的时候, 由于存在57,但是没有5到6,所以所以需要补充一 条线,即56,图中的红线。
然后将2和7,以及它们相关的线条删除,剩下的5个状态13456,可以重新命名为12345,只要保持形状不变就行,某个状态具体的名字是1还是3并不是很重要,美观起见,化简的最后,重新从1开始命名。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值