可变大小块的有效定位

时间:2011-06-20 22:16:37

标签: java algorithm performance position

我有一个矩形数组(长度和宽度)。不保证是正方形,但始终保证是整数。我想尽可能有效地将块放在坐标系中,以便包含所有元素的边界框尽可能小。我也想倾向于一个广场。大小方面的差异不会太大,但我想要一个通用的算法。

我发现这有点难以搜索,只是想找人指点我正确的方向。只是寻找伪代码(语言无关紧要)或者如果需要可以用Java实现的库。性能是一个问题所以我真的需要它在各方面都尽可能高效。

注意:如果我仅限于使用正方形,这会变得更容易,这可能是一种选择。

2 个答案:

答案 0 :(得分:3)

维基百科上的Packing problem文章链接到this algorithm,在this paper中描述 - “最佳矩形包装:初步结果”。

答案 1 :(得分:0)

我不确定它与E先生指出的算法相比如何,但是一旦我建立了一个窗口系统,我就需要在屏幕外存储矩形图像。我的方法是:

将存储空间想象为向左倾斜45度,因此您有一个V形垃圾箱。 它有一个“谷点”,在最底部(原点)

\    /
 \  /
  \/

将一个块放入其中,因此块的底角位于谷点。

现在,从左到右,你有两个山谷点,你可以放下额外的块。 每次将块放入谷点时,都会修改谷点列表。

\    /
 \/\/

如果你将一个大块放入一个由小块组成的山谷点,它确实会浪费空间,所以如果可能的话,最好先放入大块。当您放入一个块时,您可以选择浪费最小空间的谷点。

正如我所说,我不知道它与其他算法的比较,但很简单。

相关问题