补语言,而非类的外部

coNP是计算复杂度理论中的语言类。固定有限字母表Σ,语言A的补集是Σ*中不属于A的所有字符串;A属于coNP,当且仅当这个补语言属于NP。因此,coNP中的“co”作用于每一个语言的成员资格,而不是从所有问题中删去NP这一整类问题。两种取补对象不同,不能互换。

NP要求是实例存在多项式长度的证书,并能在输入长度的多项式时间内验证。把它用于A的补语言,得到coNP的等价说法:A的每个否实例都有这样的证书,而是实例不会有能通过否定核验的证书。这没有宣称是实例一定没有其他形式的简短证明。

参考:[1] [2]

从可满足性到重言式

可满足性问题SAT询问布尔公式是否存在使其为真的赋值。一组满足赋值便是肯定答案的证书。不可满足性问题UNSAT则询问不存在这种赋值;其否定答案有同一个简单证书,因此属于coNP。把一个满足赋值拿给核验器,证明的是“并非不可满足”,而不是不可满足。

重言式问题TAUT询问公式是否在所有赋值下都为真。若不是,给出一组使公式为假的赋值即可证伪。公式φ是重言式,当且仅当¬φ不可满足;这一变换只增加很少的符号。这里讨论一般布尔公式,不能不加区分地把不同受限范式的判定问题混为一谈。

参考:[1] [3]

交集与完全问题

确定性多项式时间类P对取补封闭:在一个总会停机的判定程序中交换接受与拒绝即可。因此P包含于NP与coNP的交集。交集中的语言,其是实例和否实例都具有可有效核验的短证书;但“双方可核验”本身并未给出寻找证书的快速算法,也没有证明这个交集就是P。

在多项式时间多一归约下,UNSAT是coNP完全的。原因是任意coNP语言的补语言都能归约到NP完全的SAT,同一个映射于是把原语言归约到UNSAT。完全性表达相对难度,并不等于已证明每个具体输入都难,也不是不可判定性的陈述。

参考:[1] [2] [3]

尚未解决的边界

NP与coNP是否相等仍未解决。若P=NP,由P的补封闭性便有NP=coNP;因此证明NP≠coNP会同时推出P≠NP。然而反过来,仅证明P≠NP并不能据此判定NP与coNP的关系。

非确定性机器也不能像确定性判定器那样,简单交换每条分支的接受与拒绝就获得补语言。原来“至少有一条分支接受”的否定是“所有分支都不接受”,不是“至少有一条分支拒绝”。存在与全称的区别,正是两类问题关系中的关键。

参考:[1] [3]