2D ポイントのコレクションがあり、入力ポイントが の凸包の内側にあるか外側にあるかS
をテストする必要があります。q
S
O(log(N))
二分決定なので、決定木を使えば理論的には達成できると思っていました。
ただし、データを整理する方法と、アルゴリズムが実際に答えを得るためにどのように見えるかはわかりませんO(log(N))
。
この考えを念頭に置いて調査していると、次のことがわかりました。
これら 2 つのケースをより迅速に見つけるにはどうすればよいでしょうか。二分探索。2 つのチェーンのポイントの最初の座標で x を検索するだけです。チェーン内にある場合は、頂点を通過する交差を見つけたことになります (また、交差の種類を慎重に判断する必要もありません)。x がチェーン内の頂点の座標でない場合、それに最も近い 2 つの値は、(x,y) からの光線が交差するセグメントを示します。したがって、点が時間 O(log n)で凸多角形にあるかどうかをテストできます。
ポイントが任意のポリゴン (または複数のポリゴンのどれ) にあるかどうかを、同じO(log n)の時間範囲内でテストできるデータ構造があることがわかりました。しかし、それらはもっと複雑なので、ここで説明する時間はありません。それらについては、ICS 164 のある時点で説明します。
( http://www.ics.uci.edu/~eppstein/161/960307.html )
アイデアはありますか:
- データ構造はどのように見えるべき
O(log(N))
ですか? - アルゴリズムはどのように見えるべきですか?