We consider planar tiling and packing problems with polyomino pieces and a polyomino container $P$. A polyomino is a polygonal region with axis parallel edges and corners of integral coordinates, which may have holes. We give two polynomial time algorithms, one for deciding if $P$ can be tiled with $2\times 2$ squares (that is, deciding if $P$ is the union of a set of non-overlapping copies of the $2\times 2$ square) and one for packing $P$ with a maximum number of non-overlapping and axis-parallel $2\times 1$ dominos, allowing rotations of $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 three problems there are known pseudo-polynomial time algorithms, that is, algorithms with running times polynomial in the \emph{area} 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)$ algorithm for tiling with squares, and a more involved $O(n^4)$ algorithm for packing and tiling with dominos.
翻译:我们考虑的是多明度元件和多明度容器的平面和包装问题。 多明度是一个多角区域,具有轴平行边缘和集成坐标角,可能有洞。我们给出了两个多明度时间算法,一个用于确定$P$是否可以用2美元乘2美元方格(即确定$P$是一组非重叠拷贝2美元正方块的结合),一个用于包装$P$,最多有非重叠和轴双极平面的2美元;多明度是一个多角区域,具有轴平行边边边边边的边际边际边缘和圆角的角,可能有洞洞。由于包装比打字简单,后一种算法也可以用来决定$2美元能用2美元平面 2美元方块的拼凑(即决定$P$是VLSI设计中重要应用的经典问题,以及找到最多2美元硬度的硬度的硬度平方块(trial) 问题已知的是NP-Hard [J~Algorthomsal 运 1美元平面的运算法 。因此, 以1990年的平面的平面的平面的平面的平面法是我们所知道的平面的平面的平面的平面的平面体 。