在表面上排列随机大小的正方形的算法?

时间:2012-07-27 07:58:26

标签: algorithm

问题很简单,我有一组随机大小的正方形(宽度,高度)和固定宽度的表面。在这个表面上排列正方形的最有效算法是什么?方块之间必须没有无用的间隙。有可能吗?不使用AI或重处理?

类似于这张照片的东西,但假设我的表面没有限制在底部,它是一个固定宽度和无界高度的表面。

3 个答案:

答案 0 :(得分:6)

这个问题叫做2d bin pack。这是解决问题的方法:

http://codeincomplete.com/posts/2011/5/7/bin_packing/

答案 1 :(得分:0)

对于这样的事情,您可以使用Bin Packing Problem的变体,在那里尝试打包尽可能多的方格在您的工作表中,否则使用(可能看起来更合适) )Cutting Stock Algorithm

但请注意,在这两种情况下,您的方块之间不会有间隙。

答案 2 :(得分:0)

此类优化问题称为Linear programming (linear optimization)。坏消息是它很复杂。

看看Simplex algorithm代数方法,有更多通用的数值方法,搜索内点法。

有免费的图书馆,例如:LP_SOLVE