Skip to content

NP 困难性

NP-hardness

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

形式陈述

语言 B 称为 NP-hard,若

ANP,AmpB.

即 NP 中每个语言都能通过多项式时间 many-one 归约转换到 B。定义本身不要求 BNP,甚至不要求 B 可判定。

直觉

NP-hard 表示目标问题至少承载 NP 中所有问题的困难性:一旦能高效解决目标问题,就能在归约开销后高效解决全部 NP 问题。

例子与边界

证明 B NP-hard 时,应从已知 NP-hard 问题 A 构造 AmpB;若只证明 BmpA,只能说明 B 不比 A 更难。优化问题可称 NP-hard,但这里的形式定义先针对判定语言。

推论与应用

NP-hardness 是下界式分类工具。它与“实际运行慢”不同,也不等于已证明没有多项式算法;若 P=NP,NP-hard 且可判定的问题仍可能有多项式算法。

参考资料
  • Sanjeev Arora and Boaz Barak, Computational Complexity: A Modern Approach, Cambridge University Press, 2009,§2.1。
  • Richard M. Karp, “Reducibility Among Combinatorial Problems,” in Complexity of Computer Computations, 1972, pp. 85–103,Full chapter。