Partitioning a Polygon Into Small Pieces
We study the problem of partitioning a given simple polygon P into a minimum number of polygonal pieces, each of which has bounded size. We give algorithms for seven notions of `bounded size,' namely that each piece has bounded area, perimeter, straight-line diameter, geodesic diameter, or that each piece must be contained in a unit disk, an axis-aligned unit square or an arbitrarily rotated unit square. A more general version of the area problem has already been studied. Here we are, in addition to P, given positive real values a_1,…,a_k such that the sum ∑_i=1^k a_i equals the area of P. The goal is to partition P into exactly k pieces Q_1,…,Q_k such that the area of Q_i is a_i. Such a partition always exists, and an algorithm with running time O(nk) has previously been described, where n is the number of corners of P. We give an algorithm with optimal running time O(n+k). For polygons with holes, we get running time O(nlog n+k). For the other problems, it seems out of reach to compute optimal partitions for simple polygons; for most of them, even in extremely restricted cases such as when P is a square. We therefore develop O(1)-approximation algorithms for these problems, which means that the number of pieces in the produced partition is at most a constant factor larger than the cardinality of a minimum partition. Existing algorithms do not allow Steiner points, which means that all corners of the produced pieces must also be corners of P. This has the disappointing consequence that a partition does often not exist, whereas our algorithms always produce useful partitions. Furthermore, an optimal partition without Steiner points may require Ω(n) pieces for polygons where a partition consisting of just 2 pieces exists when Steiner points are allowed.
READ FULL TEXT