Skip to content

定义Definition

复杂度类 coNP

施工中 · 内容逐步修订

Complexity class co-NP · coNP

补语言属于 NP 的语言类。

形式陈述 ​

固定与 NP 相同、至少含两个符号的有限字母表 Σ。对语言 L⊆Σ∗,相对于同一全集的补语言为

L―=Σ∗∖L.

定义

coNP={L⊆Σ∗:L―∈NP}.

把NP的验证器定义代入可得:L∈coNP 当且仅当存在多项式 p 和多项式时间验证器 V,使

x∉L⟺∃c: |c|≤p(|x|) ∧ V(x,c)=1.

等价地,x∈L 时所有长度受限的候选都被 V 拒绝。coNP 因而给否实例短证书,而不是给是实例换一种名字。

直觉

前缀 co 表示对语言取补。NP 的存在证书站在是实例一侧;coNP 把同一套存在证书放到否实例一侧。直接交换一台非确定机器的接受和拒绝状态后,新机器仍按存在接受分支判定,所以它接受的条件是“至少一个分支原先拒绝”。补语言要求的却是“所有分支原先都拒绝”。例如原计算树同时有一条接受分支和一条拒绝分支,交换前后机器都会接受,因此这种交换不能直接判定补语言。

一个语言同时属于 NP 与 coNP,说明正反答案都各有短且可核验的证据。验证容易仍不等于寻找容易,因此这个交集并不自动等于 P;目前既不知道 NP 是否等于 coNP,也没有证明它们不同。

例子与边界

TAUT 的反例证书 ​

TAUT 收集对每个赋值都为真的布尔公式。公式不是重言式时,一份使它为假的赋值就是多项式长度证书。例如 p∨q 在 (p,q)=(0,0) 时为假,验证器代入两位即可确认它不属于 TAUT;而

(p∨¬p)∧(q∨¬q)

对四种赋值都为真,没有反例证书。这里让 TAUT、SAT 与 UNSAT 都只包含合法布尔公式编码,并使用多项式时间的语法检查。在全集 Σ∗ 中,非法编码也属于 TAUT 的补语言:补语言验证器先解析输入,非法编码直接接受,合法编码才核验使公式为假的赋值。因此 TAUT―∈NP,从而 TAUT∈coNP。同理,UNSAT 的补语言是 SAT 与非法编码集合的并;先解析,再对合法输入验证满足赋值,就证明 UNSAT 属于 coNP。这并不声称不可满足公式本身已有已知的一般多项式短证明。

已知包含与开放分离 ​

P 对补封闭,故

P⊆NP∩coNP.

从 L∈NP 不能推出 L∈coNP。素数判定曾因正反两侧都有精巧证书而成为交集中的典型例子,后来才由 AKS 算法证明属于 P;这个历史不能反向证明整个交集等于 P。

推论与应用

coNP 对多项式时间 many-one 归约的逆像封闭。若 A≤mpB 且 B∈coNP,同一个映射还满足

x∈A―⟺f(x)∈B―.

由于 B―∈NP,计算 f(x) 后验证其证书便知 A―∈NP,所以 A∈coNP。

这一步解释了重要的坍缩结论:若某个 NP-complete 语言 C 也属于 coNP,则每个 A∈NP 都归约到 C,从而都属于 coNP,即 NP⊆coNP;再对所有语言取补得到反向包含,于是 NP=coNP。多项式层级会把这一等式的影响继续传播到更高量词层。

参考资料
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009, §2.1.
  • Michael Sipser, Introduction to the Theory of Computation, 3rd ed., Cengage, 2013, §7.3.
关系图谱13 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系