編譯原理-DFA的化簡(最小化)


對於給定的DFA    M,尋找一個狀態數比M小的DFA    M'使得L(M)=L(M')

1.狀態的等價性:

假設s和t為M的兩個狀態

①若分別從狀態s和狀態t出發都能讀出某個字α而停止於終態,則稱s和t等價

②存在一個字α,使得s和t一個讀出α停止於終態,另一個讀出α停止於非終態,則稱s和t可區別

2.基本思想:

①把M的狀態集分為一些不相交的子集,使任何兩個不同子集狀態是可區別的,而同一子集的任何兩個狀態是等價的

②讓每個子集選出一個代表,同時消去其他狀態

3.划分

①把S划分為終態和非終態兩個子集,形成基本划分∏

②假定某個時候∏已含m個子集,記為∏={I(1),I(2),…,I(m)},檢查∏中的每個子集能否進一步划分:

    (a)假定s1和s2是I(i)={s1,s2,…sk}中的兩個狀態,它們經過a弧分別到達t1和t2,而t1和t2屬於現行∏中的兩個不同子集,則s1和s2不等價

 

    (b)一般地,對於某個I(i),若Ia(i)落於現行∏中N個不同的子集,則應把I(i)划分成N個不相交的組

例:


免責聲明!

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



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