[英]how can I simplify a regular expression generated from a DFA
我嘗試使用Java實現Brzozowski代數方法,以生成給定DFA接受的語言的正則表達式。生成的表達式是正確的但不是簡化的。
例如: E|(E)e(e)|(A|(E)e(A))(A|e|(B)e(A))*(B|(B)e(e))|(B|(E)e(B)|(A|(E)e(A))(A|e|(B)e(A))*(E|(B)e(B)))(B|e|(E)e(B)|(A|(E)e(A))(A|e|(B)e(A))*(E|(B)e(B)))*(E|(E)e(e)|(A|(E)e(A))(A|e|(B)e(A))*(B|(B)e(e)))
(e = epsilon,E =空集)
而不是: (A|B)*AB
“傳遞閉包方法”返回幾乎相同的結果。
其中一個解決方案包括最小化自動機,但我認為它太重了,無法生成簡化的正則表達式。
另外,使用Java正則表達式方法來簡化正則表達式根本不是很好:)。
所以,嘗試幫助我找到解決方案會很高興。
對的,這是可能的。 看看這篇Peter Norvig的文章 。 哦! 還有第二部分 。 解決方案是在python中,但您可以輕松地進行調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.