私はこの問題の 2D バリアントを解決しようとしています: Box stacking problem
問題は、元のボックスとは異なり、同じボックスの複数のインスタンスが許可されていないことです。もちろん、2D の長方形を回転させることもできます。
高さ制限も課されているため、タワーはこの制限以下でなければなりません。
別のボックスの下にあるボックスのベースは、それよりも大きくなければなりません (厳密には大きくはなりません)。
私は LIS アルゴリズムを適用しようとしており、他の制限は処理されているようですが、重複しないルールを説明する方法が思いつきません。
だから私の主な質問は、スタックの高さを最大化し、それを制限以下に維持しようとしている場合、重複なしのルールをどのように説明するのですか? ありがとう
編集:
3D バリアントの場合と同じように、アイテムごとに 2 つの可能なローテーションを作成すると、この問題は 0-1 ナップザック問題に非常に似ていることに気付きました。最適なタワーは、この並べ替えられたリストのサブセットを使用して順番に構築する必要があるため、どのタワーを使用するかを選択する必要があります。ただし、重複が発生しないようにする方法はまだわかりません。これを解決するための助けはありますか?ありがとう
編集2:
私はこのリンクを見つけました:http://courses.csail.mit.edu/6.006/fall10/handouts/recitation11-19.pdf 4ページに単一インスタンスの3D最大高さバージョンを解決する方法が記載されていますが、これは呼び出しごとに最大の高さを返すため、高さ制限バージョンでは機能しません。多分これは高さ制限に対応するために変更できますか?