The FFD algorithm works as follows.
In short: FFD orders the items by descending size, and then calls first-fit bin packing.
An equivalent description of the FFD algorithm is as follows.
In the standard description, we loop over the items once, but keep many open bins. In the equivalent description, we loop over the items many times, but keep only a single open bin each time.
The performance of FFD was analyzed in several steps. Below, F F D ( S , C ) {\displaystyle FFD(S,C)} denotes the number of bins used by FFD for input set S and bin-capacity C.
The lower bound example given in by Dósa is the following: Consider the two bin configurations:
If there are 4 copies of B 1 {\displaystyle B_{1}} and 2 copies of B 2 {\displaystyle B_{2}} in the optimal solution, FFD will compute the following bins:
That is, 8 bins total, while the optimum has only 6 bins. Therefore, the upper bound is tight, because 11 / 9 ⋅ 6 + 6 / 9 = 72 / 9 = 8 {\displaystyle 11/9\cdot 6+6/9=72/9=8} .
This example can be extended to all sizes of OPT ( S , C ) {\displaystyle {\text{OPT}}(S,C)} :6 in the optimal configuration there are 9k+6 bins: 6k+4 of type B1 and 3k+2 of type B2. But FFD needs at least 11k+8 bins, which is 11 9 ( 6 k + 4 + 3 k + 2 ) + 6 9 {\displaystyle {\frac {11}{9}}(6k+4+3k+2)+{\frac {6}{9}}} .
An important special case of bin-packing is that which the item sizes form a divisible sequence (also called factored). A special case of divisible item sizes occurs in memory allocation in computer systems, where the item sizes are all powers of 2. In this case, FFD always finds the optimal packing.7: Thm.2
Contrary to intuition, F F D ( S , C ) {\displaystyle FFD(S,C)} is not a monotonic function of C. 8: Fig.4 Similarly, F F D ( S , C ) {\displaystyle FFD(S,C)} is not a monotonic function of the sizes of items in S: it is possible that an item shrinks in size, but the number of bins increases.
However, the FFD algorithm has an "asymptotic monotonicity" property, defined as follows.9: Lem.2.1
For example, suppose the input is:
44, 24, 24, 22, 21, 17, 8, 8, 6, 6.
With capacity 60, FFD packs 3 bins:
But with capacity 61, FFD packs 4 bins:
This is because, with capacity 61, the 17 fits into the first bin, and thus blocks the way to the following 8, 8.
As another example,10: Ex.5.1 suppose the inputs are: 51, 28, 28, 28, 27, 25, 12, 12, 10, 10, 10, 10, 10, 10, 10, 10. With capacity 75, FFD packs 4 bins:
But with capacity 76, it needs 5 bins:
Consider the above example with capacity 60. If the 17 becomes 16, then the resulting packing is:
Modified first fit decreasing (MFFD)11 improves on FFD for items larger than half a bin by classifying items by size into four size classes large, medium, small, and tiny, corresponding to items with size > 1/2 bin, > 1/3 bin, > 1/6 bin, and smaller items respectively. Then it proceeds through five phases:
This algorithm was first studied by Johnson and Garey12 in 1985, where they proved that M F F D ( S , C ) ≤ ( 71 / 60 ) O P T ( S , C ) + ( 31 / 6 ) {\displaystyle MFFD(S,C)\leq (71/60)\mathrm {OPT} (S,C)+(31/6)} . This bound was improved in the year 1995 by Yue and Zhang13 who proved that M F F D ( S , C ) ≤ ( 71 / 60 ) O P T ( S , C ) + 1 {\displaystyle MFFD(S,C)\leq (71/60)\mathrm {OPT} (S,C)+1} .
Best-fit-decreasing (BFD) is very similar to FFD, except that after the list is sorted, it is processed by best-fit bin packing. Its asymptotic approximation ratio is the same as FFD - 11/9.
Johnson, David S (1973). "Near-optimal bin packing algorithms" (PDF). Massachusetts Institute of Technology. https://dspace.mit.edu/bitstream/handle/1721.1/57819/17595570-MIT.pdf?sequence=2 ↩
Baker, Brenda S. (1985). "A New Proof for the First-Fit Decreasing Bin-Packing Algorithm". J. Algorithms. 6 (1): 49–70. doi:10.1016/0196-6774(85)90018-5. /wiki/Doi_(identifier) ↩
Yue, Minyi (October 1991). "A simple proof of the inequality FFD (L) ≤ 11/9 OPT (L) + 1, ∀L for the FFD bin-packing algorithm". Acta Mathematicae Applicatae Sinica. 7 (4): 321–331. doi:10.1007/BF02009683. S2CID 189915733. /wiki/Doi_(identifier) ↩
Li, Rongheng; Yue, Minyi (August 1997). "The proof of FFD(L) < -OPT(L) + 7/9". Chinese Science Bulletin. 42 (15): 1262–1265. Bibcode:1997ChSBu..42.1262L. doi:10.1007/BF02882754. S2CID 93280100. /wiki/Bibcode_(identifier) ↩
Dósa, György (2007). "The Tight Bound of First Fit Decreasing Bin-Packing Algorithm is FFD(I) ≤ 11/9OPT(I) + 6/9". In Chen Bo; Mike Paterson; Zhang Guochuan (eds.). Combinatorics, Algorithms, Probabilistic and Experimental Methodologies. First International Symposium, ESCAPE 2007, Hangzhou, China, April 7–9, 2007. Lecture Notes in Computer Science. Vol. 4614. pp. 1–11. doi:10.1007/978-3-540-74450-4_1. ISBN 978-3-540-74449-8. 978-3-540-74449-8 ↩
Coffman, E. G; Garey, M. R; Johnson, D. S (1987-12-01). "Bin packing with divisible item sizes". Journal of Complexity. 3 (4): 406–428. doi:10.1016/0885-064X(87)90009-4. ISSN 0885-064X. https://www.sciencedirect.com/science/article/pii/0885064X87900094 ↩
Coffman, E. G. Jr.; Garey, M. R.; Johnson, D. S. (1978-02-01). "An Application of Bin-Packing to Multiprocessor Scheduling". SIAM Journal on Computing. 7 (1): 1–17. doi:10.1137/0207001. ISSN 0097-5397. https://epubs.siam.org/doi/abs/10.1137/0207001 ↩
Huang, Xin; Lu, Pinyan (2021-07-18). "An Algorithmic Framework for Approximating Maximin Share Allocation of Chores". Proceedings of the 22nd ACM Conference on Economics and Computation. EC '21. New York, NY, USA: Association for Computing Machinery. pp. 630–631. arXiv:1907.04505. doi:10.1145/3465456.3467555. ISBN 978-1-4503-8554-1. S2CID 195874333. 978-1-4503-8554-1 ↩
Johnson, David S; Garey, Michael R (October 1985). "A 7160 theorem for bin packing". Journal of Complexity. 1 (1): 65–106. doi:10.1016/0885-064X(85)90022-6. https://doi.org/10.1016%2F0885-064X%2885%2990022-6 ↩
Yue, Minyi; Zhang, Lei (July 1995). "A simple proof of the inequality MFFD(L) ≤ 71/60 OPT(L) + 1,L for the MFFD bin-packing algorithm". Acta Mathematicae Applicatae Sinica. 11 (3): 318–330. doi:10.1007/BF02011198. S2CID 118263129. /wiki/Doi_(identifier) ↩