固定数量箱子的装箱问题再探讨
1. 装箱算法概述
当最优装箱方案所需箱子数 OPT (I) = K 时,装箱算法步骤如下:
1. 设置 x = 4,y = 2,将物品集合 I 划分为三个组:Ilarge(大物品组)、Imedium(中等物品组)和 Ismall(小物品组)。
2. 考虑所有可行的预分配方案,将大物品分配到 K 个箱子中。
3. 对中等物品的尺寸进行几何舍入。对于每个区间 (2−(r+1), 2−r],对物品集 Ir 应用线性分组,组大小为 ⌈2r / (x log(K))⌉,并计算舍入后的物品集 Jr 和 J′r。
4. 对于每个预分配方案,使用动态规划将 Jr 中的中等物品分配到箱子 b1, …, bK 中,并将 J′r 放入箱子 bK + 1。
5. 对于某个预分配方案,得到一个可行的 K + 1 个箱子的装箱方案(由于 OPT (I) = K,必然存在这样的方案),将舍入后的物品替换为其原始尺寸,然后使用贪心算法将小物品分配到箱子 b1, …, bK + 1 中。
2. 装箱问题的参数化难度
目标是证明一元装箱问题(Unary Bin Packing)在以箱子数量 k 为参数时是 W[1]-难的。在这个版本的装箱问题中,给定一组用一元编码的整数物品尺寸,以及两个整数 b 和 k,任务是判断这些物品是否能装入 k 个容量为 b 的箱子中。
为了证明该问题的 W[1]-难,引入了一个中间问题,即涉及固定长度 c 的向量和不同尺寸箱子的一元向量装箱问题(Unary Vector Bin Packing)。
对于固定的 c,定义 c - 一元向量装箱问题如下:给定一组 n
超级会员免费看
订阅专栏 解锁全文
2234

被折叠的 条评论
为什么被折叠?



