編譯原理隨堂作業八—非確定的自動機NFA確定化為DFA


NFA 確定化為 DFA

子集法:

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

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

步驟:

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

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

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

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

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

2.畫出DFA

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

 

練習:

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

1). 發給大家的圖1

新狀態      a b
0 0 {0,1} 0
1 {0,1} {0,1} {0,2}
2 {0,2} {0,1} {0,3}
3 {0,3} {0,1} 0

 

 

 

 

 

 

 

 

 

2). P64頁練習3

 

新狀態   0 1
0 S {V,Q} {Q,U}
1 {V,Q} {V,Z} {Q,U}
2 {Q,U} V {Q,U,Z}
3 {V,Z} Z Z
4 V Z  
5 Z Z Z
6 {Q,U,Z} {V,Z} {Q,U,Z}

 

 

 

 

 

 

 

 

 

 

 

 

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

1). 發給大家的圖2

新狀態   0 1 2
0 ε{A}={A,B,C} ε{A}={A,B,C} ε{B}={B,C} ε{C}={C}
1 ε{B}={B,C}   ε{B}={B,C} ε{C}={C}
2 ε{C}={C}     ε{C}={C}

 

 

 

 

 

 

 

 

2).P50圖3.6

新狀態   a b
A ε{0}={01247} ε{38}={124678} ε{5}={124567}
B ε{38}={124678} ε{38}={124678} ε{59}={1245679}
C ε{5}={124567} ε{38}={124678} ε{5}={124567}
D ε{59}={1245679} ε{38}={124678} ε{5,10}={124567 10}
E ε{5,10}={124567 10} ε{38}={124678} ε{5}={124567}

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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