{{Short description|2D geometric minimization problem}} The '''strip packing problem''' is a 2-dimensional geometric minimization problem. Given a set of axis-aligned rectangles and a strip of bounded width and infinite height, determine an overlapping-free packing of the rectangles into the strip, minimizing its height. This problem is a cutting and packing problem and is classified as an ''Open Dimension Problem'' according to Wäscher et al.<ref>{{cite journal |last1=Wäscher |first1=Gerhard |last2=Haußner |first2=Heike |last3=Schumann |first3=Holger |title=An improved typology of cutting and packing problems |journal=European Journal of Operational Research |date=16 December 2007 |volume=183 |issue=3 |pages=1109–1130 |doi=10.1016/j.ejor.2005.12.047 |issn=0377-2217}}</ref>
This problem arises in the area of scheduling, where it models jobs that require a contiguous portion of the memory over a given time period. Another example is the area of industrial manufacturing, where rectangular pieces need to be cut out of a sheet of material (e.g., cloth or paper) that has a fixed width but infinite length, and one wants to minimize the wasted material.
This problem was first studied in 1980.<ref name=Baker1980>{{cite journal |last1=Baker |first1=Brenda S. |last2=Coffman Jr. |first2=Edward G. |last3=Rivest |first3=Ronald L. |title=Orthogonal Packings in Two Dimensions |journal=SIAM J. Comput. |date=1980 |volume=9 |issue=4 |pages=846–855 |doi=10.1137/0209064 |citeseerx=10.1.1.309.8883 }}</ref> It is strongly-NP hard and there exists no polynomial-time approximation algorithm with a ratio smaller than <math>3/2</math> unless <math>P = NP</math>. However, the best approximation ratio achieved so far (by a polynomial time algorithm by Harren et al.<ref name="Harren" />) is <math>(5/3 + \varepsilon)</math>, imposing an open question of whether there is an algorithm with approximation ratio <math>3/2</math>.
== Definition == An instance <math> I = (\mathcal{I},W)</math> of the '''strip packing problem''' consists of a strip with width <math>W = 1</math> and infinite height, as well as a set <math>\mathcal{I}</math> of rectangular items. Each item <math>i \in \mathcal{I}</math> has a width <math>w_i \in (0,1] \cap \mathbb{Q}</math> and a height <math>h_i \in (0,1] \cap \mathbb{Q}</math>. A packing of the items is a mapping that maps each lower-left corner of an item <math>i \in \mathcal{I}</math> to a position <math>(x_i,y_i) \in ([0,1-w_i] \cap \mathbb{Q}) \times \mathbb{Q}_{\geq 0} </math> inside the strip. An inner point of a placed item <math>i \in \mathcal{I}</math> is a point from the set <math>\mathrm{inn}(i) = \{(x,y) \in \mathbb{Q} \times \mathbb{Q}| x_i < x < x_i + w_i, y_i < y < y_i + h_i\}</math>. Two (placed) items overlap if they share an inner point. The height of the packing is defined as <math>\max \{y_i+h_i | i \in \mathcal{I}\}</math>. The objective is to find an overlapping-free packing of the items inside the strip while minimizing the height of the packing.
This definition is used for all polynomial time algorithms. For pseudo-polynomial time and FPT-algorithms, the definition is slightly changed for the simplification of notation. In this case, all appearing sizes are integral. Especially the width of the strip is given by an arbitrary integer number larger than 1. Note that these two definitions are equivalent.
== Variants == There are several variants of the strip packing problem that have been studied. These variants concern the objects' geometry, the problem's dimension, the rotateability of the items, and the structure of the packing.<ref>{{cite web |last1=Neuenfeldt Junior |first1=Alvaro Luiz |title=The Two-Dimensional Rectangular Strip Packing Problem |url=https://repositorio-aberto.up.pt/bitstream/10216/109367/2/234741.pdf |id=10820228}}</ref>
'''Geometry:''' In the standard variant of this problem, the set of given items consists of rectangles. In an often considered subcase, all the items have to be squares. This variant was already considered in the first paper about strip packing.<ref name="Baker1980" /> Additionally, variants where the shapes are circular or even irregular have been studied. In the latter case, it is referred to as ''irregular strip packing''.
'''Dimension:''' When not mentioned differently, the strip packing problem is a 2-dimensional problem. However, it also has been studied in three or even more dimensions. In this case, the objects are hyperrectangles, and the strip is open-ended in one dimension and bounded in the residual ones.
'''Rotation:''' In the classical strip packing problem, the items are not allowed to be rotated. However, variants have been studied where rotating by 90 degrees or even an arbitrary angle is allowed.
'''Structure:''' In the general strip packing problem, the structure of the packing is irrelevant. However, there are applications that have explicit requirements on the structure of the packing. One of these requirements is to be able to cut the items from the strip by horizontal or vertical edge-to-edge cuts. Packings that allow this kind of cutting are called guillotine packing.
== Hardness == The strip packing problem contains the bin packing problem as a special case when all the items have the same height 1. For this reason, it is strongly NP-hard, and there can be no polynomial time approximation algorithm that has an approximation ratio smaller than <math>3/2</math> unless <math>P = NP</math>. Furthermore, unless <math>P = NP</math>, there cannot be a pseudo-polynomial time algorithm that has an approximation ratio smaller than <math>5/4</math>,<ref name="Henning">{{cite journal |last1=Henning |first1=Sören |last2=Jansen |first2=Klaus |last3=Rau |first3=Malin |last4=Schmarje |first4=Lars |title=Complexity and Inapproximability Results for Parallel Task Scheduling and Strip Packing |journal=Theory of Computing Systems |volume=64 |pages=120–140 |date=2019 |doi=10.1007/s00224-019-09910-6|arxiv=1705.04587 |s2cid=67168004 }}</ref> which can be proven by a reduction from the strongly NP-complete 3-partition problem. Note that both lower bounds <math>3/2</math> and <math>5/4</math> also hold for the case that a rotation of the items by 90 degrees is allowed. Additionally, it was proven by Ashok et al.<ref>{{cite journal |last1=Ashok |first1=Pradeesha |last2=Kolay |first2=Sudeshna |last3=Meesum |first3=S.M. |last4=Saurabh |first4=Saket |title=Parameterized complexity of Strip Packing and Minimum Volume Packing |journal=Theoretical Computer Science |date=January 2017 |volume=661 |pages=56–64 |doi=10.1016/j.tcs.2016.11.034|doi-access=free }}</ref> that strip packing is [[Parameterized complexity | W[1]-hard]] when parameterized by the height of the optimal packing.
== Properties of optimal solutions ==
There are two trivial lower bounds on optimal solutions. The first is the height of the largest item. Define <math>h_{\max}(I) := \max\{h(i) | i \in \mathcal{I}\}</math>. Then it holds that
<math>OPT(I) \geq h_{\max}(I)</math>.
Another lower bound is given by the total area of the items. Define <math>\mathrm{AREA}(\mathcal{I}) := \sum_{i \in \mathcal{I}}h(i)w(i)</math> then it holds that
<math>OPT(I) \geq \mathrm{AREA}(\mathcal{I})/W</math>.
The following two lower bounds take notice of the fact that certain items cannot be placed next to each other in the strip, and can be computed in <math>\mathcal{O}(n \log(n))</math>.<ref name="MartelloExact">{{cite journal |last1=Martello |first1=Silvano |last2=Monaci |first2=Michele |last3=Vigo |first3=Daniele |title=An Exact Approach to the Strip-Packing Problem |journal=INFORMS Journal on Computing |date=1 August 2003 |volume=15 |issue=3 |pages=310–319 |doi=10.1287/ijoc.15.3.310.16082 |issn=1091-9856}}</ref> For the first lower bound assume that the items are sorted by non-increasing height. Define <math>k := \max \{i : \sum_{j = 1}^k w(j) \leq W\}</math>. For each <math>l > k </math> define <math>i(l) \leq k</math> the first index such that <math> w(l) + \sum_{j = 1}^{i(l)} w(j) > W</math>. Then it holds that
<math>OPT(I) \geq \max \{h(l) + h(i(l))| l >k \wedge w(l) + \sum_{j = 1}^{i(l)} w(j) > W\}</math>.<ref name="MartelloExact" />
For the second lower bound, partition the set of items into three sets. Let <math>\alpha \in [1, W/2]\cap \mathbb{N}</math> and define <math>\mathcal{I}_1(\alpha) := \{i \in \mathcal{I} | w(i) > W - \alpha\}</math>, <math>\mathcal{I}_2(\alpha) := \{i \in \mathcal{I} | W - \alpha \geq w(i) > W/2\}</math>, and <math>\mathcal{I}_3(\alpha) := \{i \in \mathcal{I} | W/2 \geq w(i) > \alpha \}</math>. Then it holds that
<math> OPT(I) \geq \max_{\alpha \in [1, W/2]\cap \mathbb{N}} \Bigg\{ \sum_{i \in \mathcal{I}_1(\alpha) \cup \mathcal{I}_2(\alpha)} h(i) + \left(\frac{\sum_{i \in \mathcal{I}_3(\alpha) h(i)w(i) - \sum_{i \in \mathcal{I}_2(\alpha)}(W -w(i))h(i)}}{W}\right)_+ \Bigg\}</math>,<ref name="MartelloExact" /> where <math>(x)_+ := \max\{x,0\}</math> for each <math>x \in \mathbb{R}</math>.
On the other hand, Steinberg<ref name="Steinberg" /> has shown that the height of an optimal solution can be upper bounded by
<math>OPT(I) \leq 2\max\{h_{\max}(I),\mathrm{AREA}(\mathcal{I})/W\}.</math>
More precisely he showed that given a <math>W \geq w_{\max}(\mathcal{I})</math> and a <math>H \geq h_{\max}(I)</math> then the items <math>\mathcal{I}</math> can be placed inside a box with width <math>W</math> and height <math>H</math> if
<math> WH \geq 2\mathrm{AREA}(\mathcal{I}) + (2w_{\max}(\mathcal{I}) - W)_+(2h_{\max}(I) - H)_+</math>, where <math>(x)_+ := \max\{x,0\}</math>.
== Polynomial time approximation algorithms == Since this problem is NP-hard, approximation algorithms have been studied for this problem. Most of the heuristic approaches have an approximation ratio between <math>3</math> and <math>2</math>. Finding an algorithm with a ratio below <math>2</math> seems complicated, and the complexity of the corresponding algorithms increases regarding their running time and their descriptions. The smallest approximation ratio achieved so far is <math>(5/3+\varepsilon)</math>.
{| class="wikitable" |+Overview of polynomial time approximations |- ! Year !! Name !! Approximation guarantee !! Source |- | 1980 || Bottom-Up Left-Justified (BL) ||<math>3 OPT(I) </math> || Baker et al.<ref name="Baker1980" /> |- |rowspan="3"| 1980 |Next-Fit Decreasing-Height (NFDH) |<math>2 OPT(I) + h_{\max}(I) \leq 3 OPT(I) </math> |rowspan="3"|Coffman et al.<ref name="Coffman1980">{{cite journal |last1=Coffman Jr. |first1=Edward G. |last2=Garey |first2=M. R. |last3=Johnson |first3=David S. |last4=Tarjan |first4=Robert Endre |title=Performance Bounds for Level-Oriented Two-Dimensional Packing Algorithms |journal=SIAM J. Comput. |date=1980 |volume=9 |issue=4 |pages=808–826 |doi=10.1137/0209062}}</ref> |- |First-Fit Decreasing-Height (FFDH) |<math>1.7 OPT(I) + h_{\max}(I) \leq 2.7 OPT(I) </math> |- | Split-Fit (SF) |<math>1.5 OPT(I) + 2h_{\max}(I)</math> |- | 1980 || ||<math>2 OPT(I) + h_{\max}(I)/2 \leq 2.5 OPT(I)</math> || Sleator<ref name="Sleator">{{cite journal |last1=Sleator |first1=Daniel Dominic |title=A 2.5 Times Optimal Algorithm for Packing in Two Dimensions |journal=Inf. Process. Lett. |date=1980 |volume=10 |pages=37–40 |doi=10.1016/0020-0190(80)90121-0}}</ref> |- |rowspan="2"| 1981 | Split Algorithm (SP) |<math>3 OPT(I) </math> |rowspan="2"| Golan<ref name="Golan">{{cite journal |last1=Golan |first1=Igal |title=Performance Bounds for Orthogonal Oriented Two-Dimensional Packing Algorithms |journal=SIAM Journal on Computing |date=August 1981 |volume=10 |issue=3 |pages=571–582 |doi=10.1137/0210042}}</ref> |- |Mixed Algoritghm | <math>(4/3)OPT(I) + 7\frac{1}{18} h_{\max}(I)</math> |- | 1981 || Up-Down (UD)||<math>(5/4)OPT(I) + 6\frac{7}{8}h_{\max}(I)</math> || Baker et al.<ref>{{cite journal |last1=Baker |first1=Brenda S |last2=Brown |first2=Donna J |last3=Katseff |first3=Howard P |title=A 5/4 algorithm for two-dimensional packing |journal=Journal of Algorithms |date=December 1981 |volume=2 |issue=4 |pages=348–368 |doi=10.1016/0196-6774(81)90034-1}}</ref> |- | 1994 || Reverse-Fit ||<math>2 OPT(I) </math> || Schiermeyer<ref name="Schiermeyer">{{cite book |doi=10.1007/bfb0049416 |publisher=Springer Berlin Heidelberg |language=en|series=Lecture Notes in Computer Science |isbn=978-3-540-58434-6 |chapter=Reverse-Fit: A 2-optimal algorithm for packing rectangles |title=Algorithms — ESA '94 |volume=855 |pages=290–299 |year=1994 |last1=Schiermeyer |first1=Ingo }}</ref> |- | 1997 || ||<math>2 OPT(I) </math> || Steinberg<ref name="Steinberg">{{cite journal |last1=Steinberg |first1=A. |title=A Strip-Packing Algorithm with Absolute Performance Bound 2 |journal=SIAM Journal on Computing |date=March 1997 |volume=26 |issue=2 |pages=401–409 |doi=10.1137/S0097539793255801}}</ref> |- | 2000 | |<math>(1+\varepsilon) OPT(I) + \mathcal{O}(1/\varepsilon^2)h_{\max}(I)</math> | Kenyon, Rémila<ref name="KenyonRémila">{{cite journal | last1=Kenyon | first1=Claire | authorlink1=Claire Mathieu | last2=Rémila | first2=Eric | title=A Near-Optimal Solution to a Two-Dimensional Cutting Stock Problem | journal=Mathematics of Operations Research | date=November 2000 | volume=25 | issue=4 | pages=645–656 | doi=10.1287/moor.25.4.645.12118 | s2cid=5361969}}</ref> |- | 2009 | |<math>1.9396 OPT(I) </math> | Harren, van Stee<ref>{{cite book |last1=Harren |first1=Rolf |last2=van Stee |first2=Rob |title=Approximation, Randomization, and Combinatorial Optimization. Algorithms and Techniques |chapter=Improved Absolute Approximation Ratios for Two-Dimensional Packing Problems |series=Lecture Notes in Computer Science |volume=5687 |date=2009 |pages=177–189 |doi=10.1007/978-3-642-03685-9_14 |bibcode=2009LNCS.5687..177H |isbn=978-3-642-03684-2 }}</ref> |- | 2009 || ||<math>(1+\varepsilon) OPT(I) + h_{\max}(I) </math> || Jansen, Solis-Oba<ref>{{cite journal |last1=Jansen |first1=Klaus |last2=Solis-Oba |first2=Roberto |title=Rectangle packing with one-dimensional resource augmentation |journal=Discrete Optimization |date=August 2009 |volume=6 |issue=3 |pages=310–323 |doi=10.1016/j.disopt.2009.04.001}}</ref> |- | 2011 | |<math>(1+\varepsilon) OPT(I) + \mathcal{O}(\log(1/\varepsilon)/\varepsilon)h_{\max}(I)</math> | Bougeret et al.<ref>{{cite journal |last1=Bougeret |first1=Marin |last2=Dutot|first2=Pierre-Francois|last3=Jansen|first3=Klaus |last4=Robenek|first4=Christina|last5=Trystram|first5=Denis |title=Approximation Algorithms for Multiple Strip Packing and Scheduking Parallel Jobs in Platforms|journal=Discrete Mathematics, Algorithms and Applications |date=5 April 2012 |volume=03 |issue=4 |pages=553–586 |doi=10.1142/S1793830911001413}}</ref> |- | 2012 | |<math>(1+\varepsilon) OPT(I) + \mathcal{O}(\log(1/\varepsilon)/\varepsilon)h_{\max}(I)</math> | Sviridenko<ref>{{cite journal |last1=Sviridenko |first1=Maxim |title=A note on the Kenyon–Remila strip-packing algorithm |journal=Information Processing Letters |date=January 2012 |volume=112 |issue=1–2 |pages=10–12 |doi=10.1016/j.ipl.2011.10.003}}</ref> |- | 2014 || ||<math>(5/3+\varepsilon) OPT(I)</math> || Harren et al.<ref name="Harren">{{cite journal |last1=Harren |first1=Rolf |last2=Jansen |first2=Klaus |last3=Prädel |first3=Lars |last4=van Stee |first4=Rob |title=A (5/3 + epsilon)-approximation for strip packing |journal=Computational Geometry |date=February 2014 |volume=47 |issue=2 |pages=248–267 |doi=10.1016/j.comgeo.2013.08.008|doi-access=free }}</ref> |}
=== Bottom-up left-justified (BL)===
thumb|An example of solutions generated by the Bottom-Up Left-Justified algorithm.
This algorithm was first described by Baker et al.<ref name="Baker1980" /> It works as follows:
Let <math> L </math> be a sequence of rectangular items. The algorithm iterates the sequence in the given order. For each considered item <math> r \in L </math>, it searches for the bottom-most position to place it and then shifts it as far to the left as possible. Hence, it places <math> r </math> at the bottom-most left-most possible coordinate <math> (x,y)</math> in the strip.
This algorithm has the following properties: * The approximation ratio of this algorithm cannot be bounded by a constant. More precisely they showed that for each <math> M > 0 </math> there exists a list <math> L </math> of rectangular items ordered by increasing width such that <math> BL(L)/ OPT(L) > M </math>, where <math> BL(L) </math> is the height of the packing created by the BL algorithm and <math> OPT(L) </math> is the height of the optimal solution for <math> L </math>.<ref name="Baker1980" /> * If the items are ordered by decreasing widths, then <math> BL(L)/ OPT(L) \leq 3 </math>.<ref name="Baker1980" /> * If the item are all squares and are ordered by decreasing widths, then <math> BL(L)/ OPT(L) \leq 2 </math>.<ref name="Baker1980" /> * For any <math> \delta > 0 </math>, there exists a list <math> L </math> of rectangles ordered by decreasing widths such that <math> BL(L)/ OPT(L) > 3 - \delta </math>.<ref name="Baker1980" /> * For any <math> \delta > 0 </math>, there exists a list <math> L </math> of squares ordered by decreasing widths such that <math> BL(L)/ OPT(L) > 2 - \delta </math>.<ref name="Baker1980" /> * For each <math> \varepsilon \in (0,1] </math>, there exists an instance containing only squares where each order of the squares <math> L </math> has a ratio of <math> BL(L)/ OPT(L) > \frac{12}{11 +\varepsilon} </math>, i.e., there exist instances where BL does '''not''' find the optimum even when iterating all possible orders of the items.<ref name="Baker1980" /> In 2024 this lower bound has been improved by Hougardy and Zondervan to <math> BL(L)/ OPT(L) > \frac{4}{3 +\varepsilon} </math>.<ref>{{Citation |last1=Hougardy |first1=Stefan |title=The Bottom-Left Algorithm for the Strip Packing Problem |date=2024-02-26 |arxiv=2402.16572 |last2=Zondervan |first2=Bart}}</ref> * In 2025, Hougardy and Zondervan constructed an ordering of rectangles (called the <math> \mathcal{FQW} </math>-ordering), such that <math> BL(L)/ OPT(L) \leq \frac{13}{6} </math>.<ref>{{Cite conference |last1=Hougardy |first1=Stefan |last2=Zondervan |first2=Bart |title=A 13/6-Approximation for Strip Packing via the Bottom-Left Algorithm |book-title=43rd International Symposium on Theoretical Aspects of Computer Science (STACS 2026) |series=Leibniz International Proceedings in Informatics (LIPIcs) |volume=364 |pages=54:1–54:17 |publisher=Schloss Dagstuhl – Leibniz-Zentrum für Informatik |year=2026 |doi=10.4230/LIPIcs.STACS.2026.54 |doi-access=free}}</ref>
=== Next-fit decreasing-height (NFDH) === thumb|An example for NFDH and FFDH applied to the same instance This algorithm was first described by Coffman et al.<ref name="Coffman1980" /> in 1980 and works as follows:
Let <math> \mathcal{I} </math> be the given set of rectangular items. First, the algorithm sorts the items by order of nonincreasing height. Then, starting at position <math> (0,0) </math>, the algorithm places the items next to each other in the strip until the next item will overlap the right border of the strip. At this point, the algorithm defines a new level at the top of the tallest item in the current level and places the items next to each other in this new level.
This algorithm has the following properties: * The running time can be bounded by <math> \mathcal{O}(|\mathcal{I}| \log(|\mathcal{I}|))</math> and if the items are already sorted even by <math>\mathcal{O}(|\mathcal{I}|)</math>. * For every set of items <math> \mathcal{I} </math>, it produces a packing of height <math> NFDH(\mathcal{I}) \leq 2 OPT(\mathcal{I}) + h_{\max} \leq 3 OPT(\mathcal{I})</math>, where <math> h_{\max} </math> is the largest height of an item in <math> \mathcal{I} </math>.<ref name="Coffman1980" /> * For every <math> \varepsilon > 0 </math> there exists a set of rectangles <math> \mathcal{I} </math> such that <math> NFDH(\mathcal{I}|) > (2-\varepsilon) OPT(\mathcal{I}).</math><ref name="Coffman1980" /> * The packing generated is a guillotine packing. This means the items can be obtained through a sequence of horizontal or vertical edge-to-edge cuts.
=== First-fit decreasing-height (FFDH) === This algorithm, first described by Coffman et al.<ref name="Coffman1980" /> in 1980, works similar to the NFDH algorithm. However, when placing the next item, the algorithm scans the levels from bottom to top and places the item in the first level on which it will fit. A new level is only opened if the item does not fit in any previous ones.
This algorithm has the following properties: * The running time can be bounded by <math> \mathcal{O}(|\mathcal{I}|^2)</math>, since there are at most <math> |\mathcal{I}|</math> levels. * For every set of items <math> \mathcal{I} </math> it produces a packing of height <math> FFDH(\mathcal{I}) \leq 1.7 OPT(\mathcal{I}) + h_{\max} \leq 2.7 OPT(\mathcal{I})</math>, where <math> h_{\max} </math> is the largest height of an item in <math> \mathcal{I} </math>.<ref name="Coffman1980" /> * Let <math> m \geq 2 </math>. For any set of items <math> \mathcal{I} </math> and strip with width <math>W</math> such that <math> w(i) \leq W/m </math> for each <math> i \in \mathcal{I} </math>, it holds that <math> FFDH(\mathcal{I}) \leq \left(1 + 1/m\right) OPT(\mathcal{I}) + h_{\max}</math>. Furthermore, for each <math> \varepsilon > 0 </math>, there exists such a set of items <math> \mathcal{I} </math> with <math> FFDH(\mathcal{I}) > \left(1 + 1/m -\varepsilon\right)OPT(\mathcal{I})</math>.<ref name="Coffman1980" /> * If all the items in <math> \mathcal{I} </math> are squares, it holds that <math> FFDH(\mathcal{I}) \leq (3/2) OPT(\mathcal{I}) + h_{\max}</math>. Furthermore, for each <math> \varepsilon >0</math>, there exists a set of squares <math> \mathcal{I} </math> such that <math> FFDH(\mathcal{I}) > \left(3/2-\varepsilon\right)OPT(\mathcal{I})</math>.<ref name="Coffman1980" /> * The packing generated is a guillotine packing. This means the items can be obtained through a sequence of horizontal or vertical edge-to-edge cuts.
=== The split-fit algorithm (SF) === This algorithm was first described by Coffman et al.<ref name="Coffman1980" /> For a given set of items <math> \mathcal{I} </math> and strip with width <math> W</math>, it works as follows:
# Determinate <math> m \in \mathbb{N} </math>, the largest integer such that the given rectangles have width <math> W/m </math> or less. # Divide <math> \mathcal{I} </math> into two sets <math> \mathcal{I}_{wide} </math> and <math> \mathcal{I}_{narrow} </math>, such that <math> \mathcal{I}_{wide} </math> contains all the items <math> i \in \mathcal{I}</math> with a width <math> w(i) > W/(m+1) </math> while <math> \mathcal{I}_{narrow} </math> contains all the items with <math> w(i) \leq W/(m+1) </math>. # Order <math> \mathcal{I}_{wide} </math> and <math> \mathcal{I}_{narrow} </math> by nonincreasing height. # Pack the items in <math> \mathcal{I}_{wide} </math> with the FFDH algorithm. # Reorder the levels/shelves constructed by FFDH such that all the shelves with a total width larger than <math> W(m+1)/(m+2) </math> are below the more narrow ones. # This leaves a rectangular area <math> R </math> of with <math> W/(m+2) </math>, next to more narrow levels/shelves, that contains no item. # Use the FFDH algorithm to pack the items in <math> \mathcal{I}_{narrow} </math> using the area <math> R </math> as well.
This algorithm has the following properties: * For every set of items <math> \mathcal{I} </math> and the corresponding <math> m </math>, it holds that <math> SF(\mathcal{I}) \leq (m+2)/(m+1)OPT(\mathcal{I}) + 2h_{\max}</math>.<ref name="Coffman1980" /> Note that for <math> m=1 </math>, it holds that <math> SF(\mathcal{I}) \leq (3/2) OPT(\mathcal{I}) + 2h_{\max}</math> * For each <math> \varepsilon >0</math>, there is a set of items <math> \mathcal{I} </math> such that <math> SF(\mathcal{I}) > \left((m+2)/(m+1) -\varepsilon\right)OPT(\mathcal{I})</math>.<ref name="Coffman1980" />
=== Sleator's algorithm === For a given set of items <math> \mathcal{I} </math> and strip with width <math> W</math>, it works as follows:
# Find all the items with a width larger than <math> W/2 </math> and stack them at the bottom of the strip (in random order). Call the total height of these items <math> h_0 </math>. All the other items will be placed above <math> h_0 </math>. # Sort all the remaining items in nonincreasing order of height. The items will be placed in this order. # Consider the horizontal line at <math> h_0 </math> as a shelf. The algorithm places the items on this shelf in nonincreasing order of height until no item is left or the next one does not fit. # Draw a vertical line at <math> W/2 </math>, which cuts the strip into two equal halves. # Let <math> h_l </math> be the highest point covered by any item in the left half and <math> h_r </math> the corresponding point on the right half. Draw two horizontal line segments of length <math> W/2 </math> at <math> h_l </math> and <math> h_r </math> across the left and the right half of the strip. These two lines build new shelves on which the algorithm will place the items, as in step 3. Choose the half which has the lower shelf and place the items on this shelf until no other item fits. Repeat this step until no item is left.
This algorithm has the following properties: * The running time can be bounded by <math> \mathcal{O}(|\mathcal{I}| \log(|\mathcal{I}|))</math> and if the items are already sorted even by <math>\mathcal{O}(|\mathcal{I}|)</math>. * For every set of items <math> \mathcal{I} </math> it produces a packing of height <math> A(\mathcal{I}) \leq 2 OPT(\mathcal{I}) + h_{\max}/2 \leq 2.5 OPT(\mathcal{I})</math>, where <math> h_{\max} </math> is the largest height of an item in <math> \mathcal{I} </math>.<ref name="Sleator" />
=== The split algorithm (SP) === This algorithm is an extension of Sleator's approach and was first described by Golan.<ref name="Golan" /> It places the items in nonincreasing order of width. The intuitive idea is to split the strip into sub-strips while placing some items. Whenever possible, the algorithm places the current item <math> i </math> side-by-side of an already placed item <math> j </math>. In this case, it splits the corresponding sub-strip into two pieces: one containing the first item <math> j </math> and the other containing the current item <math> i </math>. If this is not possible, it places <math> i </math> on top of an already placed item and does not split the sub-strip.
This algorithm creates a set <samp> S </samp> of sub-strips. For each sub-strip <samp> s ∈ S</samp> we know its lower left corner <samp> s.xposition</samp> and <samp> s.yposition</samp>, its width <samp> s.width</samp>, the horizontal lines parallel to the upper and lower border of the item placed last inside this sub-strip <samp> s.upper</samp> and <samp> s.lower</samp>, as well as the width of it <samp> s.itemWidth</samp>.
'''function''' Split Algorithm (SP) '''is''' '''input:''' ''items <samp>I</samp>, width of the strip <samp>W</samp>'' '''output:''' ''A packing of the items'' Sort I in nonincreasing order of widths; Define empty list S of sub-strips; Define a new sub-strip s with s.xposition = 0, s.yposition = 0, s.width = W, s.lower = 0, s.upper = 0, s.itemWidth = W; Add s to S; '''while''' I not empty '''do''' i := I.pop(); ''Removes widest item from'' I Define new list S_2 containing all the substrips with s.width - s.itemWidth ≥ i.width; ''S_2 contains all sub-strips where i fits next to the already placed item'' '''if''' S_2 is empty '''then''' ''In this case, place the item on top of another one.'' Find the sub-strip s in S with smallest s.upper; ''i.e. the least filled sub-strip'' Place i at position (s.xposition, s.upper); Update s: s.lower := s.upper; s.upper := s.upper+i.height; s.itemWidth := i.width; '''else''' ''In this case, place the item next to another one at the same level and split the corresponding sub-strip at this position.'' Find s ∈ S_2 with the smallest s.lower; Place i at position (s.xposition + s.itemWidth, s.lower); Remove s from S; Define two new sub-strips s1 and s2 with s1.xposition = s.xposition, s1.yposition = s.upper, s1.width = s.itemWidth, s1.lower = s.upper, s1.upper = s.upper, s1.itemWidth = s.itemWidth; s2.xposition = s.xposition+s.itemWidth, s2.yposition = s.lower, s2.width = s.width - s.itemWidth, s2.lower = s.lower, s2.upper = s.lower + i.height, s2.itemWidth = i.width; S.add(s1,s2); '''return''' '''end function'''
This algorithm has the following properties: * The running time can be bounded by <math> \mathcal{O}(|\mathcal{I}|^2)</math> since the number of substrips is bounded by <math> |\mathcal{I}|</math>. * For any set of items <math>\mathcal{I}</math> it holds that <math> SP(\mathcal{I}) \leq 2 OPT(\mathcal{I}) + h_{\max} \leq 3 OPT(\mathcal{I})</math>.<ref name="Golan" /> * For any <math>\varepsilon >0</math>, there exists a set of items <math>\mathcal{I}</math> such that <math> SP(\mathcal{I}) > (3-\varepsilon) OPT(\mathcal{I})</math>.<ref name="Golan" /> * For any <math>\varepsilon >0</math> and <math>C>0</math>, there exists a set of items <math>\mathcal{I}</math> such that <math> SP(\mathcal{I}) > (2-\varepsilon) OPT(\mathcal{I})+C</math>.<ref name="Golan" />
=== Reverse-fit (RF)=== This algorithm was first described by Schiermeyer.<ref name="Schiermeyer" /> The description of this algorithm needs some additional notation. For a placed item <math>i \in \mathcal{I}</math>, its lower left corner is denoted by <math>(a_i,c_i)</math> and its upper right corner by <math>(b_i,d_i)</math>.
Given a set of items <math>\mathcal{I}</math> and a strip of width <math>W</math>, it works as follows: # Stack all the rectangles of width greater than <math>W/2</math> on top of each other (in random order) at the bottom of the strip. Denote by <math>H_0</math> the height of this stack. All other items will be packed above <math>H_0</math>. # Sort the remaining items in order of nonincreasing height and consider the items in this order in the following steps. Let <math>h_{\max}</math> be the height of the tallest of these remaining items. # Place the items one by one left aligned on a shelf defined by <math>H_0</math> until no other item fit on this shelf or there is no item left. Call this shelf the ''first level''. # Let <math>h_1</math> be the height of the tallest unpacked item. Define a new shelf at <math>H_0 + h_{\max} + h_1</math>. The algorithm will fill this shelf from right to left, aligning the items to the right, such that the items touch this shelf with their top. Call this shelf the ''second reverse-level''. # Place the items into the two shelves due to First-Fit, i.e., placing the items in the first level where they fit and in the second one otherwise. Proceed until there are no items left, or the total width of the items in the second shelf is at least <math>W/2</math>. # Shift the second reverse-level down until an item from it touches an item from the first level. Define <math>H_1</math> as the new vertical position of the shifted shelf. Let <math>f</math> and <math>s</math> be the right most pair of touching items with <math>f</math> placed on the first level and <math>s</math> on the second reverse-level. Define <math>x_r := \max(b_f,b_s)</math>. # '''If''' <math>x_r < W/2</math> '''then''' <math>s</math> is the last rectangle placed in the second reverse-level. Shift all the other items from this level further down (all the same amount) until the first one touches an item from the first level. Again the algorithm determines the rightmost pair of touching items <math>f'</math> and <math>s'</math>. Define <math>h_2</math> as the amount by which the shelf was shifted down. ## '''If''' <math>h_2 \leq h(s)</math> '''then''' shift <math>s</math> to the left until it touches another item or the border of the strip. Define the third level at the top of <math>s'</math>. ## '''If''' <math>h_2 > h(s)</math> '''then''' shift <math>s</math> define the third level at the top of <math>s'</math>. Place <math>s</math> left-aligned in this third level, such that it touches an item from the first level on its left. # Continue packing the items using the First-Fit heuristic. Each following level (starting at level three) is defined by a horizontal line through the top of the largest item on the previous level. Note that the first item placed in the next level might not touch the border of the strip with their left side, but an item from the first level or the item <math>s</math>.
This algorithm has the following properties: * The running time can be bounded by <math> \mathcal{O}(|\mathcal{I}|^2)</math>, since there are at most <math> |\mathcal{I}|</math> levels. * For every set of items <math> \mathcal{I} </math> it produces a packing of height <math> RF(\mathcal{I}) \leq 2 OPT(\mathcal{I})</math>.<ref name="Schiermeyer" />
=== Steinberg's algorithm (ST)===
Steinbergs algorithm is a recursive one. Given a set of rectangular items <math> \mathcal{I}</math> and a rectangular target region with width <math> W</math> and height <math> H</math>, it proposes four reduction rules, that place some of the items and leaves a smaller rectangular region with the same properties as before regarding of the residual items. Consider the following notations: Given a set of items <math> \mathcal{I}</math> we denote by <math> h_{\max}(\mathcal{I})</math> the tallest item height in <math> \mathcal{I}</math>, <math> w_{\max}(\mathcal{I})</math> the largest item width appearing in <math> \mathcal{I}</math> and by <math> \mathrm{AREA}(\mathcal{I}) := \sum_{i \in \mathcal{I}} w(i)h(i)</math> the total area of these items. Steinbergs shows that if
<math> h_{\max}(\mathcal{I}) \leq H </math>, <math> w_{\max}(\mathcal{I}) \leq W </math>, and <math> \mathrm{AREA}(\mathcal{I}) \leq W\cdot H - (2h_{\max}(\mathcal{I}) -h)_+(2w_{\max}(\mathcal{I}) - W)_+ </math>, where <math>(a)_+ := \max\{0,a\}</math>,
then all the items can be placed inside the target region of size <math> W \times H </math>. Each reduction rule will produce a smaller target area and a subset of items that have to be placed. When the condition from above holds before the procedure started, then the created subproblem will have this property as well.
'''Procedure 1''': It can be applied if <math> w_{\max}(\mathcal{I}') \geq W/2</math>.
# Find all the items <math>i \in \mathcal{I}</math> with width <math> w(i) \geq W/2</math> and remove them from <math>\mathcal{I}</math>. # Sort them by nonincreasing width and place them left-aligned at the bottom of the target region. Let <math>h_0</math> be their total height. # Find all the items <math>i \in \mathcal{I}</math> with width <math> h(i) > H-h_0</math>. Remove them from <math>\mathcal{I}</math> and place them in a new set <math>\mathcal{I}_H</math>. # If <math>\mathcal{I}_H</math> is empty, define the new target region as the area above <math>h_0</math>, i.e. it has height <math>H-h_0</math> and width <math>W</math>. Solve the problem consisting of this new target region and the reduced set of items with one of the procedures. # If <math>\mathcal{I}_H</math> is not empty, sort it by nonincreasing height and place the items right allinged one by one in the upper right corner of the target area. Let <math>w_0</math> be the total width of these items. Define a new target area with width <math>W-w_0</math> and height <math>H - h_0</math> in the upper left corner. Solve the problem consisting of this new target region and the reduced set of items with one of the procedures.
'''Procedure 2''': It can be applied if the following conditions hold: <math> w_{\max}(\mathcal{I}) \leq W/2</math>, <math> h_{\max}(\mathcal{I}) \leq H/2</math>, and there exist two different items <math>i,i' \in \mathcal{I}</math> with <math> w(i) \geq W/4</math>, <math> w(i') \geq W/4</math>, <math> h(i) \geq H/4</math>, <math> h(i') \geq H/4</math> and <math> 2(\mathrm{AREA}(\mathcal{I}) - w(i)h(i) -w(i')h(i')) \leq (W- \max\{w(i),w(i')\})H</math>.
# Find <math>i</math> and <math>i'</math> and remove them from <math>\mathcal{I}</math>. # Place the wider one in the lower-left corner of the target area and the more narrow one left-aligned on the top of the first. # Define a new target area on the right of these both items, such that it has the width <math> W- \max\{w(i),w(i')\}</math> and height <math> H</math>. # Place the residual items in <math>\mathcal{I}</math> into the new target area using one of the procedures.
'''Procedure 3''': It can be applied if the following conditions hold: <math> w_{\max}(\mathcal{I}) \leq W/2</math>, <math> h_{\max}(\mathcal{I}) \leq H/2</math>, <math> |\mathcal{I}| > 1</math>, and when sorting the items by decreasing width there exist an index <math>m </math> such that when defining <math>\mathcal{I'}</math> as the first <math>m </math> items it holds that <math> \mathrm{AREA}(\mathcal{I})- WH/4 \leq \mathrm{AREA}(\mathcal{I'}) \leq 3WH/8</math> as well as <math>w(i_{m+1})\leq W/4 </math>
# Set <math> W_1 := \max{W/2, 2\mathrm{AREA}(\mathcal{I'})/H}</math>. # Define two new rectangular target areas one at the lower-left corner of the original one with height <math>H</math> and width <math>W_1</math> and the other left of it with height <math>H</math> and width <math>W-W_1</math>. # Use one of the procedures to place the items in <math>\mathcal{I'}</math> into the first new target area and the items in <math>\mathcal{I}\setminus\mathcal{I'}</math> into the second one.
Note that procedures 1 to 3 have a symmetric version when swapping the height and the width of the items and the target region.
'''Procedure 4''': It can be applied if the following conditions hold: <math> w_{\max}(\mathcal{I}) \leq W/2</math>, <math> h_{\max}(\mathcal{I}) \leq H/2</math>, and there exists an item <math>i \in \mathcal{I}</math> such that <math>w(i) h(i) \geq \mathrm{AREA}(\mathcal{I}) - WH/4</math>.
# Place the item <math>i</math> in the lower-left corner of the target area and remove it from <math>\mathcal{I}</math>. # Define a new target area right of this item such that it has the width <math>W-w(i)</math> and height <math>H</math> and place the residual items inside this area using one of the procedures.
This algorithm has the following properties: * The running time can be bounded by <math> \mathcal{O}(|\mathcal{I}| \log(|\mathcal{I}|)^2/\log(\log(|\mathcal{I}|)))</math>.<ref name="Steinberg" /> * For every set of items <math> \mathcal{I} </math> it produces a packing of height <math> ST(\mathcal{I}) \leq 2 OPT(\mathcal{I})</math>.<ref name="Steinberg" />
== Pseudo-polynomial time approximation algorithms == To improve upon the lower bound of <math>3/2</math> for polynomial-time algorithms, pseudo-polynomial time algorithms for the strip packing problem have been considered. When considering this type of algorithms, all the sizes of the items and the strip are given as integrals. Furthermore, the width of the strip <math>W</math> is allowed to appear polynomially in the running time. Note that this is no longer considered as a polynomial running time since, in the given instance, the width of the strip needs an encoding size of <math> \log(W)</math>.
The pseudo-polynomial time algorithms that have been developed mostly use the same approach. It is shown that each optimal solution can be simplified and transformed into one that has one of a constant number of structures. The algorithm then iterates all these structures and places the items inside using linear and dynamic programming. The best ratio accomplished so far is <math>(5/4 +\varepsilon) OPT(I) </math>.<ref name="JansenRau2019" /> while there cannot be a pseudo-polynomial time algorithm with ratio better than <math>5/4 </math> unless <math>P = NP</math><ref name="Henning" />
{| class="wikitable" |+Overview of pseudo-polynomial time approximations |- ! Year !! Approximation Ratio !! Source !! Comment |- |2010 | <math>(3/2 +\varepsilon) </math> | Jansen, Thöle<ref>{{cite journal |last1=Jansen |first1=Klaus |last2=Thöle |first2=Ralf |title=Approximation Algorithms for Scheduling Parallel Jobs |journal=SIAM Journal on Computing |date=January 2010 |volume=39 |issue=8 |pages=3571–3615 |doi=10.1137/080736491}}</ref> |- |2016 | <math>(7/5 +\varepsilon) </math> |Nadiradze, Wiese<ref>{{cite book |last1=Nadiradze |first1=Giorgi |last2=Wiese |first2=Andreas |title=Proceedings of the Twenty-Seventh Annual ACM-SIAM Symposium on Discrete Algorithms |chapter=On approximating strip packing with a better ratio than 3/2 |date=21 December 2015 |pages=1491–1510 |doi=10.1137/1.9781611974331.ch102 |publisher=Society for Industrial and Applied Mathematics|isbn=978-1-61197-433-1 }}</ref> |- |2016 | <math>(4/3 +\varepsilon) </math> |Gálvez, Grandoni, Ingala, Khan<ref>{{cite book |last1=Gálvez |first1=Waldo |last2=Grandoni |first2=Fabrizio |last3=Ingala |first3=Salvatore |last4=Khan |first4=Arindam |title=Improved Pseudo-Polynomial-Time Approximation for Strip Packing |series=Leibniz International Proceedings in Informatics (LIPIcs) |date=2016 |volume=65 |pages=9:1–9:14 |doi=10.4230/LIPIcs.FSTTCS.2016.9 |publisher=Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik|doi-access=free |isbn=9783959770279 |s2cid=3205478 }}</ref> | also for 90 degree rotations |- |2017 |<math>(4/3 +\varepsilon)</math> |Jansen, Rau<ref>{{cite book |last1=Jansen |first1=Klaus |last2=Rau |first2=Malin |title=WALCOM: Algorithms and Computation |chapter=Improved Approximation for Two Dimensional Strip Packing with Polynomial Bounded Width |series=Lecture Notes in Computer Science |date=29–31 March 2017 |volume=10167 |pages=409–420 |doi=10.1007/978-3-319-53925-6_32 |arxiv=1610.04430 |isbn=978-3-319-53924-9 |s2cid=15768136 }}</ref> |- |2019 |<math>(5/4 +\varepsilon)</math> |Jansen, Rau<ref name="JansenRau2019">{{cite book |last1=Jansen |first1=Klaus |last2=Rau |first2=Malin |title=Closing the Gap for Pseudo-Polynomial Strip Packing |series=Leibniz International Proceedings in Informatics (LIPIcs) |date=2019 |volume=144 |pages=62:1–62:14 |doi=10.4230/LIPIcs.ESA.2019.62 |publisher=Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik|doi-access=free |isbn=9783959771245 |s2cid=24303167 }}</ref> | also for 90 degree rotations and contiguous moldable jobs |}
== Online algorithms == In the online variant of strip packing, the items arrive over time. When an item arrives, it has to be placed immediately before the next item is known. There are two types of online algorithms that have been considered. In the first variant, it is not allowed to alter the packing once an item is placed. In the second, items may be repacked when another item arrives. This variant is called the migration model.
The quality of an online algorithm is measured by the (absolute) competitive ratio
<math>\mathrm{sup}_I A(I)/OPT(I) </math>,
where <math> A(I) </math> corresponds to the solution generated by the online algorithm and <math> OPT(I) </math> corresponds to the size of the optimal solution. In addition to the absolute competitive ratio, the asymptotic competitive ratio of online algorithms has been studied. For instances <math>I</math> with <math>h_{\max}(I)\leq 1 </math> it is defined as
<math>\lim \mathrm{sup}_{OPT(I) \rightarrow \infty} A(I)/OPT(I) </math>.
Note that all the instances can be scaled such that <math>h_{\max}(I)\leq 1 </math>.
{| class="wikitable" |+Overview of online algorithms without migration |- ! Year !! Competitive Ratio !! Asymptotic Competitive Ratio !! Source |- | 1983 | 6.99 | <math> \approx 1.7</math> | Baker and Schwarz<ref name="BakerOnline1">{{cite journal |last1=Baker |first1=Brenda S. |last2=Schwarz |first2=Jerald S. |title=Shelf Algorithms for Two-Dimensional Packing Problems |journal=SIAM Journal on Computing |date=1 August 1983 |volume=12 |issue=3 |pages=508–525 |doi=10.1137/0212033 |issn=0097-5397}}</ref> |- | 1997 | | <math> 1.69+\varepsilon </math> | Csirik and Woeginger<ref>{{cite journal |last1=Csirik |first1=János |last2=Woeginger |first2=Gerhard J. |title=Shelf algorithms for on-line strip packing |journal=Information Processing Letters |date=28 August 1997 |volume=63 |issue=4 |pages=171–175 |doi=10.1016/S0020-0190(97)00120-8 |issn=0020-0190}}</ref> |- | 2007 |6.6623 | |Hurink and Paulus<ref>{{cite book |last1=Hurink |first1=Johann L. |last2=Paulus |first2=Jacob Jan |title=Approximation and Online Algorithms |chapter=Online Algorithm for Parallel Job Scheduling and Strip Packing |volume=4927 |date=2007 |pages=67–74 |doi=10.1007/978-3-540-77918-6_6 |publisher=Springer Berlin Heidelberg |language=en|series=Lecture Notes in Computer Science |isbn=978-3-540-77917-9 |chapter-url=https://ris.utwente.nl/ws/files/5327458/ParallelJobStripPacking.pdf }}</ref> |- | 2009 |6.6623 | |Ye, Han, and Zhang<ref>{{cite journal |last1=Ye |first1=Deshi |last2=Han |first2=Xin |last3=Zhang |first3=Guochuan |title=A note on online strip packing |journal=Journal of Combinatorial Optimization |date=1 May 2009 |volume=17 |issue=4 |pages=417–423 |doi=10.1007/s10878-007-9125-x |s2cid=37635252 |language=en |issn=1573-2886}}</ref> |- |2007 | |<math>1.58889</math> | Han et al.<ref name="HanOnline">{{cite book |last1=Han |first1=Xin |last2=Iwama |first2=Kazuo |last3=Ye |first3=Deshi |last4=Zhang |first4=Guochuan |title=Algorithmic Aspects in Information and Management |chapter=Strip Packing vs. Bin Packing |volume=4508 |date=2007 |pages=358–367 |doi=10.1007/978-3-540-72870-2_34 |publisher=Springer Berlin Heidelberg |language=en|series=Lecture Notes in Computer Science |isbn=978-3-540-72868-9 |arxiv=cs/0607046 |s2cid=580 }}</ref> + Seiden<ref name="SeidenOnline">{{cite book |last1=Seiden |first1=Steven S. |title=Automata, Languages and Programming |chapter=On the Online Bin Packing Problem |volume=2076 |date=2001 |pages=237–248 |doi=10.1007/3-540-48224-5_20 |publisher=Springer Berlin Heidelberg |language=en|series=Lecture Notes in Computer Science |isbn=978-3-540-42287-7 }}</ref> |} The framework of Han et al.<ref name="HanOnline" /> is applicable in the online setting if the online bin packing algorithm belongs to the class Super Harmonic. Thus, Seiden's online bin packing algorithm Harmonic++<ref name="SeidenOnline" /> implies an algorithm for online strip packing with asymptotic ratio 1.58889.
{| class="wikitable" |+Overview of lower bounds for online algorithms without migration |- ! Year !! Competitive Ratio !! Asymptotic Competitive Ratio !! Source !! Comment |- | 1982 |<math> 2 </math> | | Brown, Baker, and Katseff<ref>{{cite journal |last1=Brown |first1=Donna J. |last2=Baker |first2=Brenda S. |last3=Katseff |first3=Howard P. |title=Lower bounds for on-line two-dimensional packing algorithms |journal=Acta Informatica |date=1 November 1982 |volume=18 |issue=2 |pages=207–225 |doi=10.1007/BF00264439 |language=en |issn=1432-0525|hdl=2142/74223 |s2cid=21170278 |hdl-access=free }}</ref> |- | 2006 |2.25 | |Johannes<ref>{{cite journal |last1=Johannes |first1=Berit |title=Scheduling parallel jobs to minimize the makespan |journal=Journal of Scheduling |date=1 October 2006 |volume=9 |issue=5 |pages=433–452 |doi=10.1007/s10951-006-8497-6 |hdl=20.500.11850/36804 |s2cid=18819458 |language=en |issn=1099-1425|url=http://doc.rero.ch/record/318381/files/10951_2006_Article_8497.pdf }}</ref> | also holds for the parallel task scheduling problem |- | 2007 |2.43 | | Hurink and Paulus<ref>{{cite journal |last1=Hurink |first1=J. L. |last2=Paulus |first2=J. J. |title=Online scheduling of parallel jobs on two machines is 2-competitive |journal=Operations Research Letters |date=1 January 2008 |volume=36 |issue=1 |pages=51–56 |doi=10.1016/j.orl.2007.06.001 |s2cid=15561044 |issn=0167-6377|url=https://ris.utwente.nl/ws/files/6547720/Online_scheduling_of_parallel_jobs_on_two_machines_is_2_competitive.pdf }}</ref> | also holds for the parallel task scheduling problem |- | 2009 | 2.457 | | Kern and Paulus <ref>{{cite journal |last1=Kern |first1=Walter |last2=Paulus |first2=Jacob Jan |title=A note on the lower bound for online strip packing |journal=Operations Research Letters |date=2009|url=https://research.utwente.nl/en/publications/a-note-on-the-lower-bound-for-online-strip-packing}}</ref> |- | 2012 | | <math> 1.5404 </math> | Balogh and Békési<ref>{{cite journal |last1=Balogh |first1=János |last2=Békési |first2=József |last3=Galambos |first3=Gábor |title=New lower bounds for certain classes of bin packing algorithms |journal=Theoretical Computer Science |date=6 July 2012 |volume=440-441 |pages=1–13 |doi=10.1016/j.tcs.2012.04.017 |issn=0304-3975|doi-access=free }}</ref> | lower bound due to the underlying bin packing problem |- | 2016 | 2.618 | | Yu, Mao, and Xiao<ref>{{cite journal |last1=Yu |first1=Guosong |last2=Mao |first2=Yanling |last3=Xiao |first3=Jiaoliao |title=A new lower bound for online strip packing |journal=European Journal of Operational Research |date=1 May 2016 |volume=250 |issue=3 |pages=754–759 |doi=10.1016/j.ejor.2015.10.012 |issn=0377-2217}}</ref> |}
== References == <!-- Inline citations added to your article will automatically display here. See en.wikipedia.org/wiki/WP:REFB for instructions on how to add citations. --> {{reflist}}
Category:Mathematical analysis Category:Packing problems Category:Strongly NP-complete problems