可以使用O(n 2)时间和空间来计算具有n个状态的两个(最小)DFA的交集。通常,这是最佳的,因为生成的(最小)DFA可能具有n 2个状态。但是,如果所得的最小DFA具有z个状态,其中z = O(n),是否可以在空间n 2-eps中对某个常数eps> 0进行计算?即使对于输入DFA为非循环的特殊情况,我也会对这样的结果感兴趣。
可以使用O(n 2)时间和空间来计算具有n个状态的两个(最小)DFA的交集。通常,这是最佳的,因为生成的(最小)DFA可能具有n 2个状态。但是,如果所得的最小DFA具有z个状态,其中z = O(n),是否可以在空间n 2-eps中对某个常数eps> 0进行计算?即使对于输入DFA为非循环的特殊情况,我也会对这样的结果感兴趣。
Answers:
答案是肯定的,对自动机的大小没有任何要求。即使对于为常数的 DFA,也可以在空间中进行计算。
令 (为 DFA。我们发现,鉴于,计算最小DFA识别可以做到空间。我们首先证明一些技术成果。我∈ [ ķ ] )ķ ⟨ 阿1,... ,甲ķ ⟩ 大号(阿1)∩ ⋯ ∩ 大号(甲ķ)Ô (log 2 n )
定义1:设为两个状态,则 iff,q ≡ [R ∀ w ^ ∈ Σ * q 。w ^ ∈ ˚F ⇔ [R 。w ^ ∈ ˚F
现在我们考虑经典笛卡尔积构造给出的自动机令和为状态。q = (q 1,... ,q k)r = (r 1,... ,r k)A
引理1:确定是否在NL中。
证明(草图):我们证明测试不等式在NL中,并使用NL = coNL。猜一个单词(当时一个字母),使是最终状态,不是。这可以通过计算来实现在对数空间中,并使用是最终的iff的事实。可以证明,表示存在一个多尺寸的。 q 。w ^ [R 。w ^ q 我。w ^ ,[R 我。瓦特我∈ [ ķ ] q q 我 ∈ ˚F 我w ^
引理2:确定是否可访问是在NL中。
证明(草图):猜测从到(多尺寸)路径()。q 我我∈ [ ķ ]
定义2:按字典顺序考虑的状态。将定义为第一个可访问状态,并将为之后的一个可访问状态,这不等于任何先前状态。我们将定义为唯一的,使得。小号(1 )小号(我)小号(我- 1 )C ^ (q )我q ≡ 小号(我)
引理3:可以在空间中计算。O (log 2 n )
证明(草图):定义2产生算法。我们使用计数器对状态进行迭代。令和为当前状态。在每个状态下,我们使用引理2来验证是否可访问。如果是,则循环遍历每个先前的状态,并验证它们是否等于。如果没有任何,我们增加和输出如果。否则,我们将存储为然后继续。由于我们只存储恒定数量的计数器,因此可以在Ĵ ← 0 q q q Ĵ q Ĵ = 我q 小号(Ĵ )NL ⊆ DSPACE (登录2 Ñ ),这就完成了证明。
推论1:可以在空间中计算。O (log 2 n )
定理:最小化可以在空间中完成。O (log 2 n )
证明(草图):设是最大的使得被定义(即所述的类数)。我们给出了一种输出自动机,其中我小号(我)≡ 甲' = (Q ',Σ ,δ ',ž ',˚F ')
现在我们展示如何计算。对于每个,计算并输出过渡。根据引理3和推论1,此算法在空间中运行。可以检查最小并且。我∈ [ 米] ,一个∈ Σ q ← 小号(我)。一个(小号(我),一个,小号(Ç (q ))) ø (日志2 Ñ )甲'大号(甲')= 大号(甲)
迪克·利普顿(Dick Lipton)和他的同事最近致力于解决这个问题,而利普顿(Lipton)在这里写了一篇博客:
http://rjlipton.wordpress.com/2009/08/17/on-the-intersection-of-finite-automata/
即使在确定DFA交集是否定义空语言的特殊情况下,似乎比O(n ^ 2)还好。
本文给出了复杂性后果,这是由于改进的算法不仅处理交叉路口中的2个DFA,而且处理大量数字所导致的。
如果为您提供了k个DFA(k是输入的一部分),并且想知道它们的交集是否为空,那么这个问题通常是PSPACE完全的:
Dexter Kozen:自然证明系统的下界FOCS 1977:254-266
也许,如果您仔细研究此证明(以及Lipton和他的合著者的类似构造),那么即使对于固定的k,也可能会发现某种空间下界。
给定两个接受有限语言的自动机,(非循环自动机),的状态复杂度在(1)中。这个结果也适用于一元DFA(不一定非循环)(2)。但是,您似乎在谈论计算两个自动机的交点所需的空间。我看不到使用笛卡尔积的经典构造如何使用空间。您需要的是恒定数量的对数计数器。在为新状态计算转换函数时,只需扫描输入,而无需查看任何先前生成的数据。乙大号(甲)∩ 大号(乙)Θ (|甲|·&|乙|)ø (Ñ 2)(q ,- [R )
也许您想输出最小的自动机?如果是这样,那么我不知道是否可以实现。有限语言的交集的状态复杂性似乎并不令人鼓舞。但是,一元DFA具有相同的状态复杂度,我认为可以使用这种自动机来实现。通过使用(2)的结果,您可以获得识别交点的自动机的确切大小。该大小由尾巴的长度和循环来描述,因此,由于结构完全由这两个大小来描述,因此可以很容易地以很少的空间来计算过渡函数。然后,您要做的就是生成最终状态集。令为结果自动机中的状态数,然后对于所有,状态1 ≤ 我≤ Ñ 我一个我甲乙如果被和都接受,则是最终状态。该测试可以用很少的空间进行。