MathLabs
定理已证明

一个NP完全问题若易解则P与NP塌缩

命题陈述

若 BB 是NP完全的且 B∈PB \in P,则 P=NPP = NP。

为什么成立?

BB 的NP完全性意味着每个NP问题都可以在多项式时间内被改写为 BB 的一个实例。若 BB 本身能在多项式时间内求解,将改写步骤与求解步骤串联起来,就同样能在多项式时间内解出原来的NP问题——因此,只要有一个可行的(易解的)NP完全问题,就会把所有NP问题一起拖入P。

证明思路

设 BB 是NP完全的,且存在一个在时间 O(nk1)O(n^{k_1}) 内求解 BB 的算法。任取 A∈NPA \in NP;由 BB 的NP完全性可知 A≤pBA \le_p B,即存在一个在时间 O(nk2)O(n^{k_2}) 内可计算的归约函数 ff,把 AA 的实例映射为 BB 的实例,同时保持是/否答案不变。

对 AA 的一个长度为 nn 的输入 xx,先计算 f(x)f(x):这需要时间 O(nk2)O(n^{k_2}),特别地输出 f(x)f(x) 的长度至多为 O(nk2)O(n^{k_2})(多项式时间算法写出的输出不能比其运行时间更长)。然后在 f(x)f(x) 上运行求解 BB 的多项式时间算法:由于 ∣f(x)∣=O(nk2)|f(x)| = O(n^{k_2}),这需要时间 O((nk2)k1)=O(nk1k2)O\big((n^{k_2})^{k_1}\big) = O(n^{k_1 k_2})。

总运行时间为 O(nk2)+O(nk1k2)=O(nk1k2)O(n^{k_2}) + O(n^{k_1 k_2}) = O(n^{k_1 k_2}),仍是关于 nn 的多项式(两个多项式的复合仍是多项式)。由归约的正确性,xx 是 AA 的「是」实例当且仅当 f(x)f(x) 是 BB 的「是」实例,因此这一组合过程能在多项式时间内正确判定 AA。

由于 A∈NPA \in NP 是任意的,每个NP问题都有多项式时间算法,即 NP⊆PNP \subseteq P。结合恒成立的包含关系 P⊆NPP \subseteq NP,即得 P=NPP = NP。

用到此定理的主题

分步证明

该定理暂无分步证明。

参考文献

  1. Stephen A. Cook (1971). The Complexity of Theorem-Proving Procedures · DOI:10.1145/800157.805047
  2. Michael Sipser (2012). Introduction to the Theory of Computation
  3. Michael R. Garey, David S. Johnson (1979). Computers and Intractability: A Guide to the Theory of NP-Completeness
  4. Clay Mathematics Institute (2000). P vs NP Problem