ブルートフォースドローネ三角形分割アルゴリズムの複雑


16

Mark de Berg等の著書「Computational Geometry:Algorithms and Applications」には、ドロネー三角形分割を計算するための非常に単純なブルートフォースアルゴリズムがあります。このアルゴリズムは、無効なエッジの概念を使用します。有効なドローネ三角形分割では表示されず、他のエッジに置き換える必要があるエッジです。各ステップで、アルゴリズムはこれらの不正なエッジを検出し、不正なエッジがなくなるまで必要な変位(エッジフリップと呼ばれる)を実行します。

アルゴリズムLegalTriangulationT

入力。いくつかの三角T点セットのP
出力法的三角形分割P

一方、 違法なエッジが含まれているP I 、P jの DOTpipj

してみましょうP I 、P J P lは隣接する2つの三角形ことのp のi のp Jpipjpkpipjplpipj
Tから削除し、代わりにp k p lを追加します。Tを返します。pipjTpkpl
T

このアルゴリズムは最悪の場合O(n2)時間で実行されると聞きました。ただし、この記述が正しいかどうかは明確ではありません。はいの場合、この上限をどのように証明できますか?


5
上記の形式では、O(n3)時間かかります。ただし、スタックを使用すると、O(n2)時間で実行できます。これらの講義ノートの最後のページをご覧ください。基本的な議論は、最大でエッジフリップが存在する可能性があるということです。(n2)
-rizwanhudda

2
@rizwanhudda:これを答えにしてみませんか?
ラファエル

回答:


8

ドローネの三角形分割は、放物面に持ち上げられた2dポイントセットの下部凸包と見なすことができます。したがって、2次元の点集合を取得してすべての点に座標を割り当てるとの平面への投影によりドローネが得られます。三角測量。(xi,yi)zzi=xi2+y12xy

この観点を使用して、エッジが違法であるとはどういう意味ですか?まず、すべての三角形分割に対して、放物線マップを使用して、まで投影される3D(三角形分割)表面を取得できます。もちろん、この表面は必ずしも凸である必要はありません。凸である場合、はドロネー三角形分割になります。簡単に言えば、エッジは、表面の凸面の障害物であり、凹面のエッジです。このエッジを反転すると、リフトされたサーフェスの状況が局所的にのみ変化します。4つのポイント見てみましょ。3Dで四面体を形成し、四辺形に投影します。2つの三角形なので(pi,pj)TTT(pi,pj)pi,pj,pk,plpipjpkおよびは凹エッジ定義し、三角形およびは凸エッジ定義します。したがって、不正なエッジを反転することは、リフティングで凹エッジを凸エッジに置き換えることに相当します。この反転により、他の凸エッジが凹エッジに変わる可能性があることに注意してください。pipjpl(pi,pj)pkplpipkplpj(pl,pk)

3Dフリップ解釈 注:画像は幾何学的に正確ではなく、スケッチとしてのみ考慮される必要があります。

してみましょうフリップの後三角測量すること。持ち上げた表面表面『が含まれる』。これにより、平面から2つの表面を見ると、の表面からの三角形(または両方の表面にある三角形)のみが表示されます。また、の表面がより多くの体積を囲むと言うこともできます。また、エッジは、平面から見たときにによって引き起こされた持ち上げられた表面の「背後」にあります。T T x y T T p ip jT x yTTTxyTT(pi,pj)Txy

フリップシーケンス中に、厳密に増加するボリュームを持つサーフェスのシーケンスを取得します。したがって、エッジはこれらすべての表面の「背後」にあります。したがって、反転プロセス中に再表示されることはありません。は2つのエッジを選択するだけなので、最大でフリップがあります。n O n 2(pi,pj)nO(n2)

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