DFA 的化简
任何正规语言都有一个唯一的状态数目最少的DFA
DFA M的化简是指:寻找一个状态数比M少的DFA M’,使得L(M)=L(M’)
有穷自动机的多余状态:从自动机的开始状态出发,任何可识别的输入串也不能到达的状态
化简了的DFA M’ 满足两个条件:
- 没有多余状态 ;
- 没有两个状态是等价的。
求解步骤
① 将DFA M的状态集Q分划成两个子集:终态集和非终态集;
② 对每个子集G,如果面对某个输入符号得到的后继状态不属于同一个子集,则将G进一步划分;
③ 重复②直到不再产生新划分;
④ 在每个子集中选一个状态作代表,消去其他状态,得到最少状态的等价DFA M’。
示例1
将下图的 DFA 最小化
解:根据规则 ① ,将DFA M的状态集Q分划成两个子集
- ∏ =({A,B,C,D},{E})
根据规则 ② ,因为 { A , B , C , D } a = { B } ⊆ { A , B , C , D } \{A,B,C,D\}_a=\{B\}⊆\{A,B,C,D\} { A,B,C,D}a={ B}⊆{ A,B,C,D}, 而 { A , B , C , D } b = { C , D , E } ⊄ { A , B , C , D } \{A,B,C,D\}_b=\{C,D,E\}⊄\{A,B,C,D\} { A,B,C,D}b={ C,D,E}⊄{ A,B,C,D}。因为 { A , B , C } b ⊆ { A , B , C , D } \{A,B,C\}_b⊆\{A,B,C,D\} { A,B,C