编译原理-DFA的化简(最小化)


对于给定的DFA    M,寻找一个状态数比M小的DFA    M'使得L(M)=L(M')

1.状态的等价性:

假设s和t为M的两个状态

①若分别从状态s和状态t出发都能读出某个字α而停止于终态,则称s和t等价

②存在一个字α,使得s和t一个读出α停止于终态,另一个读出α停止于非终态,则称s和t可区别

2.基本思想:

①把M的状态集分为一些不相交的子集,使任何两个不同子集状态是可区别的,而同一子集的任何两个状态是等价的

②让每个子集选出一个代表,同时消去其他状态

3.划分

①把S划分为终态和非终态两个子集,形成基本划分∏

②假定某个时候∏已含m个子集,记为∏={I(1),I(2),…,I(m)},检查∏中的每个子集能否进一步划分:

    (a)假定s1和s2是I(i)={s1,s2,…sk}中的两个状态,它们经过a弧分别到达t1和t2,而t1和t2属于现行∏中的两个不同子集,则s1和s2不等价

 

    (b)一般地,对于某个I(i),若Ia(i)落于现行∏中N个不同的子集,则应把I(i)划分成N个不相交的组

例:


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM