n个矩形的交点 - 恰好是k个矩形相交的区域的最大数量

时间:2017-12-10 17:28:13

标签: algorithm geometry complexity-theory computational-geometry

想象一下n轴对齐的矩形(由其位置(x,y)指定,宽度和高度)。矩形以某种方式对齐,以使i - 矩形必然(i+1) - th相交。例如,让n = 31必须与223相交。重要的是要提到这是传递; 3 可以1相交,但无法保证(请参阅两个有效对齐示例的图)。

Examples for valid alignments of <code>n=3</code> rectangles. The right sub-image shows a worst-case alignment.

我现在正在寻找的是完全 k = 2,...,n矩形相互交叉的区域的最大可能数量(图中显示了这些区域)。换句话说,我正在寻找n矩形的最坏情况对齐,以便精确k矩形相交的区域的数量达到其最大值。 理论,exaclty k矩形相交的区域的最大可能数量是n over k(二项式系数)。但是,此公式几何仅对n < 4有效,因为n >= 4无法对齐(和绘制)矩形,因此在最坏情况下{{1}存在恰好n over k个矩形相交的区域。

该图的第一个子图像显示k的最坏情况对齐。有n = 3个区域恰好有两个矩形相交,而3 over 2 = 3区域恰好有三个矩形相交。第二个子图像还显示了三个矩形的有效对齐,但这不是最坏情况的对齐,例如,没有正好有三个矩形相交的区域。

2 个答案:

答案 0 :(得分:1)

错误答案;不会因为可能有用或无用的方法而被删除。

几何数据 - 矩形相交 - 可以被抽象掉:重要的是以下属性:

属性P:如果矩形i和j相交,则意味着我也与i + 1,...,j-1相交。

如果您对问题的表示编码为P,那么您开始使用矩形并不重要。

现在,我们如何记录哪些矩形相交?一种方法是图形,其中节点是矩形和边缘交点,但这不是非常有用,因为上面的属性P在图中不明显。更好的方法是设置以下矩阵:

表示具有矩阵A的第i行的第i个矩形,其具有0s直到条目A(i,i),1s从A(i,i)到A(i,i + m),其中i + m是与矩形i相交的最远矩形的索引。也就是说,A有n行,每个原始矩形一个,它由0和1组成,当且仅当矩形i和j相交时,j> i的A(i,j)为1。对于j

现在,我们有一个正好相交的矩形区域是什么意思?我声称上面的矩阵表示具有正好k 1s的列。为什么?假设您的区域是矩形i + 1,...,i + k的交点。看一下矩阵条目A(i + k,i + k)。它上面的列有1个行,从1 + 1到i + k,否则为0。

上述矩阵看起来与年轻人的偏斜表现相似,因此评论。但是,相似性是肤浅的,因为它不是来自分区。

现在仍然要最大化A中具有正好k 1s的列数。我认为最好的一个是每行中恰好有k 1s的矩阵,这将给出原始问题的答案n。答案显然是错误的,所以我在这里遗漏了一些东西。 Aaaaah!

答案 1 :(得分:0)

如果矩形Aij1相交,则构建一个矩阵ij的矩阵,如果它们不相交,则构建0。该矩阵是对称的。

现在请注意,靠近对角线的许多1意味着连续对齐矩形之间的交叉点更多。

&#34;最糟糕的&#34; case,其中k,相互交叉的矩形数量最大,由矩阵k连续1表示,没有{{1}介于两者之间。您可以在对角线之后考虑元素。这样,属性&#34;矩形0与矩形i和#34相交;已经实现了。

问题是如何交换行和列来实现此结果。它可能是矩阵带宽减少问题。 例如,请参阅thisthis

您还可以为您的特殊情况生成自己的算法。请注意它可能是NP问题,并且可能存在多种解决方案。