![](/img/trans.png)
[英]If NFA and DFA were equivalent, why would we have two engines for regex?
[英]Check if 2 minimum DFA are equivalent
我有 2 個最小化的 DFA,我需要檢查它們是否相等。
如果它們是等價的,那么問題是找到一個有效的狀態比較,而不考慮不同的標簽。 在我的情況下,DFA 是表,然后我需要找到將第一個 DFA 的行與第二個 DFA 的行相匹配的排列。
我還想對 DFA 進行廣度優先搜索並創建一個狀態的最小訪問字符串,然后將第一個列表與第二個列表進行比較(這應該與特定輸入無關,例如:001 和 110 可能是可互換)。
我對直接和低效的算法以及更復雜的算法都很感興趣。
正確的做法是構造另一個 DFA,其中: L3=(L1-L2) U (L2-L1) 並測試 L3 是否為空。 如果 L3 為空,則 L1=L2,否則 L1<>L2
我找到了這些算法:
- Symmetric difference
- Table-filling algorithm
- Faster Table-Filling algorithm O(n^2)
- Hopcroft algorithm
- Nearly Linear algorithm by Hopcroft and Karp
一個完整的參考是:
我接受了我的回答,因為@abbaasi 中的一個太不完整了。 我會接受任何其他有重大貢獻的答案。
我記得最小 DFA 是唯一的。 因此,如果您有 2 個最小化的 DFA,我認為您只需要檢查它們是否相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.