Skip to main content
QUICK REVIEW

[論文レビュー] An Optimal Algorithm for the Separating Common Tangents of two Polygons

Mikkel Abrahamsen|arXiv (Cornell University)|Nov 12, 2015
Computational Geometry and Mesh Generation参考文献 14被引用数 4
ひとこと要約

本稿では、頂点を読み取り専用配列として与えられた2つの単純多角形の分離共通接線を線形時間、定数領域で計算するアルゴリズムを提示する。このアルゴリズムは、2本のポインタを用いた走査により、互いに素な凸包の存在を検出し、存在する場合には分離接線を返す。これは、これらの制約下でこの問題に対する最適解を初めて提供する。また、凸包が互いに素である場合、外接共通接線への拡張も可能である。

ABSTRACT

We describe an algorithm for computing the separating common tangents of two simple polygons using linear time and only constant workspace. A tangent of a polygon is a line touching the polygon such that all of the polygon lies to the same side of the line. A separating common tangent of two polygons is a tangent of both polygons where the polygons are lying on different sides of the tangent. Each polygon is given as a read-only array of its corners. If a separating common tangent does not exist, the algorithm reports that. Otherwise, two corners defining a separating common tangent are returned. The algorithm is simple and implies an optimal algorithm for deciding if the convex hulls of two polygons are disjoint or not. This was not known to be possible in linear time and constant workspace prior to this paper. An outer common tangent is a tangent of both polygons where the polygons are on the same side of the tangent. In the case where the convex hulls of the polygons are disjoint, we give an algorithm for computing the outer common tangents in linear time using constant workspace.

研究の動機と目的

  • 2つの単純多角形の分離共通接線を、定数領域のみを用いて線形時間で計算するアルゴリズムの開発。
  • 2つの多角形の凸包が互いに素であるかどうかを、O(log n)ビットのメモリのみを用いて決定するという長年の未解決問題の解決。
  • 凸包が互いに素である場合に、外接共通接線を計算するアプローチを拡張し、線形時間および定数領域を維持する。
  • 分離共通接線アルゴリズムの正しさを示す、誤りを含んでいた初期版とは異なる、簡潔で正しい証明の提供。

提案手法

  • アルゴリズムは、両方の多角形の頂点を同期的に走査するための2組の平行な2ポインタ(s0, s1)と(t0, t1)を用いる。
  • 各反復において、(p0[s0], p1[s1]) で定義される一時的な直線に対する次の頂点の向きを、クロス積に基づくT(a,b,c)関数を用いて確認する。
  • 頂点が一時的な直線の誤った側にある場合、対応するsポインタを進めて、もう一方の多角形の走査ポインタをリセットする。
  • アルゴリズムは、一時的な直線が分離接線の有効な候補のまま保たれるように不変条件を維持し、正しい接線が見つかったり、非交差性が除外されたりするまで終了する。
  • 外接共通接線の場合は、類似した2ポインタアプローチを用いるが、両方の多角形が接線の同じ側にあることを保証するための異なる終了条件および更新条件を用いる。
  • 正しさは、特に「分離接線が存在する」ことと「凸包が互いに素である」ことが同値であるという幾何的不変条件と凸包の性質に依存する。

実験結果

リサーチクエスチョン

  • RQ12つの単純多角形の分離共通接線を計算する問題は、O(log n)ビットの領域のみを用いて線形時間で解けるか。
  • RQ22つの多角形の凸包が互いに素であるかどうかを、定数領域と線形時間のみを用いて決定することは可能か。
  • RQ32ポインタアルゴリズムが共通接線を正しく計算するための最小限の幾何的不変条件の集合は何か。
  • RQ4凸包が互いに素である場合に、同じリソース制約のもとで外接共通接線を計算するようにアルゴリズムをどのように拡張できるか。
  • RQ5重複またはネストされた凸包に対しても、領域や時間計算量を増加させずにアルゴリズムを頑健にできるか。

主な発見

  • アルゴリズムは、O(n0 + n1)時間で、O(log n)ビットの領域のみを用いて、2つの単純多角形の分離共通接線を正しく計算する。
  • アルゴリズムは、これらの制約下で、2つの多角形の凸包が互いに素であるかどうかを決定するという問題に対する、初めての最適解を提供する。
  • 分離共通接線が存在しない場合も正しく特定する。これは、凸包が交差しているか、ネストされている場合に正確に対応する。
  • 外接共通接線の計算においても、凸包が互いに素である場合に線形時間および定数領域で動作し、アプローチの適用範囲を拡張する。
  • アルゴリズムの正しさは、幾何的不変条件と凸包の性質に基づき、初期版と比較して簡略化された証明により保証される。
  • この手法は頑健で効率的であり、凸包を明示的に計算する必要がなく、O(n)の追加領域を節約する。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。