DFA最小化實例


原始DFA如下圖所示

最小化的定義:
1.沒有多余的狀態(死狀態);
2.沒有兩個狀態是相互等價的;

兩個狀態等價的含義:
1.兼容性(一致性)——同是終態或同是非終態;
2.傳播性(蔓延性)——從s出發讀入某個a和從t出發經過某個a並且經過某個b到達的狀態等價。

令M為DFA中所有狀態的集合。
1.開始做粗略划分,將狀態集M的狀態划分為,
k1 = {C, D, E, F}
k2 = {S, A, B}
2.考察k1是否可分,由下面的轉換關系k2可以分為{S, B}和{A}。
A -> a -> k1
S -> a -> k2
B -> a -> k2

3.對於{S, B}有下面的轉換關系,可以划分為{S}和{B}
B -> b -> k1
S -> b -> k2

4.考察k1,對於經由a和b,到達的狀態都是屬於k1,所以不可再分。

對於是否可以再分,有一個形式化的定義,
  任意的c屬於字符集合Σ,si經由c到達sx,以及sj經由c到達sy,那么sx和sy均屬於的狀態集合pt。如果有任何狀態sk屬於pt,dk經由c到達dz,dz不屬於pt,那么dk不能再繼續留在pt中。

5.狀態集k1采用狀態C來替代,當然可以使用k1中其他狀態來替代,得到如下的最小DFA,

參考:

http://leaver.me/archives/369.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM