1
A
回答
2
他們都是正確的,因爲你說。
第一個看起來像是使用一套標準規則生成的 - 在這種情況下,它是過度殺傷(而且看起來很傻),但在更復雜的情況下,遵循簡單的規則比保存整個事物更容易在你的腦海中,從頭開始編寫相應的NFA。一般來說,NFA可以被重寫,使其具有單一的最終狀態(顯然已經只有一個起始狀態)。
然後,可以將這種形式的兩個NFA組合起來,使得它們組合時所接受的語言是它們單獨接受的語言的聯合 - 這對應於正則表達式中的或(+
)。爲了以這種方式組合NFA,只需創建一個新節點作爲起始狀態,並將它與ε轉換連接到兩個NFA的開始狀態。我們創建了一個額外的節點來作爲統一的最終狀態,並且爲了使NFA在單個最終狀態下完整地結束(這樣我們可以使用這個NFA遞歸地用於其他工會,如果我們想要的話)將舊的最終狀態(即失去其最終狀態)連接到它。
使用上面的一般規則,很容易得出第一個圖(兩個NFA聯合在一起,第一個匹配的0
,另一個1
) - 第二個很容易通過常識到達,因爲它非常簡單正則表達式;-)
0
第一個構造屬於帶有電子移動的NFA類,它是一般NFA類的擴展。電子移動讓您無需輸入即可進行轉換。對於轉換函數,僅使用電子轉換來計算從給定狀態可達到的狀態集非常重要。顯然,添加電子移動不允許NFA接受非正規語言,因此它最終等同於NFA和DFA。
Thompson的構造算法使用NFA與電子移動從任何正則表達式構建自動機。它提供了一個標準的方法來構建一個自動機從正則表達式時,它可以方便地自動化施工。
相關問題
- 1. 轉換RE - > NFA
- 2. 將NFA轉換爲DFA
- 3. 將nfa轉換爲dfa
- 4. NFA轉換爲DFA
- 5. 如何將NFA/DFA轉換爲java?
- 6. 將正則表達式轉換爲NFA轉換表
- 7. 如何將PCRE轉換爲POSIX RE?
- 8. 轉換DFA到RE
- 9. 如何將NFA轉換爲正則表達式?
- 10. 將字符集轉換爲nfa/dfa的高效算法
- 11. 如何將NFA轉換爲正則表達式
- 12. 用於將NFA轉換爲DFA的Java庫
- 13. 將點星正則表達式轉換爲NFA
- 14. 用於將NFA轉換爲DFA的僞代碼
- 15. 如何將(ab u aab u aba)*轉換爲NFA?
- 16. 如何將正則表達式轉換爲NFA?
- 17. 將正則表達式轉換爲NFA的庫?
- 18. NFA/DFA可變轉換條件
- 19. 如何爲NFA製作狀態轉換表?
- 20. NFA到DFA的轉換,其語言爲L的(A)補
- 21. NFA轉化爲DFA =確定性?
- 22. 將正則表達式轉換爲nfa的有條不紊的方法?
- 23. 從PHP轉換RE代碼到Python
- 24. cx_Freeze python exe轉換沒有模塊命名爲「re」
- 25. NFA DFA和正則表達式轉換表
- 26. 帶lambda轉換的NFA讓我們做什麼?
- 27. 所有上下文無關語法都可以轉換爲NFA/DFA嗎?
- 28. 將MS Access.adp轉換爲ASP.Net轉換:DLookup轉換爲SQL
- 29. 將值轉換爲%
- 30. 將PeriodIndex轉換爲
非常感謝你...我喜歡你的回答..清楚,我需要知道的東西:) – a1204773
@Loclip:沒問題:-) – Cameron