平面内のn点のセットがo(nlogn)時間で凸n多角形を形成するかどうかのテスト


13

平面内にn点のセットが与えられ、それらが凸n多角形を形成しているかどうか、つまり、すべてが凸包上にあるかどうかを確認するとします。誰かがo(nlogn)時間で、つまりCHを計算せずにこれを行う方法を知っているかどうか疑問に思っていました。


O(n log n)時間で凸包を計算できます。それよりも短い時間でそれを行うことが可能であればどういうことですか?
Per Vognsen

はい、この問題には線形時間アルゴリズムが必要だと思います。しかし、私は方法がわからない
バビスTsourakakis

4
彼はO(nlogn)ではなくo(nlogn)を書いたので、彼の質問は正しい。
シヴァキンタリ

1
質問がまだあるとして保持しているので、私は、表記oを少し使う
Babis Tsourakakis

4
使用している計算モデルの明示的なステートメントなしでΘ(n log n)時間を要すると述べられている数値(または同等にデカルトポイントの凸包)の並べ替えを見ると少し眉をひそめます。比較ソートにはΘ(n log n)時間かかりますが、比較モデルではハルを計算することさえできません。どちらも(受け入れられた答えが示すように)代数的決定木のΘ(n log n)時間ですが、実際のコンピューターにより似ている計算モデルではより高速です。
デビッドエップシュタイン

回答:


17

少なくとも比較/代数木モデルでは、それはありそうにないようです。最初に定義:

点集合のいかなる点場合凸位置にあるPは、残りの点の凸組合せとして書き込むことができないPPPP

ここで、数値のセットがすべて異なるかどうかを判断するには、Ω n log n )が必要ですnΩnログn時間(これは一意性と呼ばれます)。このような数値Xのセットが与えられた場合、それらをポイントのセット P = { x x 2| X X } 繰り返し数がない場合、ポイントは凸位置にあります。nバツ

P={バツバツ2|バツバツ}

繰り返し数がある場合、この繰り返し数は、残りのポイントの凸の組み合わせとして記述できるポイントに対応します。つまり、ポイントは凸位置にありません。

つまり、ポイントセットが凸位置にあるかどうかを判断することは、一意性と同じくらい困難です。


12
重複ポイントを生成しないこの削減のバリアントがあります。X [1..n]を整数のセットとします。Xのすべての要素が異なるかどうかをテストするには、代数的決定木モデルでΩ(n log n)時間を必要とします。次に、各整数を点X [ i ] バツ[]バツ[]バツ[]2+/n2

1
@Babis:重複ポイントが許可されていない場合、Jeffの削減は機能します。リダクションによって生成されるポイントは、初期配列が何であっても一意です。
ビナヤックパタク

したがって、2つのポイントが同じx座標を持たない場合に限り、凸包の角の数がnに等しいことがわかります。どうもありがとう、最初はソートよりも簡単だと思っていました。
バビスツォラカキス

ヴィナヤックのおかげで、ジェフの減少が見られなかったのは、以前のコメントを書いていたときに投稿されたためです
バビスツォラカキス

2
Suresh、「標準モデル」というフレーズには同意しません。それがまさにワードRAMです:)実際のコンピューターに最も近いモデルであり、ほとんどのTCSでアルゴリズムを分析するために使用するモデルです。ジオメトリは、実際のRAMを使用する例外を認めているため、精度の問題に対処する必要はありません。しかし、それは「標準モデル」ではありません。
ミハイ

-1

すべての点が凸包の中にあると仮定し、凸包の中にある点を見つけることができる場合、点の順序を見つけることができます Onlogn

ポイントの順序がわかれば、各ポイントからシーケンス内の次のポイントまでの角度は単調になります。これは必要条件であり、十分だと思います。

内点を取得することは、読者の課題として残されています。


編集:簡単なデモンストレーションの最初のパスとしてOnlogn


あなたはおそらく私と同じように彼のo(n log n)をO(n log n)と誤解しているでしょう。とにかく、あなたが概説したアルゴリズムは、初期の形でのギフト包装です。実際に内部ポイントを使用する必要はありません。最小のx座標を持つポイントなど、境界上のポイントを使用できます。
ヴォーグセンごと10

Onlogno

ポイントは、O(n log n)で実行される凸包アルゴリズムがたくさんあるということです。あなたのアルゴリズムは基本的には単純な古いギフト包装です。彼はもっと速いもの、例えば線形時間を求めていました。他の応答を参照してください。
ヴォグセンごと

1
編集に関しては、上記の受け入れられた答えを見ることができれば、問題は要素の一意性と同等であり、O(n log n)の下限があることがわかります。
ヴォグセンごと

2
@BCS:サリエル・ハー・ペレドの答えについて誤解しているのではないかと心配しています。削減は、一意性から凸位置テストまでであり、他の方向ではありません。つまり、Sariel(およびJeffE)は、一連の数値が与えられ、一意性をテストする場合、それを一連のポイントに変換し、凸位置テストに任意のアルゴリズムを使用できると述べました。
伊藤剛
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.