Skip to content

定义Definition

复杂度类 NP

NP · Nondeterministic polynomial time

由正实例拥有多项式长度、可在多项式时间内验证的证书所刻画的语言类。

形式陈述 ​

沿用非确定时间类的固定有限输入字母表 Σ,要求 |Σ|≥2,通常取二进制字母表。NP 首先是多项式非确定时间的并集:

NP=⋃k≥1NTIME(nk).

因此,一个语言 L⊆Σ∗ 属于 NP,当且仅当某台非确定机器在所有分支均为多项式长度的前提下,以“存在接受分支”判定 L。这里直接使用了非确定性时间类的统一最坏时间量词。

NP 还有等价的验证器定义。证书可统一用二进制字母表 Γ={0,1} 编码。存在多项式 p 和确定性算法

V:Σ∗×Γ∗→{0,1},

使 V 对任意 (x,c) 都在 |x|+|c| 的多项式时间内停机,并且

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

从验证器到机器时,先非确定选择一个不超过 p(|x|) 的长度,再猜相应数量的证书符号,最后运行 V。长度选择不能变成无上界的“继续猜或停止”,否则会出现无限分支,违反统一时间界。从机器到验证器时,把每一步采用的非确定选择编码进 c,确定性重放该分支。固定机器的分支度有限,而分支长度为多项式,所以选择序列也是多项式长度;这给出了两个定义的证明骨架。

NP 的证书与验证器刻画
直觉

NP 的存在量词只对“是”实例作出承诺:若 x∈L,至少有一份短证据可以快速检查;若 x∉L,所有短候选都会失败。它不是“非多项式时间”的缩写,也没有断言成员问题必须耗费指数时间。

验证器负责核对已经给出的候选,不负责找到候选。非确定机器只是把“存在证书”写成分支语义,并未描述现实硬件如何并行尝试所有字符串。证书方向的这种不对称,正是 NP 与coNP需要分开定义的原因。

例子与边界

Hamilton 环证书 ​

采用简单无向图中环至少含三个不同顶点的约定。对 G=(V,E),验证器先在 |V|<3 时拒绝;其余情形,判定语言 HAM-CYCLE 的证书可以是顶点排列 (v1,…,v|V|)。验证器检查每个顶点恰出现一次,再检查

{vi,vi+1}∈E(1≤i<|V|),{v|V|,v1}∈E.

若 E={12,23,34,41,13},证书 (1,2,3,4) 逐项通过;而星图 K1,3 的叶子度数为 1,不可能出现在经过每个顶点一次的环上,因而没有任何排列会通过。验证一个排列只需多项式时间,但定义并未提供寻找该排列的确定性多项式算法。

证书接口的边界 ​

证书长度必须由输入长度的同一个多项式控制,验证器还须对错误、过长或格式非法的候选正常停机。形式定义只使用长度不超过 p(|x|) 的证书;可把验证器正规化为发现超长就拒绝,使不存在用超长串绕过可靠性的歧义。

Hamilton 环例子里,若图有 N 个顶点,证书要记录 N 个编号,位长度为 O(Nlog⁡N),而不是只说“有 N 个对象所以长 N”。检查重复编号即使逐对比较也只用多项式时间,因而证明 NP 成员性不依赖最优化的数据结构。只说“正确证书上运行很快”不足以证明 NP 成员性;把一个指数长计算历史交给线性时间检查器也不合格,因为证书本身已超出长度预算。

NP 只包含判定语言。搜索任务需要输出见证,通常放在 FNP 等函数类中;优化任务要通过阈值判定语言或专门的优化归约与 NP 联系。某些自归约问题可以借助多次判定调用恢复见证,但这属于额外结构,不是 NP 定义自动赠送的算法。

推论与应用

确定性计算是不分支的非确定性计算,所以 P⊆NP;两者是否相等仍未知。NP 对多项式时间 many-one 归约的逆像封闭:先计算归约结果,再验证目标证书,输出长度与证书长度的多项式复合仍是多项式。

NP 完全性利用这种闭合性识别 NP 内足以承载所有 NP 语言的目标;coNP 则把短证书放在否实例一侧。后续的 PCP、不可近似性和参数化复杂度会改变验证访问方式或算法参数,但阅读它们时仍要保留本页三个基准:对象是编码语言,证书长度按输入长度计,验证器对所有候选都在多项式时间内停机。

Fagin 的描述复杂性刻画把短证书换成有限结构上若干猜测的关系表,再用固定一阶公式核验。三染色的完整 ESO 句子给出具体实例;固定元数保证关系表长度为多项式,显式域编码保证这个预算相对于输入位长仍成立。

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

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例

类型化关系