我有2个最小化的DFA,我需要检查它们是否相同。
如果它们是等价的,问题是找到一个有效的状态比较,无论不同的标签。在我的情况下,DFA是表格,然后我需要找到与第一个DFA行和第二个DFA行匹配的排列。
我还想到了DFA的广度优先搜索并创建状态的最小访问字符串,然后将第一个列表与第二个列表进行比较(这应该与特定输入无关,例如:001和110可以互换。)
我对直接和低效算法以及更复杂的算法感兴趣。
答案 0 :(得分:2)
正确的方法是构建另一个DFA: L3 =(L1-L2)U(L2-L1) 并测试L3是否为空。如果L3为空,则L1 = L2,否则L1< L2>
答案 1 :(得分:0)
我找到了这些算法:
- Symmetric difference
- Table-filling algorithm
- Faster Table-Filling algorithm O(n^2)
- Hopcroft algorithm
- Nearly Linear algorithm by Hopcroft and Karp
完整的参考资料是:
我接受了我的回答,因为@abbaasi的一个太不完整了。 我将接受任何其他答案并做出重大贡献。
答案 2 :(得分:0)
我记得最低DFA是唯一的。因此,如果您有2个最小化的DFA,我认为您只需检查它们是否相同。