我有一個〜5000點的列表(指定爲經度/緯度對),我想從用戶指定的另一點中找到最近的5個點。最近點的算法
任何人都可以提出一個有效的算法來解決這個問題嗎?我在Ruby中實現了這個功能,所以如果有一個合適的庫,那麼這將是很好的知道,但我仍然對算法感興趣!
更新:有幾個人問過關於這個問題的更多具體細節。所以這裏是:
- 這5000點大部分都在同一個城市。外面可能有一些,但可以肯定的是,99%的人位於75公里半徑範圍內,並且所有人都在200公里範圍內。
- 點的列表更改很少。爲了爭辯,我們假設它每天更新一次,並且在那個時候我們必須處理幾千個請求。
如果是幾個點這是確定一個走一個。 – Andrey
無論您選擇哪種算法,您都可以通過比較平方距離而不是實際距離來節省一些時間。如果您不需要知道實際距離,則無需執行平方根操作。 –