簡體   English   中英

檢查 2 個最小 DFA 是否相等

[英]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.

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