包装最大尺寸的矩形,一维固定

时间:2014-10-19 15:42:38

标签: algorithm computational-geometry

我试图找到一个多元算法来至少近似地解决以下问题(我不确定问题是否可能是NP难的):

给出实线上的一组开放区间,一个人应该"延伸"这些进入第二个维度,创建一组矩形,并将它们打包成一个高度为1的条带,即 R x [0,1]

解决方案应尽量避免小高度的矩形 - 在形式上,对于词汇比较,矩形高度的上升排序矢量应该是最大的。

针对给定问题的示例解决方案 (0,3)红色,(1,5)绿色,(3,7)紫色,(4,6)蓝色

另一个稍微复杂的例子: (0,1),(0,6),(1,2),(1,8),(3,9),(4,5),(7,8),(8,9) enter image description here

第二种解决方案实际上并不是最佳的:如果交换灰色和青色,蓝色可以增长到2/4高度,代价是将紫色缩小到高度2/4 - 这是一个更好的解决方案。

1 个答案:

答案 0 :(得分:1)

这确实有NP完全的感觉。

您当然可以通过将n间隔分配给来自(1/n, 2/n, ... 1)的随机选择高度的线段,然后垂直展开/滑动间隔直到它无法增长来提出随机解决方案更多。这样做几次,最好的解决方案可能会好起来的。然后,您可以在其上抛出模拟退火,以迭代地改进优秀的随机解决方案。

另一种方法是计算出同时打开的间隔的最大数量m。然后从左向右进行,并随机将间隔分配给当前打开的大小为1/m的广告位。然后像以前一样展开/滑动间隔以找到局部最大解。与第一个不同,这将保证最短的矩形是最佳尺寸。和以前一样,您可以使用此生成方法作为随机优化算法的开始。