Skip to content

NP 困难性

NP-hardness

NP 中每个语言都可多项式时间归约到目标问题。

条目类型
定义

形式陈述

在本页固定多项式时间 many-one 归约。语言 B 称为 NP-hard,若

ANP:AmpB.

也就是说,NP 中每个语言都可通过同一类型的多项式时间归约转换到 B。量词中的归约函数可以依赖语言 A,但对该 A 的所有输入必须是一台统一算法;不能为每个实例另选一个知道答案的变换。

定义只给出困难性下界,不要求 BNP,也不要求 B 可判定。对搜索、函数或优化任务使用“NP-hard”时,必须另行说明如何把 NP 语言归约到相应输出接口;本页公式本身只适用于判定语言。

直觉

NP-hard 表示目标足以承载整个 NP:若 B 有确定性多项式判定器,每个 NP 语言都能先翻译成 B 再调用该判定器,于是 P=NP。这个名称没有提供 B 的上界,因而不保证短证书、可判定性或属于任何特定复杂度类。

证明困难性时,箭头要从已知困难源指向新目标。目标看起来组合爆炸、某个程序运行很慢、或启发式经常失败,都不是归约证明;这些观察没有把任意 NP 实例统一编码进目标。

例子与边界

从一个已知困难语言传递困难性

C 已知 NP-hard 且 CmpB,则对任意 ANP

AmpCmpB.

归约的传递性于是证明 B NP-hard。反向证明 BmpC 只给出使用 C 解决 B 的方法,无法把 C 的下界传回 B

NP-hard 目标可以不可判定

在 Cook–Levin 定理给出 SAT 的 NP-hardness 后,可把公式 φ 映到机器 Mφ 与空输入。Mφ 忽略输入,依次枚举 φ 的全部赋值;发现满足赋值就停机,全部尝试失败后则永久循环。写出包含 φ 的机器描述只需多项式时间,并且

φSATMφ,εHALT.

因此 HALT 是 NP-hard,却不可判定,当然不属于 NP。这个例子也表明归约算法只写程序描述,并没有先运行指数枚举来获知答案。

优化问题需要说明接口

旅行商的阈值语言询问“是否存在总权重至多 K 的巡回”,可以直接套用判定语言定义。若有精确最优化算法,计算最优值后与 K 比较即可解决阈值版,所以通常也称旅行商最优化 NP-hard;严格说,这里使用的是从判定到函数输出的归约,而不是把优化任务本身当作 NP 中的语言。

推论与应用

若 NP-hard 语言 B 属于 P,就立即推出 P=NP;在尚未解决 P 与 NP 之前,NP-hardness 不是无条件的超多项式时间下界。反过来,即使假设 P=NP,也只会让 NP 内的问题拥有多项式算法,不会让 HALT 这类 NP-hard、类外且不可判定的目标变得可解。

若在困难性之外再证明 BNP,就得到NP 完全性。近似、参数化、计数和学习问题还需各自保存误差、参数、输出或分布接口的归约;某个训练程序慢或某条精确 ERM 路径困难,不能替代这些证明义务。

参考资料
  • Richard M. Karp, “Reducibility Among Combinatorial Problems,” in Complexity of Computer Computations, Plenum Press, 1972, pp. 85–103.
  • 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, §§5.1 and 7.4.
关系图谱12 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

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