【问题标题】:algorithm for finding least area occupied with n rectangulars寻找n个矩形占用的最小面积的算法
【发布时间】:2016-05-06 17:57:46
【问题描述】:

我有一些矩形,我想找到最小的矩形,它可以覆盖所有小的矩形。不允许旋转。

使用蛮力我想找到我的答案。我正在尝试用java对其进行编码。 我知道我应该检查我的 n 个项目的所有排列并找到最小的区域。为了使它更容易,我首先尝试找到最小的可能区域。然后我使用带有布尔值的二维数组来检查每个单元格是否被占用。但我无法弄清楚(编码)。

如何检查我的物品是否可以放置在我的有限区域内?例如,我在x[0][0]x[10][1] 中找到了我的第一项,并使此范围内的所有单元格都为真,但我不知道如何告诉我的程序检查其他单元格中的下一项。你能告诉我我的算法需要实现的步骤吗?

【问题讨论】:

    标签: algorithm bin-packing


    【解决方案1】:

    您的问题属于二维装箱问题。这是一个 NP-hard 问题,因此不存在一个有效的多项式时间算法来解决它。 (除非 P==NP)。

    您可以尝试蛮力算法或聪明的启发式算法,这将为您提供相当理想的解决方案。

    参考以下链接:
    1.How is 2D bin packing achieved programmatically?(讨论各种算法)
    2.http://www.codeproject.com/Articles/210979/Fast-optimizing-rectangle-packing-algorithm-for-bu(实现细节)
    3. http://www.binpacking.4fan.cz/(用于可视化不同的启发式)


    您的蛮力算法非常低效。可以放置矩形的排列非常庞大且难以找到。我建议你试试上面提到的算法,这比找到所有排列更容易实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 2018-05-01
      • 2012-12-25
      • 2018-07-17
      • 2011-06-02
      • 2012-01-27
      • 1970-01-01
      相关资源
      最近更新 更多