【问题标题】:Packing maximum-size rectangles with one dimension fixed打包一维固定的最大尺寸矩形
【发布时间】:2014-10-19 15:42:38
【问题描述】:

我正在尝试找到一个多项式算法来至少近似地解决以下问题(我不确定该问题是否可能是 NP-hard):

给定实线上的一组开区间,应该将它们“扩展”到第二维,创建一组矩形,并将它们打包成一个高度为 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)

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

【问题讨论】:

  • 一个点可以属于多少个区间?
  • 任何有限数——它甚至可以是同一区间的 n 个副本(尽管这很容易)。

标签: algorithm computational-geometry


【解决方案1】:

这确实有一种 NP-complete 的感觉。

您当然可以通过将n 间隔分配给从(1/n, 2/n, ... 1) 随机选择的高度的线段,然后垂直扩展/滑动间隔直到它不能再增长,来提出一个随机解决方案。这样做几次,最好的解决方案可能就可以了。然后,您可以对其进行模拟退火,以迭代地将良好的随机解决方案改进为更好的解决方案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    相关资源
    最近更新 更多