【问题标题】:How to find the minmal bounding rectangles for a set of lines?如何找到一组线的最小边界矩形?
【发布时间】:2011-12-14 13:48:14
【问题描述】:

在二维轴上提供一组 N 条连接线,我正在寻找一种算法来确定 X 个最小边界矩形。

例如,假设我有 10 条线,我想用最多 3 个(可能相交的)矩形来限制它们。因此,如果 8 条线紧密地聚集在一起,它们可能使用 1 个矩形,而另外两条可能使用第二个或第三个矩形,具体取决于它们彼此的接近程度。

谢谢。

【问题讨论】:

  • 抱歉,我没有得到您想要最小化的内容:矩形的数量?矩形的总面积?还有什么?
  • 聚合区域。很抱歉造成混乱。
  • 感谢您提供额外信息。现在我想到了,但是,您需要更多限制,或者您可以在每个点周围制作一个超小矩形(与点一样多的矩形),您就完成了
  • 好的。我在这里犯了一个错误。我实际上想绑定连接点的线,而不是点本身。在大多数情况下,我从不想要超过 4 个矩形,因此仅单独限制线条本身是不够的。谢谢!
  • 也许画个图?这个很有趣,但我不知道你的意思是 N 条相交的线,形成一个多边形还是什么。

标签: algorithm graphics geometry 2d


【解决方案1】:

如果这些线实际上是一条路径,那么也许您不会反对每个矩形覆盖路径的连续部分的要求。在这种情况下,有一个运行时间为 O(n2 r) 的动态程序,其中 n 是线段数,r 是矩形数。

计算一个包含条目 C(i, j) 的表,表示用 j 个矩形覆盖线段 1、...、i 的成本。递归是,对于 i,j > 0,

C(0, 0) = 0
C(i, 0) = ∞
C(i, j) = min over i'

有 O(n r) 个条目,每个条目的计算时间为 O(n)。通过例如为每个条目存储最佳 i' 来恢复最后的最佳矩形集合。

我不知道针对一般情况的简单、最佳算法。由于“只有”O(n4) 个矩形的边缘都包含一个线段端点,因此我很想将这个问题表述为广义集合覆盖的一个实例。

【讨论】:

    猜你喜欢
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多