Summary: | In this paper, we consider planar tiling and packing problems with polyomino pieces and a polyomino container $P$. We give polynomial-time algorithms for deciding if $P$ can be tiled with $k\times k$ squares for any fixed $k$ (that is, deciding if $P$ is the union of a set of non-overlapping $k\times k$ squares) and for packing $P$ with a maximum number of non-overlapping and axis-parallel $2\times 1$ dominos, allowing rotations by $90^\circ$. As packing is more general than tiling, the latter algorithm can also be used to decide if $P$ can be tiled by $2\times 1$ dominos. These are classical problems with important applications in VLSI design, and the related problem of finding a maximum packing of $2\times 2$ squares is known to be NP-hard [J. Algorithms 1990]. For our problems there are known pseudo-polynomial-time algorithms, that is, algorithms with running times polynomial in the area or perimeter of $P$. However, the standard, compact way to represent a polygon is by listing the coordinates of the corners in binary. We use this representation, and thus present the first polynomial-time algorithms for the problems. Concretely, we give a simple $O(n\log n)$-time algorithm for tiling with squares, where $n$ is the number of corners of $P$. We then give a more involved algorithm that reduces the problem of packing/tiling with dominos to finding a maximum/perfect matching in a graph with $O(n^3)$ vertices. This leads to algorithms with running times $O(n^3 \frac{\log^3 n}{\log^2\log n})$ and $O(n^3 \frac{\log^2 n}{\log\log n})$, respectively.
|