2種類のほぼ単純なポリゴンの検出


22

私は与えられた非シンプルなポリゴンがあるかどうかを決定する際の複雑さに興味があり、ほぼ二つの異なる形式的な感覚のいずれかで、シンプル:弱いシンプルまたは非自己交差を。これらの用語は広く知られていないため、いくつかの定義から始めましょう。

  • ポリゴン いくつかの有限のシーケンス結ぶ線分の閉サイクルで平面内の点の。ポイントはポリゴンの頂点と呼ばれ、セグメントはそのエッジと呼ばれます。頂点を順番にリストするだけで、任意のポリゴンを指定できます。p 0p 1p 2p n 1 p iPp0,p1,p2,,pn1pipipi+1modn

  • n個の頂点がすべて異なり、エッジが端点でのみ交差する場合、ポリゴンは単純です。同様に、ポリゴンが円と同相であり、すべてのエッジが正の長さである場合、ポリゴンは単純です。ただし、一般に、ポリゴンの頂点とエッジは任意に交差する場合があります。1n

  • 交差点が両方の共通のサブパスである2つのポリゴンパスとを検討します(1つのポイントである可能性があります)。エンドポイントが共通のサブパスA \ cap Bの近傍の境界で交互になる場合、と交差と言います。ポリゴンは、2つの交差サブパスがある場合は自己交差し、それ 以外の場合は非自己交差します。2B A BABAB A BA(0),B(0),A(1),B(1)AB

  • ポリゴンは、単純なポリゴンのシーケンスの制限である場合、または同等に、ポリゴンを単純にする頂点の任意の小さな摂動がある場合、弱く単純です。弱く単純なポリゴンはすべて非自己交差です。ただし、一部の非自己交差ポリゴンはそれほど単純ではありません

たとえば、以下に示す6つの点a、b、p、q、x、yを考えa,b,p,q,x,yます。

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

  • ポリゴンabpqyzは単純です。左図をご覧ください。

  • 多角形papbpqyqzq非常に単純です。中央の図は、近くの単純なポリゴンを示しています。ただし、このポリゴンはp 3回アクセスするため、単純ではありません。

  • サブパスと交差するため、ポリゴンは自己交差します。直観については右図をご覧ください。b p q z y q p apapbpqzqyqbpqzyqpa

  • 最後に、多角形(中央の多角形の周りに2回)は非自己交差ですが、それほど単純ではありません。直感的に、このポリゴンの回転数は、単純なポリゴンの回転数はなければなりません。(正式な証明には、いくつかのケース分析が必要です。一部は、回転角度が角度のポリゴンに対して実際に明確に定義されていないためです!)± 2 ± 1 0 papbpqyqzqpapbpqyqzq±2±10

更新(9月13日):次の図では、多角形は非自己交差であり、回転数1を持っていますが、それほど単純ではありません。おそらく、ポリゴンにはいくつかの交差する単純でないサブウォークがありますが、交差する単純なサブパスはありません。(私は「ほぼ間違いなく」と言います。なぜなら、2つの非単純な歩行が交差するときを定義する方法が明確ではないからです!)abcabcxyzxpqrxzyx

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

最後に、実際の質問を次に示します。

  • 特定のポリゴンが非自己交差であるかどうかをどのくらい迅速に判断できますか?

  • 特定のポリゴンが非常に単純であるかどうかをどのくらい迅速に判断できますか?

最初の問題は、時間で次のように解決できます。頂点が個あるため、頂点から頂点へのサブパスがあります。特定のサブパスが時間で単純かどうかをテストできます(ブルートフォースによる)。単純な頂点から頂点へのサブパスのペアごとに、それらが時間で交差するかどうかをテストできます。しかし、これは最良のアルゴリズムではありませんO(n5)nO(n2)O(n2)O(n)

2番目の問題が多項式時間で解決できるかどうかはわかりません。単純でない多角形の明確に定義された回転数をすばやく計算できると思います(多角形のエッジの結合が単なるパスでない場合は、多角形は非常に単純でなければなりません)。以下の私の答えをご覧ください。 ただし、上記の新しいポリゴンの例は、非自己交差および1番の回転が弱く単純であることを意味しないことを意味します。

与えられたポリゴンが、交差のエッジのすべてのペアをチェックすることにより、時間で単純であるか、標準スイープラインアルゴリズムを使用して時間で、または時間でさえ単純かどうかを判断できシャゼルの三角測量アルゴリズムを使用。(入力ポリゴンが単純でない場合、三角形分割アルゴリズムは例外、無限ループをスローするか、有効な三角形分割ではない出力を生成します。)しかし、これらのアルゴリズムはいずれも私が求めている問題を解決しません。 O n log n O n O(n2)O(nlogn)O(n)


1ブランコグリュンバウム。 ポリゴン:マイスターは正解で、ポインソットは間違っていましたが、勝ちましたBeiträgezur Algebra und Geometrie 53(1):57–71、2012。

2たとえば、Erik D. DemaineとJoseph O'Rourkeを参照してください。 幾何学的折りたたみアルゴリズム:リンケージ、折り紙、多面体。ケンブリッジ大学出版局、2007。


なぜこの質問に反対票を投じるのか理解できません!?
-Kaveh

私は質問を完全に誤解しているかもしれないので、多分これはうまくいかないかもしれませんが、頂点を数える方法は、2番目の質問が必然的に指数関数的な時間を要することを意味すると思われます。説明してみましょう。最後の例では、同じ頂点を複数回使用します。指数関数的な数の一意のサイクルがあるグラフを作成するのは簡単なようです。
ジョーフィッツシモンズ

入力が例のように与えられたポリゴンである場合、サイクルを繰り返すことなく、入力が頂点の数で指数関数的になる可能性があります。グラフにサブグラフとしてサンプルグラフ(2および3)が含まれている場合、交差していないサイクルと交差しているサイクルがあります。その結果、文字列全体を読んで、交差サイクル(含まれている場合も含まれていない場合もある)がないことを確認する必要があります。これには、最悪の場合、指数関数的な時間がかかります。n
ジョーフィッツシモンズ

1
@JoeFitzsimons:入力は単なるポイントのシーケンス(つまり、実数のペア)であり、区別する必要はありません。入力サイズは、一意のポイントの数ではなく、このシーケンスの長さです。n
ジェフ

2
@Kaveh:多分抽象的すぎる/専門化されている?言葉が多すぎる?ポイントにGa、Ka、Naa、Taa、Tin、Khatの名前を付ける必要がありますか?
ジェフ

回答:


2

最初の質問にはアルゴリズムが含まれているようです(ただし、これは最適ではない可能性が高い)。交差点があると仮定すると、それを見つけるための鍵は、見つけなければならないエッジは、共通サブパスの両側にあるエッジであるように思われます。したがって、連続するエッジのペアのすべてのペアを調べます。これらの2次数があります。エッジb ce fが同じになるように頂点a b cd e fを持つエッジのペアのペアを見つけた場合、最後まで共通のサブパスをたどり、それを離れるエッジを検査します。それらが交差点を形成する場合O(n3)abcdefbcefおよび d e、これで完了です。それ以外の場合は、次のペアに進みます。共通のサブパスをたどるのはせいぜい線形時間操作なので、アルゴリズム全体は O n 3です。abdeO(n3)

線形長の共通サブパスが追跡される回数は、ペアのペアの数において線形ではないため、この分析はおそらく厳密ではありません。それらの定数はただあるはずです。同様に、最長の共通サブパスの長さが一定である場合、共通サブパスに続く時間に関しては問題ありません。長さO √の単一のサブパスがある場合、最悪のケースが発生すると予想されます。Oに共通O(n)サブパス。次に、On)の相互作用があり、各相互作用にOO(n)O(n)エッジをたどっています。したがって、まだ続くエッジの数はon2であり、境界はペアの数によって提供されます。したがって、このアルゴリズムの真の限界はOn2)であると推測します。O(n)o(n2)O(n2)


1
「共通のサブパスに従うことは、せいぜい線形時間の操作です...」これは本当ですか?サブパスは同一ではないことに注意してください。一方が他方の画像に沿って前後に折り畳まれている場合があります。実際、あなたが終わったことを知っているとき、それは(私にとって)さえ明確ではありません。
パットモリン

いい視点ね。前処理ステップとして、ある種の標準形式にポリゴンを配置することは可能でしょうか?すぐに折り返されるパスと、隣接する頂点と同一線上にある頂点を削除します。次に、引用した文がより明確になります-共通のサブパスは同じ頂点を持つエッジで構成され、異なる頂点にヒットしたので完了したことがわかります。標準形式のポリゴンで答えが同じままであることを証明するのは難しくありません。
クリスグレー

@ChrisGray:たぶんですが、あなたが提案したほど簡単ではありません。の画像がツリーの場合、すべてのスイッチバックを再帰的に除外すると、最終的にPが1つのポイントに減少します。PP
ジェフ

はい、あなたは正しい、その考えは機能しません。上記の右端の図は、1つのポイントに縮小されます。
クリスグレー

バウンティを失効させる予定です。半分のポイントがこの回答に自動的に付与されます。
ジェフ

2

パット・モリンの提案で、回転数を計算するための私のアイデアがあります。これが少しずさんな場合は申し訳ありません。私はまだ表記の悪魔と戦っています。さらに、クリスの答えに対するパットのコメントは、私がいくつかの重要な退化事例を無視したことを明らかにしています。とにかく、他の人が役に立つと思うなら、とにかくここに投稿します。

任意のインデックスについて、θ p i= θ p i 1p ip i + 1)が頂点p iでの符号付き外角を示します。これは、線間の反時計回りの角度であるP I - 1、P IおよびP I P I + 1の範囲に正規化- π θ Iiθ(pi)=θ(pi1,pi,pi+1)pipi1pipipi+1。(すべてのインデックス演算は暗黙的にmod nです。) P回転数 T u r n P = 1として定義され ます。πθiπnP 私は頂点呼ぶことにしましょうP拍車場合は内部で角度pは私がに等しい0。外部の角度θ拍車では、明確に定義されていないです。それはどちらかの可能性がπ-π。より一般的に、の回転数Pは、明確に定義されている場合に限り、Pはないスプリアス(なし繰り返し頂点を有していないPI=を

Turn(P)=12πi=0n1θ(pi).
pipi0θiππPP)。T u r n P が明確に定義されている場合、整数であることを証明するのは難しくありません。特に、 Pが単純なポリゴンの場合、 T u r n P = ± 1です。pi=pi+1Turn(P)Turn(P)=±1P

今仮定フォームの歩行含まP R S R QP Qと経路R sはパスの反転であるS Rを。そして、sが拍車あります。rsルートと呼びます。この場合、私は聞かせて定義で外角をsの次のように θS = π sのG NPprsrqpqrssrsrss(しかしもし θ P R Q = 0?パットが観察したように、これは実際に起こる可能性があります。おそらく定義するための再帰的な方法のいくつかの並べ替えがありますθ複数可

θ~(s)=πsgnθ(p,r,q)={πif θ(p,r,q)>0πif θ(p,r,q)<0
θ(p,r,q)=0θ~(s) この場合でも、それが何であるかはわかりません。)

場合は弱いシンプルで、単純な存在であるnは -gon P任意に近いPは、TET sが頂点ことPに最も近いP。通りPが近づいPを、で内角sがゼロに近づきます。これは、(の長さに誘導によって証明するのは難しいことではありませんR 外角のこと)θ sがアプローチθ複数可PnP~Ps~P~PP~Ps~rsθ(s~)θ~(s)

PrsrrsPrs

θ~(pi)=θ(pi)piTurn~(P)=iθ~(pi)/2π=Turn(P~)±1P

Turn~(P)rsΘ(n2)nΩ(n)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.