“也就是说,对每个 $L\in\mathbf{NP}$,存在多项式时间随机验证者和多项式长度的只读证明 $\pi$:长度为 $n$ 的输入上使用至多 $c\log n$ 个随机 bit,非自适…”
形式陈述 ​
NP 首先是多项式非确定时间的并集:
因此,一个语言
NP 还有等价的验证器定义。存在多项式
使
从验证器到机器时,非确定地猜至多
直觉
NP 的存在量词只对“是”实例作出承诺:若
验证器负责核对已经给出的候选,不负责找到候选。非确定机器只是把“存在证书”写成分支语义,并未描述现实硬件如何并行尝试所有字符串。证书方向的这种不对称,正是 NP 与coNP需要分开定义的原因。
例子与边界
Hamilton 环证书 ​
对无向图
若
证书接口的边界 ​
证书长度必须由输入长度的同一个多项式控制,验证器还须对错误、过长或格式非法的候选正常停机。只说“正确证书上运行很快”不足以证明 NP 成员性;把一个指数长计算历史交给线性时间检查器也不合格,因为证书本身已超出长度预算。
NP 只包含判定语言。搜索任务需要输出见证,通常放在 FNP 等函数类中;优化任务要通过阈值判定语言或专门的优化归约与 NP 联系。某些自归约问题可以借助多次判定调用恢复见证,但这属于额外结构,不是 NP 定义自动赠送的算法。
推论与应用
确定性计算是不分支的非确定性计算,所以
NP 完全性利用这种闭合性识别 NP 内足以承载所有 NP 语言的目标;coNP 则把短证书放在否实例一侧。后续的 PCP、不可近似性和参数化复杂度会改变验证访问方式或算法参数,但阅读它们时仍要保留本页三个基准:对象是编码语言,证书长度按输入长度计,验证器对所有候选都在多项式时间内停机。
参考资料
- 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.