对矩形进行分区而不损害内部矩形


12

C是轴平行的矩形。

C1,,Cn是成对的,内部不相交的轴平行矩形,这样像这样:C1CnC

在此处输入图片说明

矩形保留分区C是一个分区C=E1EN,使得Nn,所述Ei是成对-内部不相交轴线平行的长方形,并为每i=1,,nCiEi,即每个现有矩形都包含在一个唯一的新矩形中,如下所示:

在此处输入图片说明

查找具有小的矩形保留分区的算法是什么?N

特别是,是否有一种算法可以找到部分的矩形保留分区?N=O(n)

Answers:


4

新答案:以下简单算法是渐近最优的:

任意拉伸每个矩形,以最大可能的程度,以使矩形保持成对不相交的形式。Ci

孔的数量最多为。这是渐近最佳的,因为存在其中孔的数量至少为。k2kO(k)

证明在本文中


旧答案:

以下算法虽然不是最佳算法,但显然足以找到具有部分的矩形保留分区。N=O(n)

该算法具有直线多边形,它被初始化为矩形。PC

阶段1:选择一个矩形的邻近的西边界(即,没有其他矩形西侧之间和的西边界)。将放在内并拉伸,直到它触及的西边界。令(对于)为的扩展版本。令。重复阶段1次,直到所有CiPCjCiPCiPPEii=1,,nCiP=PEinn原始矩形被放置并拉伸。在下图中,放置矩形的可能顺序为:C1,C2,C4,C3

在此处输入图片说明

现在,是一个直线多边形(可能是断开的),如下所示:P

在此处输入图片说明

我宣称的数目凹顶点在至多是。这是因为,每当从删除拉伸矩形时,就有3种可能性:P2nP

  • 添加了2个新的凹形顶点(例如放置);C1,C4
  • 添加了3个新的凹形顶点,并删除了1个(类似于);C3
  • 添加了4个新的凹顶点,并移除了2个(与)。C2

第2阶段:分区到使用现有的算法轴线平行的矩形(参见Keil的2000年,10-13页Eppstein的2009,页3-5综述)。P

Keil引用了一个定理,该定理说最小分区中的矩形数量以1 +凹顶点的数量为界。因此,在我们的情况下,该数目最多,分区中矩形的总数为。2n+1N3n+1


此算法不是最佳算法。例如,在上面的示例中,它给出了而最优解的结果是。因此,还有两个问题:N=13N=5

答:此算法正确吗?

B.是否有一个多项式时间算法来找到最佳,或者至少是一个更好的近似值?N


好吧,在第1阶段中,您将添加分区单元,每个分区单元仅包含一个初始矩形,并且在另一个矩形上不重叠。在阶段2中,您对剩余空间进行了分区,因此在阶段2中创建的单元格不与任何初始矩形相交。正确性证明似乎很简单,还是我错过了什么?
玻色子

@Boson我不确定的一点是凹顶点的数量最多。似乎“显而易见”,正如我所写的,只有3种可能性,但是我可能错过了其他一些可能性。2n
Erel Segal-Halevi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.