n个矩形的交点 - 恰好是k个矩形相交的区域的最大数量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n个矩形的交点 - 恰好是k个矩形相交的区域的最大数量相关的知识,希望对你有一定的参考价值。
想象一下n
轴对齐的矩形(由其位置(x,y)
,宽度和高度指定)。矩形以某种方式对齐,使得i
-th矩形必然与(i+1)
-th相交。例如,让n = 3
,然后1
必然与2
和2
与3
相交。值得一提的是,这不是传递性的; 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 = 1
和Aij
相交,则构建一个矩阵,其中单元格1
是i
,如果不相交,则构建j
。该矩阵是对称的。
现在注意到许多0
靠近对角线意味着连续对齐矩形之间的交叉点更多。
“最坏”的情况,其中1
,相互交叉的矩形的数量是最大的,在矩阵中由k
连续的k
表示,其间没有1
。您可以考虑对角线后面的元素。这样,属性“矩形0
与矩形i
相交”就完成了。
问题是如何交换行和列来实现此结果。它可能是矩阵带宽减少问题。例如,参见j
和this。
您还可以为您的特殊情况生成自己的算法。请注意它可能是NP问题,并且可能存在多种解决方案。
以上是关于n个矩形的交点 - 恰好是k个矩形相交的区域的最大数量的主要内容,如果未能解决你的问题,请参考以下文章