Turing Machine是否可以确定NFA是否接受一串素数的字符串?


14

我想知道以下问题是否可以解决:

实例:具有n个状态的NFA A

问题:是否存在一些质数p,使得A接受长度为p的字符串。

我认为这个问题无法确定,但我无法证明。决策者可以轻松地拥有一种算法来确定特定数字是否为质数,但是我不知道它如何能够足够详细地分析NFA以确切知道它可以产生多少长度。它可以开始使用NFA测试字符串,但是对于无限的语言,它可能永远不会停止(因此不是决定者)。

当然,如果解决方案需要,则可以将NFA轻松更改为DFA或正则表达式。

这个问题是我一直在思考的一个自我准备问题,我将在两周内提出最后一个问题。


我不确定这是否是本科级别的,所以不用担心将其删除。它可能变成是一个困难的问题,例如见terrytao.wordpress.com/2007/05/25/...

好吧,我做了,所以可能很难。我没有发现涉及NFA / DFA的无法确定的问题的任何证据,这就是为什么我认为尝试其中一个可能很有趣的原因。

我相信您链接到的是一个不同的(较容易的)问题。它可以回答“ NFA接受多少个长度为x的字符串?”。使用提供的公式,我们将不得不检查许多实例,以查看是否存在NFA接受的长度为素数的字符串。我不是在问某个特定的素数,而是在问所有这些素数。s大号ñ

Answers:


17

DFA接受的字符串的长度形成一个半线性集合(如在上下文无关语言的帕里克定理中一样),对它们的描述并不难得出(基本上是拼接自动机的所有可能循环),然后Dirichlet定理gcd a b = 1的形式任何算术级数中都包含无穷素数。一种+bķ光盘一种b=1个

综合以上内容,可以得出一种算法,以检查您的常规语言(甚至是无上下文语言)是否包含素数字符串。绝对不是一个简单的问题,IMVHO ...


在这种情况下,我将非常感谢您对理解帕里克定理的帮助。显然,我们不使用PDA中的堆栈就可以将NFA变成PDA。线性子集是否指定周期?如果是这样,那该如何运作?
Chill 2013年

1
ķķ

1
我认为这回答了我的问题。我将尝试阅读有关帕里克定理的更多信息。我了解它的想法以及在这种情况下它如何指定周期。我想找出的是一个更“动手”的解决方案,在该解决方案中,我将制定一个实际的算法来解决此问题。
Chill 2013年

@Chill,看看我以前的评论。只需将DFA上的符号以图形的形式擦除并检查起始状态和最终状态之间的走动,就可以对可能的长度进行描述。很难形式化,对于任何给定的示例,都很容易手动找出来。
vonbrand 2013年

3
@dkuper,不是那么简单。常规语言是无限的,但不包含素数字符串。一种一种一种一种一种一种
vonbrand
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.