【发布时间】:2010-05-16 05:06:58
【问题描述】:
我正在寻找如下算法:
给定一组可能重叠的矩形(所有这些都是“不旋转的”,可以统一表示为(左、上、右、下)连音等...),它返回一个最小的(非-rotated) 不重叠的矩形,占据相同的区域。
乍一看似乎很简单,但事实证明很棘手(至少要有效地完成)。
这个/ideas/pointers 有一些已知的方法吗?
对于不一定是最小但启发式小集的方法也很有趣,产生任何有效输出集的方法也是如此。
【问题讨论】:
-
您的意思是合并矩形并将其拆分为矩形区域吗?还是必须在输出中表达原始行的并集?换句话说,如果我有两个相邻的 10x20 矩形,我可以输出一个 20x20 的正方形吗?或者,如果我有两个输入,我是否需要始终至少有两个输出?
-
输出集(联合)的唯一要求是占据与输入集(联合)相同的区域,并且由不重叠的矩形组成。最好它也是最小的:包括尽可能少的矩形。所以,是的,在这种情况下你最好吐出一个矩形。
-
你使用什么编程语言?
-
对于未来出现的任何人 - stackoverflow.com/questions/5919298/… 是此副本的副本,并在答案中提供了最佳和有效的解决方案。
标签: algorithm computational-geometry mathematical-optimization rectangles graphics