对于给定的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不等价

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

 

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

例:

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

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

相关文章:

  • 2021-08-04
  • 2022-12-23
  • 2022-12-23
  • 2021-07-22
  • 2022-12-23
  • 2021-06-19
  • 2022-12-23
  • 2021-08-31
猜你喜欢
  • 2022-02-08
  • 2021-06-23
  • 2021-04-07
  • 2021-12-02
  • 2021-12-18
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案