如何将两个相交的DFA转换为最小DFA

时间:2015-03-03 19:05:51

标签: intersection dfa deterministic automaton

我有以下问题:有两个确定性有限自动机应该相交转换成一个最小确定性有限自动机。有算法吗?

the two DFAs

我知道我可以通过创建两个自动机的笛卡尔积并将结果转换为DFA来创建NFA,但这是一个耗时的过程。有没有更简单的方法来创建两个自动机的交集?

顺便说一句:这是解决方案: Solution

我尝试了我的方法,如下所述,但我无法想象如何获得解决方案:计算两个DFA的补充为我的两个新DFA提供了两个接受状态。现在我必须将它们结合起来并最小化它们,但是我可以从哪里获得第三个接受状态?

1 个答案:

答案 0 :(得分:1)

据我所知,没有“直接”算法可以实现这一目标。你可以通过

来做到这一点
  • 最小化两个输入DFA,
  • 计算他们的笛卡尔积(顺便说一下,产生另一个DFA,而不是NFA),然后
  • 尽量减少结果。

最小化两个输入DFA并非绝对必要,但它可以提高效率。如果你有一个n状态和一个m状态DFA,它们的笛卡尔积将具有O(mn)个状态。 DFA最小化算法在时间O(k 2 )中运行,其中k是DFA中的状态数,因此如果原始DFA具有n和m的大小,则计算笛卡尔乘积然后最小化将花费时间O(m 2 n 2 ),然后最小化,然后计算笛卡尔积,然后再次最小化需要时间O(m 2 + n 2 + m' 2 n' 2 ),其中m'和n'是最小化DFA的大小。

希望这有帮助!