確定有窮自動機的化簡(最小化)

理論上可以證明,每一個正則集合可以由一個狀態數最小的DFA識別,且這個DFA是唯一的。本博客將介紹如何把一個DFA的狀態數化簡到最小,而不影響接受的語言。

化簡的DFA:當且僅當它沒有多余狀態并且它的狀態集中沒有兩個狀態是相互等價的。

等價狀態:是指對于DFA中所有狀態s和t,對于所有輸入符號c,存在Ic(s)=Ic(t),即狀態s,t具有相同的后繼,則稱s和t是等價的。

狀態s和t等價的條件是:

(1)一致性條件:狀態s和t必須同時為接受狀態和不接受狀態。(是否屬于終止狀態集)
(2)蔓延性條件:對于所有輸入符號,狀態s和t必須轉換到等價狀態里。

下面介紹一種具體的DFA化簡方法——分割法。

Sample:

已知一個確定的有窮自動機M=({0,1,2,3,4,5}, {a,b}, δ, 0, {0,1}),其中δ見表

狀態 a b
0 1 2
1 1 4
2 1 3
3 3 2
4 0 5
5 5 4

Step 1:

根據一致性條件,將狀態分為兩類。0,1屬于終止狀態集,歸為一類,其他歸為另一類。

狀態 a b 類別
0 1(A) 2(B) A
1 1(A) 4(B) A
2 1(A) 3(B) B
3 3(B) 2(B) B
4 0(A) 5(B) B
5 5(B) 4(B) B

Step 2:

根據蔓延性條件,對狀態進行再分類。由上圖可以看出:2,4屬于同一類;3,5屬于另一類。

狀態 a b 類別
0 1(A) 2(B) A
1 1(A) 4(B) A
2 1(A) 3(C) B
3 3(C) 2(B) C
4 0(A) 5(C) B
5 5(C) 4(B) C

然后我們再進行檢查,發現A,B,C三類中狀態都已等價(每一個狀態都有相同的后繼)。如果不等價,則按照剛才方法進行再分。

所以我們得到的最小化DFA為M'=({A,B,C}, {a,b}, δ,A,{A}),其中δ見表

狀態 a b
A A B
B A C
C C B
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,178評論 6 13
  • 《裕語言》速成開發手冊3.0 官方用戶交流:iApp開發交流(1) 239547050iApp開發交流(2) 10...
    葉染柒丶閱讀 27,859評論 5 19
  • sketch 中文手冊 Blender 是一款開源的跨平臺全能三維動畫制作軟件,提供從建模、動畫、材質、渲染、到音...
    冰J冰閱讀 302評論 0 0
  • 第八條 對象等同性 A==B 比較A、B的兩個指針本身,即完全是同一個返回YES,否則為NO isEqualToS...
    NapoleonY閱讀 137評論 0 0
  • 親愛的老爸: 今天是教師節哦,你和老媽是我人生中的最初、最重要的老師,先謝謝二位。 你教給我的一切,足以讓我受用一...
    老爸我很想你閱讀 121評論 0 1