簡體   English   中英

c++ 中 2 點之間的最小距離

[英]minimum distance between 2 points in c++

我有 m 個地方(x,y 坐標)。

我有 n 個請求尋找到給定點 P(x,y) 的最近位置; (最小歐幾里得距離)

我如何在 O(n*m) 以下解決這個問題,其中 n 是請求數,m 是位置數? 我可以使用平方歐幾里得距離,但它仍然是 n*m。

試試kd-tree 可以在此處找到高性能庫實現。

注意:我指的是針對高維度優化的近似最近鄰搜索。 這對您的應用程序來說可能有點矯枉過正。

編輯:

對於 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM