NFA轉(zhuǎn)DFA的算法在編譯原理的課本上都有,只不過(guò)課本上的算法太拗口,不好記!我在這里邊說(shuō)的都很通俗,只要看得懂字的都會(huì)懂。在本篇文章里用一個(gè)例子來(lái)說(shuō)明怎么實(shí)現(xiàn)NFA轉(zhuǎn)DFA與DFA簡(jiǎn)化,NFA轉(zhuǎn)DFA會(huì)講的比較細(xì),DFA簡(jiǎn)化只是大概帶過(guò)。 有一個(gè)NFA,如圖: 要是想把NFA轉(zhuǎn)成DFA,首先需要構(gòu)造一張表(最主要的就是這張表),如圖: 上圖沒(méi)有給出全部的轉(zhuǎn)換關(guān)系,當(dāng)然,大家這么聰明,在看了構(gòu)造表的算法之后就會(huì)自己構(gòu)造轉(zhuǎn)換表了。構(gòu)造轉(zhuǎn)換表的算法如下(表中的第一列是給為化簡(jiǎn)的DFA狀態(tài)取的名字,第二列也是DFA中的狀態(tài),第三列和第四列是DFA在某一狀態(tài)在讀取a、b時(shí)跳轉(zhuǎn)到的狀態(tài)):
在構(gòu)造了表之后就可以通過(guò)這個(gè)表來(lái)構(gòu)造相應(yīng)的DFA了(有X的是初態(tài),有Y的是終態(tài)),在這里不再贅述怎么用表來(lái)構(gòu)造DFA。 在構(gòu)造了DFA之后就需要來(lái)化簡(jiǎn)它了,化簡(jiǎn)DFA的算法如下:
上述所說(shuō)的方法結(jié)合例子來(lái)看就更容易理解了! |
|
來(lái)自: 心靈地圖sxh > 《DFA and NFA》