如何找到最少量的细分

时间:2009-08-12 21:29:50

标签: algorithm mathematical-optimization

想象一下你有一个画布,在这个画布中已经有了一些对象。你怎么能找到用方块覆盖“未覆盖”区域的最小方法,而不是相互重叠,完全填满画布。

在我的例子中,“canvas”是一个html-div容器,对象是嵌套的div-containers。 看起来像这样:http://www.encodechain.com/demo/200908_optimize.png 在左边是“开始”,在右边是可能的第一步“......”

我知道有一个算法,但目前我不记得这个名字了。

2 个答案:

答案 0 :(得分:2)

我能找到的最好的是这篇论文:Tiling a rectangle with the fewest squares。 这篇论文是一本有趣的读物,虽然有时它会深入探讨理论领域,并谈论“普遍常数”。我不确定“可以用n个方格平铺大小为m的矩形”的问题是NP完全的。如另一个回复中所述,您的问题类似于NP完整的包装问题。当然,你的问题是对本文所述问题的概括,因为你正在处理非矩形区域。您可以先将您的区域划分为最小数量的矩形,这本身就是另一个有趣的问题。最后,即使你能够有效地做到这一点,我也不确定是否最佳地平铺这些矩形会导致整体最佳平铺。

正如作者所说,贪婪的算法是一个很好的起点:只需放下最大的方块,直到该区域已满。

答案 1 :(得分:0)

Packing Problem

Knapsack Problem

解决2d打包问题的article