“第一项给出上界:是实例有多项式长度、可在多项式时间验证的证书。第二项就是NP 困难性,给出下界:整个 NP 都可归约到 $B$。两项彼此独立;只有同时成立时,目标才是“NP 内的 NP ha…”
形式陈述
在本页固定多项式时间 many-one 归约。语言
也就是说,NP 中每个语言都可通过同一类型的多项式时间归约转换到
定义只给出困难性下界,不要求
直觉
NP-hard 表示目标足以承载整个 NP:若
证明困难性时,箭头要从已知困难源指向新目标。目标看起来组合爆炸、某个程序运行很慢、或启发式经常失败,都不是归约证明;这些观察没有把任意 NP 实例统一编码进目标。
例子与边界
从一个已知困难语言传递困难性
若
归约的传递性于是证明
NP-hard 目标可以不可判定
在Cook–Levin 定理给出 SAT 的 NP-hardness 后,先在多项式时间内检查输入是否为合法公式编码;不合法时,输出一台固定的永久循环机器与空输入,作为 HALT 的否实例。合法公式
因此 HALT 是 NP-hard,却不可判定,当然不属于 NP。这个例子也表明归约算法只写程序描述,并没有先运行指数枚举来获知答案。
优化问题需要说明接口
旅行商的阈值语言询问“是否存在总权重至多
数值编码下的弱困难与强困难
讨论数值问题时,必须区分对象结构和整数大小。以显式物品表、作业表或图为结构部分,另记录非负整数参数;二进制表示数值
在这样的数值问题框架中,强 NP-hard 表示即使将数值限制在结构规模的某个固定多项式范围内,限制后的判定语言仍 NP-hard。必须指出这一限制和仍成立的归约;并非“数比较大所以很难”。如果一个伪多项式算法在上述小数值子族上运行,那么一元输入长度已是结构规模的多项式,算法就会成为该 NP-hard 子族的多项式算法。因此,强 NP-hard 与伪多项式精确算法同时存在会推出 P=NP。
0–1 整数背包是典型的弱 NP-hard 数值问题:它在二进制编码下 NP-hard,却有 完整容量 DP所示的伪多项式算法。在 P≠NP 假设下,这也排除了该数值模型中的强困难性。“弱”不是“容易”的同义词,也不能从任何一个指数算法反推出弱困难;困难性仍须有独立归约。不要把“不是强 NP-hard”一般性地当作“必有伪多项式算法”的证明。
这一结论不应与“强多项式算法”混淆。后者讨论算术操作次数对数值编码大小的依赖,并另控中间数位长;它是算法资源保证,而强 NP-hard 是某个数值受限问题仍困难的归约性质。对有理数还必须说明分子、分母和统一缩放的编码,不能把整数参数的一元化定义直接搬过去。
强困难性排除 FPTAS 时还要检查目标值界。已有 缩放条目保留了所需的量化论证:在仍困难的整数目标子族上,若
推论与应用
若 NP-hard 语言
若在困难性之外再证明
参考资料
-
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.
-
Erik Demaine,MIT 6.890 Lecture 2: 3-Partition,2014,讲义中的 weak/strong NP-hard 与 pseudopolynomial 编码区分。
-
Anupam Gupta,Mihir Kedia 记录,15-854 Lecture 10: Dynamic Programming,2005,§10.3.1,Definitions 10.3.4–10.3.5:一元编码、伪多项式和强困难。本页精度间隙采用旧缩放页的
,不沿用讲义边界处的严格不等式。