论文标题
在多项式时间内用正方形和包装多米诺蛋白
Tiling with Squares and Packing Dominos in Polynomial Time
论文作者
论文摘要
聚元是一个多边形区域,具有轴平行边缘和积分坐标的角,可能有孔。在本文中,我们考虑了Polyomino零件和Polyomino容器$ P $的平面瓷砖和包装问题。 We give two polynomial time algorithms, one for deciding if $P$ can be tiled with $k\times k$ squares for any fixed $k$ which can be part of the input (that is, deciding if $P$ is the union of a set of non-overlapping $k\times k$ squares) and one for packing $P$ with a maximum number of non-overlapping and axis-parallel $2\times 1$ dominos,允许轮换$ 90^\ Circ $。由于包装比平铺更一般,因此后一种算法也可以用来确定$ p $是否可以用$ 2 \ times 1 $ dominos铺平。 这些是VLSI设计中重要应用的经典问题,发现最大包装$ 2 \ times 2 $ squares的相关问题是NP-HARD [J.算法1990]。对于我们的三个问题,有已知的伪多项式时间算法,即在$ p $区域中具有多项式运行时间的算法。但是,代表多边形的标准,紧凑的方法是列出二进制角弯角的坐标。我们使用此表示,因此介绍了问题的第一个多项式时间算法。具体而言,我们给出了一个简单的$ o(n \ log n)$算法,用于用正方形铺平,另一个涉及$ o(n^3 \,\ text {polylog} \,n)$算法,用于与多米诺骨牌打包和瓷砖,如果$ n $是$ p $ $ p $。
A polyomino is a polygonal region with axis parallel edges and corners of integral coordinates, which may have holes. In this paper, we consider planar tiling and packing problems with polyomino pieces and a polyomino container $P$. We give two polynomial time algorithms, one for deciding if $P$ can be tiled with $k\times k$ squares for any fixed $k$ which can be part of the input (that is, deciding if $P$ is the union of a set of non-overlapping $k\times k$ squares) and one 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 three problems there are known pseudo-polynomial time algorithms, that is, algorithms with running times polynomial in the 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^3\,\text{polylog}\, n)$ algorithm for packing and tiling with dominos, where $n$ is the number of corners of $P$.