[英]State Elimination DFA to Regular Expression
有一種更廣為人知且可理解的算法可以完成此任務。
要將DFA G轉換為正則表達式,我們首先將G轉換為“ GNFA”。 假設G是以下DFA(q是開始狀態):
將DFA轉換為GNFA的過程如下:
這是生成的GNFA:
然后,我們一次刪除介於新的開始狀態和新的接受狀態之間的每個狀態,並調整圖表以保持正確性。 該過程的工作方式如下:令x,y和z為DFA中的狀態。 另外,轉換如下:輸入a上的x-> y,輸入b上的y-> y和輸入c上的y-> z。 假設我們要刪除y。 對於從某個節點n到y的每個過渡以及從y到m的每個過渡,我們必須添加一個新的過渡n-> m。 從n到m的過渡將是從n到y的過渡的內容,然后是帶有kleene星的過渡y-> y的內容,然后是從y-> m的過渡的內容。 在這種情況下,a上的x-> y,b上的y-> y和c上的y-> z,在刪除狀態y之后, a(b*)c
上a(b*)c
x-> z會發生轉變。
這是我們完整的正則表達式。 使用此過程可以完全避免您面臨的任何問題。 但是,我也會為您提供直接答案。 對於初學者來說,上面的部分不是您建議的。 相反,它將變為: 簡化為:
這是我們最終的正則表達式,因為底部沒有接受狀態,因此無關緊要。
您從(q0)狀態開始,如果u輸入(0),則可以到達最終狀態; 相反,如果u輸入(1),則無法到達final。 因此,僅考慮狀態(q0)(q1)(q2),並對這些狀態應用消除規則
消除后,RE將如下
0(0)*1 . (1+0(0)*1)*
從0開始到1結束
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.