你如何确定一种语言是否属于NP?

时间:2011-12-08 04:41:01

标签: computer-science turing-machines np

例如,我知道那种语言 enter image description here

CFL的泵浦引理没有上下文,但我怎么能证明它属于NP而不是exp。时间,可判定的语言,或图灵可识别?

编辑:做了一些挖掘,我做了一个疏忽是NP中的问题是那些在多项式时间内可以通过非确定性图灵机验证的问题。我怎么会知道:      a:在多项式时间内存在该语言的验证者      和b:NDTM可以识别它

1 个答案:

答案 0 :(得分:2)

  

但我怎么能证明它属于NP而不是exp。时间,可判定的语言,或图灵可识别?

你不能,因为那不可能发生。 NP中的每种语言都在EXPTIME中,是可判定的,并且是图灵可识别的。当且仅当存在多项式p和PTIME语言L'时,L在NP中

  

L in L当且仅当存在长度为p(| x |)的y使得(x,y)为L'时

要显示NP是EXPTIME的子集,请注意可以对所有可能的y进行强力搜索。每个EXPTIME语言都明显可以判断和识别。

现在,关于显示L属于NP的语言的问题:尝试想出一种方法,对于L中的每个x,您可以写下它属于L的“证明”或“证书”这样的证书不应该存在于x而不是L中,并且该证书是正确的应该是有效可验证的(在多项式时间内)。证书的长度本身应该是x长度中的多项式。

当然,究竟如何做到这取决于特定的语言L.许多NP问题被称为搜索(存在)问题:这个图是否具有哈密顿循环,这个布尔公式是否具有令人满意的赋值,依此类推。在这种情况下,证书的选择通常是明确的,可以将证书作为被搜索的东西(汉密尔顿路径或满足分配本身)。需要检查给定图形和所谓的哈密顿路径,可以检查它是否实际上是多项式时间中的哈密顿路径,或者给定公式和所谓的满意分配,可以检查它是否实际上是多项式中令人满意的赋值时间。这通常很容易显示。

请注意,P是NP的子集(只需取证书的任何内容,证书检查器可以在多项式时间内解决原始问题)。你要求的语言,{a ^ n b ^ n c ^ n | n> = 0}很容易在P中(因此在NP中)。

相关问题