本页目录

计算理论 II · 复杂度理论

对标:Sipser 第 7–10 章 / Arora–Barak Computational Complexity前置:toc-01、algo-03(NP 归约) 可计算性问"能不能算",复杂度理论问"要多少资源"。这一页把 P、NP 放进更大的复杂度类地图里,讲清它们的结构关系,并触及现代复杂度的深水区(随机、空间、交互、PCP)。这是一门"用资源丈量难度"的几何学。

1. 时间复杂度类与 P vs NP 的结构

P vs NP:验证容易 \(\Rightarrow\) 求解容易?普遍相信 \(P\ne NP\),但没有证明——这是克雷千禧难题,也是整个算法领域"何时该放弃找多项式算法"的信仰基础。\(P=NP\):密码学崩塌、优化/AI/数学证明搜索全部平凡化——所以它不只是学术问题。

关键结构事实

2. 空间复杂度:另一根资源轴

时间–空间的层级总览

\[ L\subseteq NL\subseteq P\subseteq NP\subseteq PSPACE\subseteq EXP \]

其中已知 \(P\subsetneq EXP\)(时间层级定理——更多时间严格能做更多事,用对角线证),所以这条链里至少有一处严格,但我们不知道是哪处——"链上每个 \(\subseteq\) 是否 \(\subsetneq\)"几乎全是未解之谜,复杂度理论的谦卑就在这里。

复杂度类包含关系地图

图 toc-02.1复杂度类地图——L、NL、P、NP、PSPACE、EXP 的已知包含,以及 NPC、coNP、BPP、IP 的位置。

3. 随机与交互:更宽的世界

PCP 定理(复杂度的珠峰):每个 NP 证明都能改写成一种格式,验证者只随机读常数个比特就能以高概率判对错。推论:许多问题连近似都 NP 难(algo-03 的不可近似性下界全部来自这里)。这是"验证的局部性"的深刻定理。

4. 细粒度复杂度:P 内部的战争

现代算法研究的新前线:已经是多项式的问题,指数还能不能再降? 例:编辑距离经典 \(O(n^2)\),能否 \(O(n^{1.9})\)细粒度归约表明——若能,则 SAT 有 \(2^{0.99n}\) 算法(违反强指数时间假设 SETH)。于是 \(O(n^2)\) 很可能是编辑距离的天花板,理由是一个关于 SAT 的猜想。这门学问给"为什么这个多项式算法快不起来"提供了 NP 理论那样的硬下界语言,是当前算法理论最活跃的方向之一。

5. 练习与要点

例 1(验证 vs 求解的直觉) 数独:填好的盘验证只需 \(O(n^2)\),但求解一般盘是 NPC——"改卷比考试容易"就是 \(P\overset?=NP\) 的日常版。把这个直觉刻进去,很多问题的难度你能秒判。

数独验证容易求解困难的 P vs NP 直觉

图 toc-02.2验证 vs 求解——填好数独后检查很快,但从空盘搜索解一般要面对组合爆炸。

例 2(博弈更难) 单人谜题(数独、扫雷判定)多在 NP;双人博弈(广义国际象棋、围棋的判定版)常 PSPACE 完全或更高——"对手会最优应对"这一层量词 \(\forall\) 让问题跳档。这解释了为什么博弈 AI 比谜题求解器难得多。

例 3(去随机化的赌注) 若你相信 \(P=BPP\),那么 algo-03 里所有随机算法原则上都有等效的确定性版本——只是我们还不会写。"随机性是本质的还是仅仅方便的"至今悬而未决,这是理论与实践张力的一个漂亮缩影。\(\blacksquare\)


下一页:密码学 I——把 P vs NP 的"难"变成"安全":对称加密、公钥与数论基础。