2D 空間のポイントを表す約 100,000 (X, Y) ペアのデータセットがあります。各点について、その k 最近傍点を見つけたいと思います。
それで、私の質問は、全体の実行時間を絶対に最小限に抑えたいと仮定すると、どのデータ構造/アルゴリズムが適切な選択になるでしょうか?
私はコードを探しているのではなく、適切なアプローチへの単なるポインタです。関連性があると思われる選択肢の範囲 (四分木、R 木、kd 木など) に少し戸惑っています。
最良のアプローチは、データ構造を構築してから、各ポイントに対してある種の k 最近傍検索を実行することだと考えています。ただし、(a) 事前にポイントを知っており、(b) すべてのポイントの検索を 1 回だけ実行する必要があることを知っているので、おそらくより良いアプローチがあるでしょうか?
追加の詳細:
- 全体の実行時間を最小限に抑えたいので、大部分の時間が構造と検索に費やされてもかまいません。
- (X, Y) のペアはかなり分散しているため、ほぼ均一な分布であると想定できます。