Strip packing-面料裁剪问题
Strip Packing问题的基本描述
本文的主要来源:Survey on two-dimensional packing
在二维Strip Packing问题中,有一块宽度为W且高度无限的布,一个有多个矩形的集合,集合中的矩形最大宽度不超过W。
目标: 在这块布上裁剪出所有的矩形形状,使得所用布的高度最小。
要求: 裁剪矩形的时候,既不能重叠,也不能卷边。
在此描述几个有效的算法(离线方式 off-line )。这些算法一般是通过高度降序来排列,也因此得名Decreasing Height (DH) 算法。更一般的,这些算法是分级排列的(Level Oriented)。
对于一个实例I,有一个近似算法A, A(I)代表所用布的高度,OPT(I)代表算法的最优解。下面的描述中,总的strip的宽度和每个矩形的宽度都进行一个标准化,使其总长度为1。
First-Fit Decreasing Height (FFDH) algorithm
FFDH在第一层裁剪下一个部件R (高度不上升的方式),R的高度是合适的。如果没有一层能够容纳R,则开辟一个新的层。
FFDH的时间复杂度:O(n·log n)
FFDH的高度:FFDH(I)<=(17/10)·OPT(I)+1
渐进约束:17/10
Next-Fit Decreasing Height (NFDH) algorithm
Best-Fit Decreasing Height (NFDH) algorithm
BFDH packs the next item R (in non-increasing height) on the level, among those that can accommodate R, for which the residual horizontal space is the minimum. If no level can accommodate R, a new level is created.
BFDH在第合适层裁剪下一个部件R (高度不上升的方式)。无合适的层容纳R,则开辟一个新的层。
FFDH的时间复杂度:?
FFDH的高度:?
渐进约束:?
未完待续,欢迎探讨补充