新しい回答:次の単純なアルゴリズムは漸近的に最適です。
各長方形任意に、可能な限り最大限にて、長方形がペアごとにばらばらになるようにします。C私
穴の数は最大でです。穴の数が少なくともである構成があるため、これは漸近的に最適です。k−2k−O(k−−√)
証明はこの論文にあります。
古い回答:
次のアルゴリズムは、最適ではありませんが、部分を持つ長方形を保持するパーティションを見つけるには明らかに十分です。N= O (n )
このアルゴリズムは、長方形初期化される直線ポリゴンで機能します。PC
フェーズ1:西側境界に隣接する長方形を選択します(つまり、の西側と西側境界の間に他の長方形はありません)。を内に配置し、西の境界に接触するまで引き伸ばします。してみましょう(のために)の延伸バージョンで。してみましょう。すべてのまでフェーズ1を回繰り返しますC私PCjC私PC私PPEii=1,…,nCiP=P∖Einn元の長方形が配置され、引き伸ばされます。以下の画像では、長方形を配置する可能な順序はです。C1,C2,C4,C3
現在、は次のように直線のポリゴン(切断されている可能性があります)です。P
私は多くのことを主張し、凹面頂点における最大である。これは、引き伸ばされた長方形がから削除されるたびに、3つの可能性があるためです。P2nP
- 2つの新しい凹状の頂点が追加されます(配置するときなど)。C1,C4
- 3つの新しい凹状の頂点が追加され、1つが削除されます(と)。C3
- 4つの新しい凹状の頂点が追加され、2つが削除されます(場合と同様)。C2
フェーズ2:既存のアルゴリズムを使用して、を軸に平行な長方形に分割します(Keil 2000の10〜13ページおよびEppstein 2009の3〜5 ページを参照してください)。P
2 n + 1N≤ 3 のn + 1
N=13N=5
A.このアルゴリズムは正しいですか?
N