35-1 Bin packing

Suppose that we are given a set of \(n\) objects, where the size \(s_i\) of the \(i\)th object satisfies \(0 < s_i < 1\). We wish to pack all the objects into the minimum number of unit-size bins. Each bin can hold any subset of the objects whose total size does not exceed \(1\).

a. Prove that the problem of determining the minimum number of bins required is \(\text{NP-hard}\). (\(\textit{Hint:}\) Reduce from the subset-sum problem.)

The first-fit heuristic takes each object in turn and places it into the first bin that can accommodate it. Let \(S = \sum_{i = 1}^n s_i\).

b. Argue that the optimal number of bins required is at least \(\lceil S \rceil\).

c. Argue that the first-fit heuristic leaves at most one bin less than half full.

d. Prove that the number of bins used by the first-fit heuristic is never more than \(\lceil 2S \rceil\).

e. Prove an approximation ratio of \(2\) for the first-fit heuristic.

f. Give an efficient implementation of the first-fit heuristic, and analyze its running time.

(Omit!)