編譯原理--NFA/DFA


現成的, 講義:

https://www.cnblogs.com/AndyEvans/p/10240790.html

https://www.cnblogs.com/AndyEvans/p/10241031.html

 

一個例子, 寫得非常好. 一下子就全明白了, 尤其是像我這種沒有聽過編譯原理課程的人.

https://blog.csdn.net/tyler_download/article/details/53139240

上一節提到過,當處於某個指定狀態時,如果該狀態有ε邊,那么,不需要吸收任何字符,就可以從該狀態轉換到ε邊所指向的狀態。

一開始,狀態機處於起始狀態12,

在狀態12,通過ε邊可直達狀態2,6,

在狀態2,可以通過ε邊,直達狀態0,3. 也就是說,當處於狀態12時,通過ε邊的連接,可以同時抵達狀態的集合是 {12,2,6,0,3}。

通過一個狀態,推算出它能同時抵達的狀態集合,這個狀態集合稱作ε閉包集合,這種運算稱之為ε閉包運算
ε-closure(12) = {12, 2, 6, 0, 3}.

 

接下來讀入字符1,我們從閉包集合中看看,哪個狀態節點有能夠吸收數字的轉換邊。從上圖觀察,我們發現,

狀態6和0,擁有吸收數字字符的轉換邊。

狀態6吸收一個數字字符后,跳轉到狀態7,

狀態0吸收字符1后,跳轉到狀態1,

這樣我們可以說,狀態集合{12, 2, 6, 0, 3} 在吸收字符1后,跳轉到集合{1,7},

后面這個集合{1,7},我們稱為轉移集合(move set), 我們把這種跳轉運算標記如下:
move({12, 2, 6, 0, 3}, D} = {1, 7}.

非常好!!!

---------------------
作者:tyler_download
來源:CSDN
原文:https://blog.csdn.net/tyler_download/article/details/53139240
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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