最小数の長方形で凹多角形を覆う


11

最小の長方形で単純な凹面多角形をカバーしようとしています。長方形の長さは任意ですが、最大の幅があり、多角形が鋭角になることはありません。

私は凹型ポリゴンを三角形に分解して、各三角形を最小限に制限する一連の最小重複長方形を生成し、それらの長方形をより大きな長方形にマージしようと考えました。ただし、これはポリゴンのエッジの小さなノッチでは機能しないと思います。これらのノッチの反射頂点によって作成された三角形は、間違った長方形を作成します。ノッチにまたがる/無視する長方形を探しています。

計算幾何学については本当に何も知らないので、どのように質問を始めればよいのかよくわかりません。

私は似ている他の投稿を見つけましたが、必要なものではありません:

いくつかの例:黒は入力です。赤は許容可能な出力です。

ここに画像の説明を入力してください

別の例:2番目の出力が優先されます。ただし、両方の出力を生成し、別の要因を使用して優先度を決定することがおそらく必要であり、このアルゴリズムの責任ではありません。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

曲線を模倣するポリゴンは非常にまれです。このシナリオでは、長方形の領域の多くが無駄になります。ただし、各長方形は最大幅の制約に従うため、これは許容されます。

ここに画像の説明を入力してください

また、私はこの記事が必要なものに近いことを発見しました。

たぶんより良い質問は、「凹面多角形の長方形のような部分をどのように識別できますか?」です。 ここに画像の説明を入力してください

目的の実装を示す画像を次に示します。 ここに画像の説明を入力してください

緑は実際の材料使用量です。赤い長方形はレイアウトです。青はポリゴン全体のMBRです。少しMBRを取得して埋めようとする必要があると考えています。ポリゴンの中央で終わる左上隅の2〜3個の緑色の長方形は高価です。それが最小化したいものです。緑の長方形には最小と最大の幅と高さがありますが、領域をカバーするために必要な数の行と列を使用できます。繰り返しますが、入力にまたがらない長方形の数を最小限に抑える必要があります。また、非常に高価な小さな場所に収まるように緑色の長方形の形状を変更することもできます。言い換えれば、できるだけ多くの長方形をできる限り広げることが理想的です。


3
あなたのタイトルは凸多角形ですが、質問は凹多角形について語っています。おそらくあなたはいくつかの修正を行う必要がありますか?
アンクール

1
@JukkaSuomela、最初の2つの写真では、ポリゴンのサイズはほぼ同じです。最初の写真では、2番目の写真のように3つの長方形を垂直に実行できました。ただし、これはあまり望ましくありません。このトリックは、長方形の周囲に関係していると思います。多分私がやろうとしているのは、多角形の内側にある長方形の境界の量を最小化し、多角形のエッジと同一線上にある境界の量を最大にすることです。ただし、場合によっては、四角形を完全に覆うために多角形から飛び出す必要があります。
ジョシュC.

1
@JohnMoeller、わかりました。これは、人間が簡単に解決策を特定できる問題ですが、問題を正確に述べることは非常に困難です。問題はカーペットや壁紙の敷設に似ており、実際の問題は構造的/建築的なものです。後で別の形式のテッセレーションで満たされる長方形レイアウトの領域を特定しようとしています。これらの長方形を見つけて、非長方形の領域を処理することが問題です。もっと説明できるかどうか教えてください。
ジョシュC.

2
最初にモデリングの質問としてこれにアプローチする必要があると思います。目標は、明確に定義された最適化問題を解決するアルゴリズムを考え出すことではなく、最適化問題を定義することです。
ユッカスオメラ

3
@JoshC .:実世界のアプリケーションについてもっと教えてくれたら、おそらく役に立つでしょう。あなたの説明から、たとえば、切断はかなり高価であることがわかります-理想的には、長方形の断片はできるだけ少ない切断を必要とするでしょう。これは正しいです?
ユッカスオメラ

回答:


3

これは、ジオメトリックセットカバーのバリエーションです。正確な設定に応じて、適切な近似を行うことができる場合があります。問題はもちろんNPハードです。自然な色相は貪欲なアルゴリズムを使用することです(まだカバーされていないほとんどの領域をカバーする長方形/ストリップを常に選択します。代替の手法は再計量を使用することです。試してみたい面白い色相の1つは、まずポリゴンを最小数の凸形状に分解し(Keilダイナミックプログラミングアルゴリズムを使用)、次に各凸ポリゴンを個別にカバーすることです...


Keil Dynamic Programmingアルゴリズムに慣れていません。ただし、最大内接長方形アルゴリズムと最小境界長方形アルゴリズムを、ヒューリスティックに基づくいくつかのバリアントと組み合わせて使用​​する方法を見つけました。
ジョシュC.

2

この論文は助けになると思います。明らかにそれは同じ問題ではありません-実際には、長方形で多角形をカバーする逆の問題ですが、いくつかのアイデアが出発点になる可能性があります。特に、この逆問題はNP困難であり、あなたの問題も同様であると思われます(ただし、私が知る限り、削減の明らかな拡張はありません)。

E.アーキン、A。エフラト、G。ハート、I。コスティチナ、A。クレーラー、J。ミッチェル、V。ポーランドチュク。スカンジナビアのケーキの上に薄くなります:最小のワンサイズフィットオールボックス。 アルゴリズムの楽しみ。pg.16-27。2012


1
提案ありがとう。私はこの問題をより明確にするために、会社のエンジニアリング部門と製造部門と協力してきました。私はまだ確認を待っていますが、現在、最大の内接長方形のセットを返すアルゴリズムが機能すると考えています。形状を完全にはカバーしていませんが、非直交領域をいくつかのヒューリスティックに残しながら、直交領域を優先します。唯一のトリックは、これらの直交領域を最大化することです。9枚のラムダのような姿の私の最後の画像をご覧ください。
ジョシュC.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.