1

10Mオーダーのようなたくさんのポイントを想像してみてください。

今、私は与えられたスペースにランダムに円を描きます。

この円は、中心と半径に応じていくつかの点を囲みます。

ここで、この円の内側にあるすべての点を選択します。

ブルートフォースアプローチは非常に非効率的です。

これを解決するためのより良い方法はありますか?

PS-私はPythonでコーディングしています。

ありがとう

編集:ブルートフォースアプローチ:

スペースからポイントを選択し、中心からの距離を計算します。半径よりも小さい場合は、内側にあり、それ以外の場合は外側にあります。

総当たり攻撃は、すべてのポイントを通過する必要があり、次の反復でポイントを再度ランダムに選択して上記の手順を繰り返すため、これは問題です。したがって、これはO(n ^ 2)のようになります。もっと上手くできますか?

4

1 に答える 1

2

いくつかの空間分割構造にポイントを事前に配置します。

たとえば、四分木。ツリーをトラバースします。各ノードは平面上の正方形に対応するため、その正方形が円と交差するかどうかをすばやく確認できます (円の内側に少なくとも 1 つのコーナーがあるか、完全に正方形の内側にある円)。交差する場合は、そのノードをたどり続けます。交差しない場合は、すべての子をスキップして、その正方形の点に対する多数の個々のチェックを排除する可能性があります。

于 2012-11-19T18:35:48.467 に答える