更具体地说,为什么有一个TM接受并停止P中的任何补语? 我明白,有一个TM拒绝来自P的语言L,但为什么必须有一个TM接受L的补充?
答案 0 :(得分:4)
简单解决方案:让L成为接受语言L的图灵机M的原始语言。要计算L补码,创建一个新机器M',使得M'与M相同,除了我们将所有转换切换到M的接受状态为“拒绝状态”,并且所有转变为拒绝状态(或“畸形过渡”)到接受状态。
M'的运行时间与M的运行时间相同。当M拒绝/接受时,它将接受/拒绝。
一位评论者问我是否能提供直觉,说明为什么这对NP和co-NP不起作用。这有助于从库克 - 莱文定义的语言L在NP中开始,这允许明确定义语言L'在共同NP中。 (使用基于非确定性图灵机的定义使得co-NP的定义更加困难)
在Cook-Levin定义中,语言L在NP中,如果我们有一个“验证”图灵机V,使得对于L中的所有字符串S,有一个多项式长度有界证书字符串C,这样V接受对(S,C)(将V视为双磁带输入机器,或者将其视为接受输入对的编码)。当然,我们还要求V在多项式时间内完成验证。
例如,对于3SAT语言,字符串S将是3SAT问题实例语句,而证书C将是变量的真值分配。验证者V将查看真值分配,并检查3SAT问题实例的每个子句是否都使用该真值分配进行验证。
因此简洁地说明了NP中的语言L是通过验证图灵机V来描述的,我们说:
所以为了描述补语,我们有:
如果我们想像NP和co-NP一样'尝试相同的技巧',就像我们对P vs co-P所做的那样,那么机会并不能很好地表现出来。我们要么想要一个确定性的图灵机来完全解决每个实例的语言(并且可能没有多项式时间运行界限),或者我们需要看看我们是否可以通过将技巧应用于V来使其工作如果我们只是交换验证机器V的结果,我们仍然需要检查每个可能的证书C,以查看V是否真的不接受给定的字符串S.