状态的等价性
- 对于给定的DFA M,寻找一个状态数比M少的DFA M’,使得L(M)=L(M’)
- 假设s和t为M的两个状态,称s和t等价:如果从状态s出发能读出某个字a而停止于终态,那么同样,从t出发也能读出a而停止于终态;反之亦然
- 两个状态不等价,则称它们是可区别的
DFA M最小化基本思想
基本思路:
- 把M的状态集划分为一些不相交的子集,使得任何两个不同子集的状态是可区别的,而同一子集的任何两个状态是等价的
- 最后,让每个子集选出一个代表,同时消去其他状态。
确定有限自动机的化简
- 首先,将DFA M的状态集S进行划分,将其划分为终态和非终态两个子集,形成基本划分π PS:显然这两个不同子集的状态是可区分的,终态能读出空字 ,非终态不能读出
- 假定,π以含m个子集,记为 π= {},检查π中的每个子集是否能进一步划分
- 对于某个,令={},若存在一个输入字符a使得 不会包含在现行π的某个子集中,则至少应该把分为两个部分
eg:接上一节的图
化简步骤拆解
1.第一次划分,终态和非终态 (G1 {0,1,2}和G2{3,4,5,6} )
2.输入某个符号得到的后继状态不属于同一个子集,则将每个子集进一步划分
①子集G1中每一个状态输入a后得到{1,3}
②子集G1中每一个状态输入b后{0,1}得到{2},2属于G1,条件2输入b后得到 4, 4不属于G1
③4是由G1中状态2得到的,故将子集分为{0,1}和{2}
3.对所有子集重复步骤2
({0} {1} {2} {3, 4, 5, 6} )
4.将最终的步骤3得出的子集中选出一个作为代表,删掉该子集中的所有其他元素
{3, 4, 5, 6} → {3}
5.剩下的状态即为化简后的状态
{0} {1} {2} {3}
6.将原本由012出发的到3456的弧都连到3上