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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n个矩形的交点 - 恰好是k个矩形相交的区域的最大数量相关的知识,希望对你有一定的参考价值。

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

我现在正在寻找的是k = 2,...,n矩形正好相交的区域的最大可能数量(这些区域如图所示)。换句话说,我正在寻找n矩形的最坏情况对齐,以便精确地与k矩形相交的区域的数量达到其最大值。理论上,qacxswpoi矩形交叉的最大可能区域数是k(二项式系数)。然而,这个公式几何只对n over k有效,因为它不可能对齐n < 4(和绘制)矩形,以便在最坏的情况下n >= 4区域存在恰好n over k矩形相交的地方。

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

答案

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

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

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

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

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

用矩阵A的第i行表示第i个矩形,该矩阵A具有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!

另一答案

如果矩形3 over 3 = 1Aij相交,则构建一个矩阵,其中单元格1i,如果不相交,则构建j。该矩阵是对称的。

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

“最坏”的情况,其中1,相互交叉的矩形的数量是最大的,在矩阵中由k连续的k表示,其间没有1。您可以考虑对角线后面的元素。这样,属性“矩形0与矩形i相交”就完成了。

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

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

以上是关于n个矩形的交点 - 恰好是k个矩形相交的区域的最大数量的主要内容,如果未能解决你的问题,请参考以下文章

BCZM : 1.7

从2个矩形中获取交点

矩形重叠(矩形相交,dp)

洛谷P3625 - [APIO2009]采油区域

UVA - 10382 Watering Grass(几何)

可以与单条直线相交的最大可能矩形数