令为NFA 作为输入给出的两种常规语言。
假设我们想检查是否。显然,这可以通过计算的乘积自动机的二次算法来完成,但是我想知道是否有更有效的方法。
是否有一个算法用于判定是否?什么是最快的已知算法?
令为NFA 作为输入给出的两种常规语言。
假设我们想检查是否。显然,这可以通过计算的乘积自动机的二次算法来完成,但是我想知道是否有更有效的方法。
是否有一个算法用于判定是否?什么是最快的已知算法?
Answers:
答案很简单:如果确实存在着一个更高效的算法,在运行的时间对于一些δ < 2,那么强大的指数时间的假设将被推翻。
我们将证明一个更强的定理,然后将给出简单的答案。
定理:如果我们能够解决相交非空问题两个DFA的的时间,那么这就是非确定性可解使用的存储器仅n位的任何问题是确定性地可解p ø 升ý (Ñ )⋅ 2 (δ ñ / 2 )的时间。
理由:假设我们能够解决在路口非空虚两个DFA的的时间。给出具有只读输入带和读/写二进制工作带的非确定性图灵机M。给出长度为n的输入字符串x。假设M对二进制工作磁带的访问量不超过n位。
输入x上M的计算可以由配置的有限列表表示。每种配置均由状态,输入磁带上的位置,工作磁带上的位置以及代表工作磁带的最多n位内存组成。
现在,考虑将工作带分成两半。换句话说,我们的左边为单元格和n的右边部分格。每种配置都可以分为左部分和右部分。左侧片由状态的,对输入的磁带的位置,工作磁带上的位置,并且Ñ左部分 2位。右件由状态,所输入的磁带的位置,工作磁带上的位置,并且Ñ右边部分的 2位。
现在,我们建立状态为左件的DFA 和状态为右件的DFA D 2。字母字符是说明将进入哪种状态,磁带头应如何移动以及如何操作工作磁带的活动单元的指令。
这个想法是和D 2读入与输入x上的M的计算相对应的指令列表,并一起验证该指令是否有效并可以接受。既d 1和d 2将始终同意其中磁带头是因为该信息被包括在它们的输入的字符。因此,我们可以有d 1验证该指令是在适当的时候工作磁带位置是在左片和d 2验证在正确的时片。
在总共有至多状态为每个DFA和至多p Ô 升ý (Ñ )不同的字母字符。
由最初的假设,接下去我们能够解决相交非空两个DFA的在的时间。
您可能会发现这很有帮助:https : //rjlipton.wordpress.com/2009/08/17/on-the-intersection-of-finite-automata/
使用内存的位可解决CNF-SAT ,其中k是变量的数量。前述结构可用于显示,如果我们能够在解决相交非空两个DFA的ø (Ñ δ)在时间上,那么就可以解决CNF-SAT p Ö 升ý (Ñ )⋅ 2 (δ ķ / 2 )时间。因此,简单的答案成立。
欢迎提出评论,更正,建议和问题。:)