我正在開發一種算法和數據結構來處理大量二維點上的歐幾里德距離查找。地理空間查找
我試過在谷歌學者研究這個,但沒有發現任何東西(可能是因爲我不知道這個問題通常在文獻中被稱爲什麼)。
這是我認爲這兩種方法:
方法1: 創建一個水桶電網bidimentional。將點插入桶中,保留每個點桶的參考。 查找距離爲D的點P,得到它的桶B以及其網格平方的任一角具有的所有桶(到B的距離)< D. 最後,枚舉所有這些桶中的點並計算距離至P.
方法2: 創建兩個列表,每個列表的所有點都由座標(x,y)之一排序。在距離爲D的點P上查找,執行二進制搜索以在每個列表中找到兩個點,以便找到矩形區域,其點的切比雪夫距離爲P < D. 最後,計算所有這些點的歐氏距離P
我猜測最先進的算法將大大優於這個,但?在這個任何想法表示讚賞
我沒有資格回答這個問題,但這個鏈接可能有幫助 - 它解釋了MongoDB的地理空間索引是如何實現的。 http://www.kchodorow.com/blog/2011/06/08/mongo-in-flatland/ – Rich
你在問[2D會合](http://c2.com/cgi/wiki?TwoDimensionalRendezvous)還是[ 2D範圍查詢](http://c2.com/cgi/wiki?TwoDimensionalRangeQuery)? –
@DavidCary沒有,看起來,儘管它更類似於2D範圍查詢。這個問題可以概括爲「找到與點P的歐氏距離小於D的所有點」 – goncalopp