NFA是否接受另一个NFA的子集,是否有有效的测试?


12

因此,我知道测试常规语言是否为常规语言的子集是可以确定的,因为我们可以将它们都转换为DFA,计算,然后测试该语言是否为空。小号ř ˉ 小号RSRS¯

但是,由于这需要转换为DFA,因此DFA以及测试算法可能就输入NFA中的状态数而言呈指数关系。

在多项式时间内有已知的方法吗?总的来说,该问题是否已被证明是Co-NP完整的?

请注意,问题出在Co-NP中,因为而不是接受的单词将是的多项式证明者。RSRS

编辑:这是不正确的,因为不能保证这样的单词在状态数上将是多项式。


1
这是理论问题还是实践问题?有时,对于实践中遇到的特定输入“分布”,Pspace完全问题可能在P时间内“可运行”。
vzn13年

理想情况下,这是理论上的,但是我正在研究的证据在很大程度上受计算机测试的驱动,这意味着快速算法肯定会有用。
jmite

因此,是的,有一个相当不错的straightfwd算法,该算法可以通过仅跟踪两台机器中的每台机器的并行转换并跟踪结果状态集来工作,这有点类似于std确定算法。不知道它在文学中是否在某个地方,它是如此简单以至于它是假定的。您已经在使用某种算法了吗?如果您引用它会很有帮助。另外,有关输入类型的更多详细信息将很有帮助。听起来您还想确定两个NFA的交集是否为空?您是否想要路口的语言,或者是非空,仅是Y / N?
vzn13年

我只是在寻找,如果它是空的,这个想法被我找如果来测试,如果。并行转换算法有效,我认为最困难的部分是获得NFA的称赞,您必须先转换为DFA。我现在使用的算法只是蛮力,因为我只处理有限的语言。RS={}RS
jmite 2013年

相信有一种方法可以遍历这两个NFA,而无需转换为DFA 1st,甚至可以找到一个。但还没有在裁判中看到它。
vzn13年

Answers:


15

决定NFA中语言包含的问题是 -complete。为了证明这一点,可以很容易地减少NFA的通用性问题(测试),因此,在某种程度上,您必须确定,但您可以即时进行确定。PSPACEL(A)=Σ

您对co-NP的观察是错误的(但很好)。确实可以在多项式时间内在证人中检查这样的证人,但是最短的证人本身在输入长度上可能是指数的。由于,因此确定不包含也是 -complete。PSPACE=coPSPACEPSPACE

为了更仔细地陈述情况,请确定是否为大小的(因为仅需要补码)和是否为大小。L(A)L(B)PSPACEBBNLOGSPACEA


你是绝对正确的。我一直在处理我所说的特定类别的NFA,但绝对不能与一般的无限NFA一起使用。谢谢!
jmite

您不会引用证明它是PSPACE完整的论文或教科书,对吗?
jmite

1
这不是一个非常详细的证明,但我认为它可以做到:witching.weizmann.ac.il/~vardi/av/notes/lec4.ps
Shaull


3

AT&T FSM库是在线上可用的最好,最全面,最先进和高度优化的免费FSM库之一。它完全按照您的描述实现“ fsmdifference”,需要确定的无εFSM来实现。一种想法是在进行差异处理之前最小化一个或两个FSM,这在某些情况下可能会有所帮助。(即确定与最小化是不同的。)此程序包还具有“近似”或“贪婪”最小化,旨在比完全最小化更快。

但是,通过研究类似的问题,我认为,文献中没有出现一些FSM的概括或构建,它们可以通过避免确定步骤(即,在不创建其他确定的FSM的情况下基本上反转NFA)来帮助解决此问题。想法是“平行”遍历NFA边缘,并像标准确定算法一样,跟踪属于当前“超状态”(状态集)的节点集。然后,当且仅当当前超状态节点集“全部不接受”时,NFA补语接受(与接受“任何接受”的确定性构造相反)。

但是,我以前没有看过这篇文章,也没有通过快速的在线搜索看到它。有许多参考文献暗示或暗示,与NFA补充互补一起工作的唯一方法是确定它。

这是两个“附近”参考,可能对某些想法有用。我希望听到任何“更紧密”的消息。您提到您正在从事程序验证,这可能是对该问题进行更直接研究的领域。

[1] 使用Z表示法 Nazir Ahmad Zafar,Nabeel Sabir和Amir Ali 构造不确定的有限自动机的交点

[2] 无限词的不确定自动机的补充构造 Orna Kupferman和Moshe Vardi

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.