当前位置: X-MOL 学术ACM Trans. Algorithms › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Tiling with Squares and Packing Dominos in Polynomial Time
ACM Transactions on Algorithms ( IF 1.3 ) Pub Date : 2023-07-14 , DOI: https://dl.acm.org/doi/10.1145/3597932
Anders Aamand, Mikkel Abrahamsen, Peter M. R. Rasmussen, Thomas D. Ahle

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 polynomial-time algorithms for deciding if P can be tiled with k × 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 × k squares) and for packing P with a maximum number of non-overlapping and axis-parallel 2 × 1 dominos, allowing rotations by 90°. As packing is more general than tiling, the latter algorithm can also be used to decide if P can be tiled by 2 × 1 dominos.

These are classical problems with important applications in VLSI design, and the related problem of finding a maximum packing of 2 × 2 squares is known to be NP-hard [6]. For our three 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 problems of packing and tiling with dominos to finding a maximum and perfect matching in a graph with O(n3) 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.



中文翻译:

在多项式时间内用正方形进行平铺并打包多米诺骨牌

多骨牌是具有与轴平行的边和积分坐标的角的多边形区域,其中可能有孔。在本文中,我们考虑多骨牌片和多骨牌容器P的平面平铺和包装问题。我们给出多项式时间算法来决定P是否可以用k × k方格平铺,对于任何可以作为输入一部分的固定k (即,决定P是否是一组不重叠的k × k方格的并集)),对于包装P,最大数量不重叠且轴平行2 × 1多米诺骨牌,允许旋转 90°。由于打包比平铺更通用,因此后一种算法也可以用来决定P是否可以由 2 × 1 多米诺骨牌平铺。

这些是 VLSI 设计中具有重要应用的经典问题,而找到 2 × 2 方格最大堆积的相关问题被称为 NP 困难问题 [6]。对于我们的三个问题,存在已知的伪多项式时间算法,即运行时间多项式在P面积周长内的算法。然而,表示多边形的标准、紧凑方式是通过以二进制形式列出角的坐标。我们使用这种表示,从而提出了解决该问题的第一个多项式时间算法。具体来说,我们给出了一个简单的O(n log n ) 时间算法来平铺正方形,其中n是P的角数然后,我们给出了一种更复杂的算法,该算法可以减少多米诺骨牌的打包和平铺问题,从而在具有O ( n 3 ) 个顶点的图中找到最大且完美的匹配。这导致算法的运行时间为 \(O(n^3 \frac{\log ^3 n}{\log ^2\log n})\) 和 \(O(n^3 \frac{\log ^2)分别为 n}{\log \log n})\)。

更新日期:2023-07-14
down
wechat
bug