簡體   English   中英

DFA轉正則表達式

[英]DFA to regular expression

我已經閱讀了一些關於靈魂的技巧和教程,尤其是關於Stackoverflow的教程,但是在解決特定問題上無濟於事。 首先,我有以下DFA: 在此處輸入圖片說明

並可以將其簡化為:

在此處輸入圖片說明

這樣我在(aa | ba | cc)c處有正則表達式,但是缺少返回的d。 使用http://hackingoff.com/compilers/regular-expression-to-nfa-dfa進行了如此廣泛的檢查,它看起來就像我的起始DFA,但沒有d。 我做了很多嘗試,但是非常不確定如何將d寫入RE。

正如revo指出的那樣,您建議的順序不太正確。 正確的序列是(aa|ba|c)c

整個DFA的正則表達式版本(以編程語言顯示)為

/^(?:aa|ba|c)c(?:d(?:aa|ba|c)c)*$/

正式的正則表達式為

(aa|ba|c)c(d(aa|ba|c)c)*

(?:aa|ba|cc)c是您已經弄清楚的第一個序列(從q0q6所有內容,而沒有從q6返回q0d路徑)。

出現d ,基本上您將再次需要上述序列。 包含d的序列的第二個實例可以重復任意次,因此您可以使用*量詞。

暫無
暫無

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

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