簡體   English   中英

我如何將正則表達式轉換為有限自動機?

[英]How would I convert regular expression to finite automata?

如何將以下正則表達式更改為有限自動機?

(abUb)(bUaaa)b*b((a*b)*Ub)*

注意:在這種情況下,U表示聯合

這個正則表達式有五個頂級連接組件。 根據可以從Kleene定理的一部分中恢復的算法,你可以為這些算法制作NFA-Lambdas,然后通過將一個的最終狀態連接到下一個的初始狀態來形成連接。

當你看到一個聯合時,這意味着你制作兩台機器並通過一個帶有兩個lambda轉換的新啟動狀態來組合它們。

Kleene閉包更多涉及,但基本上使機器重復,然后通過從舊的最終狀態添加一個新的接受啟動狀態和循環來轉換它。

基本情況是單個字母的機器,它是兩個狀態,初始和最終,具有適當標記的轉換。

從最簡單的機器(最里面的子表達式)到整個事物遞歸地工作,根據需要組合。 盡可能簡化結果,可能轉換為最小DFA。

有一個名為Automatic Java Code Generator for Regular Expressions and Finite Automata的應用程序,可自動生成給定正則表達式或有限自動機的NFA,DFA(包括轉換表)和Java代碼。 可以從以下鏈接下載: www.s-solutions.info您可以隨時檢查您的解決方案是否正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM