Optimal set of rectangle sizes to pack arbitrary rectangle?
Although you don't need all the properties of this particular partition based on triangular numbers, you might consider using it, or an analogous partition:
Image from Wikipedia.
I'm not sure if this is optimal, but it works.
My collection optimises "no wasted space", and it also minimises the number of boxes required in the sense that "the most efficient tiling of any space" is obtained by using the biggest boxes first. However, you may feel that there are too many boxes.
For $2$-dimensional space, I use $(x,y)$ to denote rectangles with side lengths $x$ and $y$.
- $\{(1,1), (1,2), (1,2), (2,2)\}$ will fill all spaces (with integer sides) up to $3\times 3$ with no gaps (with the greedy algorithm)
- $\{(1,1),(1,2),(1,2),(1,4),(1,4),(2,2),(2,4),(2,4),(4,4)\}$ will fill all spaces with integer sides up to $7\times 7$ with no gaps (with the greedy algorithm)
More generally, the collections of boxes are defined by:
one of each box of size $(x,x)$, two of each box of size $(x,y)$ with $x\neq y$, where $x,y \in \{1,2,4,8,...\}$.
I conjecture that the collection of boxes generated in this way will always tile larger 2d spaces with no gaps using the greedy algorithm. (I have verified this for the two cases above, but not for e.g. $15\times 15$, $31\times 31$,...)
By "using the greedy algorithm", I mean that if you attempt to tile some space, you just have to start with the biggest box, then use the second biggest box, etc.
I suspect that there maybe a more optimal solution which makes use of golden-ratio-eqsue maths.