私は、緯度/経度のポイントを取得し、既知の場所のリストで最も近い上位 5 つのポイントを見つけることを含む学校のプロジェクトに取り組んでいます。リストはメモリに保存されますが、「適切なデータ構造」を選択する必要があることに注意してください。つまり、単純にすべての場所を配列に保存して、距離を 1 つずつ直線的に比較することはできません。教師は、明らかに遠すぎる場所の距離を計算しないように、場所のデータを米国の州ごとにグループ化することを提案しました。もっとうまくやれると思う。
私のオンライン調査によると、R ツリーまたはそのバリアントの 1 つが適切な解決策になるようです。残念ながら、その文は、実際のテクニックを理解した上で得た限りのものです。学術的ではない私の頭には文献があまりにも濃すぎるからです.
Rツリーに緯度/経度データを入力し、ツリーをトラバースして特定のポイントの5つの最近傍を見つけるプロセスが何であるかについて、誰かが本当に高い概要を教えてくれますか?
さらに、このプロジェクトは C で作成されており、これについて一からやり直す必要はありません。そのため、R ツリーの既存のオープン ソース C 実装を使用したことがある場合は、その経験に興味があります。
更新: このブログ投稿では、地域的に分割された空間 (PR 四分木など) の簡単な検索アルゴリズムについて説明しています。将来の読者に役立つことを願っています。