[英]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
是您已經弄清楚的第一個序列(從q0
到q6
所有內容,而沒有從q6
返回q0
的d
路徑)。
出現d
,基本上您將再次需要上述序列。 包含d
的序列的第二個實例可以重復任意次,因此您可以使用*
量詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.