问题陈述 :
让 是一个(可能不确定的)下推自动机,让 是其输入字母。有话吗 圣 被接受 ?
这个问题NP是否完整?已经研究过了吗?有没有算法可以找到这样的单词?
问题陈述 :
让 是一个(可能不确定的)下推自动机,让 是其输入字母。有话吗 圣 被接受 ?
这个问题NP是否完整?已经研究过了吗?有没有算法可以找到这样的单词?
Answers:
计算CFG语言与常规语言的交集 (这等于将状态数乘以 并添加“终止”状态)。现在检查结果是否为空:将其转换为语法(我认为结果将具有多项式大小)并从epsilon生成中“回溯”。
编辑:Kaveh提到这是多项式 , 因此,如果 作为输入给出,该算法在 。但是,Kaveh找到了一种解决方法。将原始自动机转换为CFG,并用固定端子替换所有端子。现在,使用迭代算法查找由每个非终端生成的单词的最小大小,如下所示。
初始化所有长度 ,然后以明显的方式迭代更新所有长度:给定生产 (顺序无关紧要),放 。声明:这收敛于迭代,其中是非终结点的数量。原因是在生成最小长度字的树中,没有两次使用非终结符。每个“边缘”最多需要进行一次迭代处理(某些边缘可以并行“更新”)。
将所有字母字符更改为单个特定字符。现在,您已经在单个字符上定义了PDA。它的语言是上下文无关的语法。但是,关于单个字符的上下文无关语法是正常的。因此,将CFG转换为常规语言,然后检查它是否包含长度为k的单词。
现在,所有这些转换趋向于需要指数时间,但是在我看来,这个问题不太可能是NP完整的。特别是如果您允许以多项式时间。
我可能是错的,对于最初的简短回答我深表歉意...
顺便说一句,CFG在单个字母上是规则的事实来自于帕里克定理。虽然直接证明并不太难。有关帕里克定理的更多详细信息,请参见链接-这是一个美丽的结果... http://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf
可能不是最理想的方法:运行Djikstra的算法。然后,对于每个最终状态,将距离与进行比较。如果有,请接受。拒绝。
编辑:以上仅适用于NFA!对于那个很抱歉。