形式陈述
从伪多项式算法出发
0/1 背包有物品 ,以二进制给出的非负整数重量 、价值 和容量 ,物品表显式列出。目标是在总重量不超过 时最大化总价值。按总价值做动态规划理路动态规划Dynamic programming在有限或良基的状态依赖上复用已计算结果的算法设计范式。的时间取决于 ,对数编码输入下只是伪多项式。
FPTAS 给定有理数 ,在输入长度与 的多项式时间内返回价值至少
的可行解。缩放的目的不是让价值“看起来更小”,而是把 DP 状态数变成由 控制。
选择可证明的缩放因子
先丢弃重量超过 的物品,并从现在起以 表示剩余件数。若 ,返回空集;否则令 为剩余物品的最大价值;若没有正价值可行物品,空集就是最优解。否则单个最大价值物品可行,所以
取
向下取整保证缩放值不会高估物品贡献。每个 ,故所有缩放价值之和至多 。
DP 接口与状态演化
令 表示前 个物品取得缩放总价值恰为 所需的最小重量。初始 ,其余为无穷大;转移为
若 ,选入项视为无穷大;所有有限项都只读取上一行,即使 也不重复使用同一物品。最后取满足 的最大 ,并沿各行父决策恢复物品集合。
状态范围 ,直接实现时间为 ,空间可用滚动数组降为 ;若要恢复解,则保存决策或采用重算策略。这些是表格访问、重量加法与比较的次数;完整父决策表占 空间。可把超过 的重量统一截为 ,每格只需 位。缩放因子和取整用有理整数算术精确计算,加入原输入与精度编码的多项式位成本后,仍满足 FPTAS 的联合多项式要求。
直觉
缩放用每件至多 的价值损失换取有限的整数状态空间。最优解至多含 件物品,所以总舍入损失至多 ;把 绑定到一个可证明不超过 OPT 的 ,就能同时控制误差比例与 DP 表宽度,而不是凭经验删去价值精度。
价值缩放、DP 窄化与误差界 图另取价值 、、,所以 ,缩放价值为 。例如配重量 和容量 ,三件都单独可行,。条末的 与 是最大总价值下标;若连同下标 计数,分别对应 与 格。
例子与边界
三件物品的可追踪例子
容量 ,物品 为
取 。此时 ,
缩放价值分别为 。
DP 发现第二、三件总重量 ,缩放总价值 ;第一件单独只有 12,因此返回后两件。其真实价值为 14。例子中它恰好是最优解,但 FPTAS 的一般保证只要求达到 。
舍入损失证明
设 是最优物品集,算法返回 。因为 DP 在缩放实例上最优且 仍满足重量约束,
又因 ,有
使用 与 ,得到
这一步解释了为什么必须给出 的下界关系。若随意以所有价值之和设 ,累计舍入损失可能大于 。
舍入方向与数值模型
最大化价值时向下取整便于控制“每件少于 ”的损失。最小化问题若照搬同一方向,可能让低估成本的解看似更优,证明方向需要重新设计。有限非负有理价值也可直接按同一公式得到整数 ;有理重量与容量可统一乘分母的最小公倍数,分母位长之和控制所得整数位长。此时原始价值本身不能直接作为整数 DP 下标,仍须先缩放取整。任意实数 oracle理路实数系Real number system · Ordered complete field满足序域公理与上确界完备性的数系。则是另一种计算模型,不能默认无限精度算术具有上述有限编码成本。
容量、重量无需按同一因子缩放;本构造保留原重量,因此返回解天然可行。若改为缩放重量,就必须另外处理容量超出或资源增广,保证形式会不同。
容量 DP 的编码账单理路复杂度类 PP · Polynomial time能由确定性算法在输入长度的多项式时间内判定的语言集合。在旧精确算法一侧给出全部状态与54位输入实例;阈值与见证恢复理路从优化阈值到最优见证Optimization to threshold decision · Binary search for optimum · 优化搜索判定归约在有限整数目标和显式上界下二分求最优值,再用受阈值约束的前缀恢复见证,分开核算数值范围与编码成本。用同一三件物品复算最优值14和选择011。共同终点再使用本页已有的 、缩放价值 与舍入证明,比较精确判定、近似输出和容量数值的三种成本。
推论与应用
PTAS、FPTAS 与困难边界
PTAS理路多项式时间近似方案Polynomial-time approximation scheme · PTAS对每个固定 ε>0 都在多项式时间内给出 1±ε 近似的算法族。只要求对每个固定 多项式,指数可以依赖 ;FPTAS 要求对 和 联合多项式。上面的 明确满足后者。
0/1 背包是弱 NP-hard,并有依赖数值大小的伪多项式 DP,正适合缩放。排除强 NP-hard 问题的 FPTAS 还要明确目标值的界。例如在一族仍 NP-hard 的受限整数最大化实例上,以 记完整编码长度,若已知 且 是正的多项式界,那么取 会让返回的整数价值距最优小于 ,因而必须精确最优;FPTAS 的时间在这一精度下仍为多项式。这才是在 假设下排除相应方案的量化理由,不能只凭“强 NP-hard”四个字省略目标编码与界。
参考资料
-
Oscar H. Ibarra and Chul E. Kim, Fast Approximation Algorithms for the Knapsack and Sum of Subset Problems, Journal of the ACM, 1975.
-
Vijay V. Vazirani, Approximation Algorithms, Springer, 2001.
-
Hans Kellerer, Ulrich Pferschy and David Pisinger, Knapsack Problems, Springer, 2004.
-
David P. Williamson、David B. Shmoys,The Design of Approximation Algorithms,2011,§3.1:按价值的动态规划、缩放取整与 FPTAS 证明;本页另外处理零重量、零价值和空输入。