最小化 DFA
最小状态DFA的含义
1.没有无关状态(多余状态、死状态)
什么是无关状态?
死状态:从这个状态没有通路到达终态;S1
多余状态:从开始状态出发,任何输入串也不能到达的那个状态。S2
如何消除无关状态?
- 删除
2.没有两个状态是互相等价(不可区别)
两个状态 s 和 t 等价的条件:
- 兼容性(一致性)条件——同是终态或同是非终态
- 传播性(蔓延性)条件——对于所有输入符号,状态s和状态t必须转换到等价的状态里
DFA的最小化—例子,第一步都是固定的。分成终态和非终态
1.将M的状态分为两个子集一个由终态k1={C,D,E,F}组成,一个由非终态k2={S,A,B}组成,
2.考察{S,A,B}是否可分.
如果后继不在原来的状态中,那么就是可区分的。
如果后继在原来的状态中,那么就是等价的。
因为A经过a到达C属于k1.而S经过a到达A属于k2.B经过a到达A属于k2,所以K2继续划分为{S,B},{A},
3.考察{S,B}是否可再分:
B经过b到达D属于k1.S经过b到达B属于k2,所以S,B可以划分。划分为{S},{B}
4.考察{C,D,E,F}是否可再分:
因为C,D,E,F经过a和b到达的状态都属于{C,D,E,F}=k1所以相同,所以不可再分:
5.{C,D,E,F}以{D}来代替则,因为CDEF相同,你也可以用C来代替。无所谓的最小化的DFA如图,: