我正在寻求帮助以改进放置奇怪形状块的算法。我的问题域很奇怪,但我的块最好的类比是俄罗斯方块,除了它们可以有四个以上。这些块仍然仅由直角组成,但它们可以是长而弯曲的,它们可以分支,等等。
我试图在最小的空间中安排多个任意形状的大块(我知道,一个装箱问题),但我目前的解决方案看起来很难看。我基本上是放置一个,然后通过尝试将它们放置在我的网格的原点来强制其余的,然后慢慢地将它们推向不同的方向,直到它们不再碰撞。它并不慢,但它并没有尝试很好地安装部件,因此它们不会浪费整体空间。
我唯一能想到的尝试是按大小对积木进行排序,首先放置最大的,然后将最小的放在最后的任何孔中。但肯定有一些方法会适得其反。
有什么启发式或近似算法可以帮助我吗?
结果如下所示:
另外,也许我的 gravatar 表明这与洛克人有关……