固定数量箱子的装箱问题再探讨
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 J′r 放入箱子 bK+1。
5. 对于一个预分配方案,得到一个可行的 K + 1 个箱子的装箱方案(由于 OPT (I) = K,这样的方案是存在的)。将舍入后的物品替换为其原始尺寸,然后通过贪心算法将小物品分配到箱子 b1, …, bK+1 中。
下面是该算法的流程图:
graph TD;
A[设置 x = 4, y = 2,划分物品集 I] --> B[分配大物品到 K 个箱子];
B --> C[对中等物品尺寸进行几何舍入];
C --> D[使用动态规划分配中等物品];
D --> E[放入 ∪j J′r 到 bK+1];
E --> F[得到 K + 1 个箱子的可行方案];
F --> G[替换舍入物品为原始尺寸];
G --> H[贪心算法分配小物品];
超级会员免费看
订阅专栏 解锁全文
2231

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



