x、yペアのリストがあります。すべてのペアは、2D空間上の点を表します。私はこのリストから最も近い点を特定の点xq、yqにしたいと思います。この問題のための最高のパフォーマンスクリティカルなアルゴリズムは何ですか?ポイントのLispは変更されません。つまり、私は挿入と削除を実行する必要はありません。私はちょうどこのセットのターゲットxq、yqポイントの最近隣を見つけたい。最寄りのNeighborを解決するための最善のパフォーマンスクリティカルアルゴリズム
編集1:ありがとうございます! Stephan202が正しく推測しているので、私はこれを繰り返し実行したい。関数のように。リストは必ずしもソートされているわけではありません(実際にはどのようにソートすることができないのですか?2列のaとyの主キーを持つテーブルのように?
リストに基づいてデータ構造を1回構築してから、関数でこの生成されたデータ構造を使用します(このプロセス自体が関連する場合)。
ありがとうございます。それは、KD-Treeのデータ構造が答えの良い候補であると思われます(そして、私はそれがそうであると感じます、私はいくつかの関連する結果を得る時に更新します)。
編集2:この問題は「最近隣」と呼ばれています。
編集3:最初のタイトルは「空間検索と空間索引付けのためのアルゴリズムの検索(最近隣)」でした。私は新しいタイトルを選んだ:「最寄りのNeighborを解決するための最高のパフォーマンスクリティカルアルゴリズム」。私は最初のデータに対して挿入と削除操作を実行したくないので、それらから最も近いものだけを新しいポイントに挿入したいので、私はKD-Treesに取り組むことを選択しました。ありがとうございます!
リストに構造体がありますか(ソートされているなど)?この操作を繰り返すか、1回実行しますか?これは、人々があなたの質問に答えるために必要な関連情報です。 – Stephan202
空間データベースにアクセスできますか? –
リストがソートされておらず、操作が1回しか実行されない場合は、リストに対して線形検索を実行する必要があるため、O(n)よりもうまく機能しません。操作を繰り返す場合は、要素のxとyの値に基づいてリストの適切な(ツリー)表現を作成する必要があります。 – Stephan202