奇妙な形のブロックを配置するためのアルゴリズムを改善するための助けを探しています。私の問題領域は奇妙ですが、私のブロックの最も良い例えは、4つ以上のピースを持つことができることを除いて、テトリスのピースです。ブロックはまだ直角だけで構成されていますが、長くて曲がりくねっていたり、分岐したりすることができます。
最小限のスペースに複数の大きな任意の形状のブロックを配置しようとしていますが(ビンパッキング問題です)、現在の解決策は見苦しいです。基本的に1つを配置し、残りをブルートフォースしてグリッドの原点に配置し、衝突しなくなるまでゆっくりとさまざまな方向に押します。遅くはありませんが、ピースをうまくフィットさせようとはしないので、全体のスペースを無駄にしません。
私が試すことができる唯一のことは、ブロックをサイズ順に並べ、最初に最大のものを配置し、次に残りの穴に最後に最小のものをはめ込むことです。しかし、裏目に出ることができる方法は確かにあります。
ここで役立つヒューリスティックまたは近似アルゴリズムはありますか?
結果は次のようになります。
また、おそらく私のGravatarは、これがロックマンに関連していることを示しています...