編譯原理之非確定的自動機NFA確定化爲DFA

1.設有 NFA M=( {0,1,2,3}, {a,b},f,0,{3} ),其中 f(0,a)={0,1}  f(0,b)={0}  f(1,b)={2}  f(2,b)={3}

   畫出狀態轉換矩陣,狀態轉換圖,並說明該NFA識別的是什麼樣的語言。

 

 

 語言爲:(a|b)*abb

 

2.NFA 確定化爲 DFA

1.解決多值映射:子集法

1). 上述練習1的NFA

 

 

2). 將下圖NFA 確定化爲 DFA

 

 

 

 

 

2.解決空弧:對初態和所有新狀態求ε-閉包

1).

 

    圖轉換爲矩陣:

 

 

    狀態轉換圖:

     

 

    識別語言爲:0*(11*2 | 2)2*

 

 

2)

     

 

    圖轉換爲矩陣:

    

 

    此矩陣相當於

 

對此矩陣畫出狀態轉換圖

     

 

 

子集法:

f(q,a)={q1,q2,…,qn},狀態集的子集

將{q1,q2,…,qn}看做一個狀態A,去記錄NFA讀入輸入符號之後可能達到的所有狀態的集合。

步驟:

1).根據NFA構造DFA狀態轉換矩陣

①確定DFA的字母表,初態(NFA的所有初態集)

②從初態出發,經字母表到達的狀態集看成一個新狀態

③將新狀態添加到DFA狀態集

④重複23步驟,直到沒有新的DFA狀態

2).畫出DFA

3).看NFA和DFA識別的符號串是否一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章