を記述する場合のアルゴリズムを見つけるには?ポイントのセットが、私はN点の集合が凸多角形か</p> <p>そのための良いアルゴリズムがある場合、私は思っていたを記述するかどうかを確認したいと思い凸enveloppe
1.Convexハルアルゴリズム::セットは彼の凸包に等しい場合、それは凸
です。ここ
は、私が考えるいくつかのアプローチです。そのようなアルゴリズムの複雑さは、O(n * LN(N))である。しかし、私はそれが車輪に蝶を壊すような感じだった。
角度で3.Looking:
それから私は、2つの連続ベクトルの角度が180°を超えないかどうかをチェックする考え。 私のポイントは注文されていないので、3つの連続ポイントのすべての組み合わせをチェックする必要があり、それはO(n3)の複雑さのようになります(それ以上に良い方法があるはずです)
例えば右から左にが、結果は常に予想1ではありません。私は左から右に取るならば、この場合には、私は凸形状を見つけるたとえば
:
このためので解決策ポイントを選択するには良いアルゴリズムが必要な場合があります。
3.重心を見て:
私は形がないの凸状である場合、すべての3 consecutivesポイントのbaricenterは形状の内側にあるかどうかをチェックすると、私に教えてくれると思います。このソリューションの
私は問題なく左から右にポイントを選択することができる:ここ
私は(Gは、各三角形のbaricenterである)を意味するものです。 Gが形状にあるかどうかをチェックする複雑さがO(N)である場合、全体の複雑さはO(N2)のようになるであろう。
あなたはこの問題を解決するか、私はGrahams Scanにウィキペディアから始まることを考えていた事前
方法1の簡単な提案:実際に凸包を構築するのではなく、アルゴリズムを実行してすぐに終了するか、またはポイントを破棄すれば終了します。 – user786653
私はthat.thanksを見てみるつもりです –
私のコメントの編集ウィンドウを逃した。 'アルゴリズム' = [Grahamsスキャン](http://en.wikipedia.org/wiki/Graham_scan)(これは、あなたの方法2がbtwを示唆するものを多かれ少なかれ実行します)。また、これは漸近的な実行時間を改善しないことを知っていますが、問題を並列化するのが非常に簡単です。 – user786653