ポイントが凸包の頂点の場合


7

運動は

点と点セットが与えられます。場合、時間で決定しますSpO(n)pが次の点から形成される凸多角形の頂点であるS

問題は、私が時間の複雑さと少し混乱していることです O(n)。より素朴な解決策は、O(nlogn) そしてかどうかをテスト p 頂点の1つです。

回答:


8

ヒント:ポイント p すべての点がそれらによって作成された角度内に入るようにそこから2本の半直線がある場合、凸状ホールの頂点です。

このヒントに基づくアルゴリズムのアイデアを次に示します。

2つの変数を持つアルゴリズムを設計する q そして r(入力ポイント)。アルゴリズムは各入力ポイントを調べて更新しますq そして r これまでにチェックしたすべての点がくさびの内側になるように qpr


@JeffE、私の考えに間違いはありますか?2番目の段落の下の部分にマウスを置くと表示されます。
カヴェ

私はそれを考え出した。(私は別の解決策を考えていました。)
JeffE 2012年

@JeffEは、私が書かれているはずの代わりに、第二にそれを修正します。:)
Kaveh

2
@JeffE、私は好奇心旺盛です、あなたの考えは何でしたか?
com

7

問題は通過する線を見つけることです p と他のすべてのポイントがあります S片側。これは2次元の線形計画問題なので、O(n)教科書の幾何学的アルゴリズムを使用して時間。ただし、自己完結型のソリューションについて説明します。


表記を簡略化するには、すべてのポイントを翻訳して p 起源です (0,0)、そして Q=S{p}。次に、実数があるかどうかを確認しますm そのような(1) y<mx すべてのために (x,y)Q または(2) y>mx すべてのために (x,y)Q。最初のケースでは、p の上部船体の頂点です S; 2番目のケースでは、p 下部船体の頂点です S。最初のケースのアルゴリズムについて説明します。他のケースは対称です。

いずれかの点で Q 真上にあります p (つまり、 Q 座標があります (0,y) いくつかのための y>0)、次に p上部船体に横になることはできません。この状態をチェックするのは簡単ですO(n) 時間。

だからポイントがないと仮定 Q 真上に横たわる p。のy-軸分割 Q 2つのサブセットに L (左)および R(正しい)。ポイントインL 負がある x-座標、およびポイント R ポジティブ x-座標。(直下のポイントp関係ありません。無視してください。)

mL=min(x,y)Lyx,MR=max(x,y)Ryx,andm=mL+MR2.
ここで考慮すべき3つのケースがあります。
  • もし mL<MR、次にすべてのポイント Q 厳密にラインの下にあります y=mx、 そう p 上部船体の頂点です。

  • もし mL=MR、次に行 y=mx の点を通過 L とポイント R、ポイントなし Q厳密にその線より上です。そうp 船体上部の端にありますが、頂点ではありません。

  • もし mL>MR、次に少なくとも1つのポイント L と少なくとも1つのポイント R 厳密に線より上にある y=mx。そうp 船体上部に厳密にあります。

計算が簡単 mL そして MRO(n)時間。実際に計算する必要はありませんm

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