Anders Aamand, Mikkel Abrahamsen, Peter M. R. Rasmussen, Thomas D. Ahle
{"title":"多项式时间下的方块平铺和多米诺骨牌填充","authors":"Anders Aamand, Mikkel Abrahamsen, Peter M. R. Rasmussen, Thomas D. Ahle","doi":"https://dl.acm.org/doi/10.1145/3597932","DOIUrl":null,"url":null,"abstract":"<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 <i>P</i>. We give polynomial-time algorithms for deciding if <i>P</i> can be tiled with <i>k</i> × <i>k</i> squares for any fixed <i>k</i> which can be part of the input (that is, deciding if <i>P</i> is the union of a set of non-overlapping <i>k × k</i> squares) and for packing <i>P</i> with a maximum number of non-overlapping and axis-parallel <i>2 × 1</i> dominos, allowing rotations by 90°. As packing is more general than tiling, the latter algorithm can also be used to decide if <i>P</i> can be tiled by 2 × 1 dominos.</p><p>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 <i>area</i> or <i>perimeter</i> of <i>P</i>. 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 <i>O(n</i> log <i>n</i>)-time algorithm for tiling with squares, where <i>n</i> is the number of corners of <i>P</i>. 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 <i>O</i>(<i>n</i><sup>3</sup>) 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>","PeriodicalId":50922,"journal":{"name":"ACM Transactions on Algorithms","volume":"7 17","pages":""},"PeriodicalIF":0.9000,"publicationDate":"2023-07-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Tiling with Squares and Packing Dominos in Polynomial Time\",\"authors\":\"Anders Aamand, Mikkel Abrahamsen, Peter M. R. Rasmussen, Thomas D. Ahle\",\"doi\":\"https://dl.acm.org/doi/10.1145/3597932\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"<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 <i>P</i>. We give polynomial-time algorithms for deciding if <i>P</i> can be tiled with <i>k</i> × <i>k</i> squares for any fixed <i>k</i> which can be part of the input (that is, deciding if <i>P</i> is the union of a set of non-overlapping <i>k × k</i> squares) and for packing <i>P</i> with a maximum number of non-overlapping and axis-parallel <i>2 × 1</i> dominos, allowing rotations by 90°. As packing is more general than tiling, the latter algorithm can also be used to decide if <i>P</i> can be tiled by 2 × 1 dominos.</p><p>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 <i>area</i> or <i>perimeter</i> of <i>P</i>. 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 <i>O(n</i> log <i>n</i>)-time algorithm for tiling with squares, where <i>n</i> is the number of corners of <i>P</i>. 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 <i>O</i>(<i>n</i><sup>3</sup>) 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>\",\"PeriodicalId\":50922,\"journal\":{\"name\":\"ACM Transactions on Algorithms\",\"volume\":\"7 17\",\"pages\":\"\"},\"PeriodicalIF\":0.9000,\"publicationDate\":\"2023-07-14\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"ACM Transactions on Algorithms\",\"FirstCategoryId\":\"94\",\"ListUrlMain\":\"https://doi.org/https://dl.acm.org/doi/10.1145/3597932\",\"RegionNum\":3,\"RegionCategory\":\"计算机科学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q3\",\"JCRName\":\"COMPUTER SCIENCE, THEORY & METHODS\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"ACM Transactions on Algorithms","FirstCategoryId":"94","ListUrlMain":"https://doi.org/https://dl.acm.org/doi/10.1145/3597932","RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q3","JCRName":"COMPUTER SCIENCE, THEORY & METHODS","Score":null,"Total":0}
Tiling with Squares and Packing Dominos in Polynomial Time
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.
期刊介绍:
ACM Transactions on Algorithms welcomes submissions of original research of the highest quality dealing with algorithms that are inherently discrete and finite, and having mathematical content in a natural way, either in the objective or in the analysis. Most welcome are new algorithms and data structures, new and improved analyses, and complexity results. Specific areas of computation covered by the journal include
combinatorial searches and objects;
counting;
discrete optimization and approximation;
randomization and quantum computation;
parallel and distributed computation;
algorithms for
graphs,
geometry,
arithmetic,
number theory,
strings;
on-line analysis;
cryptography;
coding;
data compression;
learning algorithms;
methods of algorithmic analysis;
discrete algorithms for application areas such as
biology,
economics,
game theory,
communication,
computer systems and architecture,
hardware design,
scientific computing