[英]minimum distance between 2 points in c++
我有 m 個地方(x,y 坐標)。
我有 n 個請求尋找到給定點 P(x,y) 的最近位置; (最小歐幾里得距離)
我如何在 O(n*m) 以下解決這個問題,其中 n 是請求數,m 是位置數? 我可以使用平方歐幾里得距離,但它仍然是 n*m。
注意:我指的是針對高維度優化的近似最近鄰搜索。 這對您的應用程序來說可能有點矯枉過正。
編輯:
對於 2d kd-tree,構建時間為 O(m*log(m)),查詢時間為 O(n*sqrt(m))。 如果您的查詢數 n 超過 log(m),這最終應該會勝過簡單的解決方案。
該庫意味着您不必實現它,因此復雜性不應該成為問題。
如果您想推廣到高維極快查詢,請查看localitysensitive hashing 。
有趣的。 為了減少 n 的影響,我想知道它是否有助於在您遇到並處理它時保存每個請求的結果。 一個聰明的結果表可能會縮短在解決后續請求時計算 sqrt( x 2 + y 2 ) 的需要。
最近鄰問題,嗯? 我發現Robert Sedgewick Std Book在這些情況下非常有用。 他也描述了最近鄰搜索。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.