我知道我這樣做是錯誤的,但想不到正確的方法來解決這個問題。 我正在用下面列出的12點。 (1,2)(1,11)(7,8)(9,9)(12,13),(13,4),(20,8),(22,3),(23,12) ,(24,14),(26,7),(31,10)幫助解決二維最近的問題
我把這種成兩個子集
左=(1,2)(1,11)(7,8)( 9,9)(12,13),(13,4)
Right =(20,8),(22,3),(23,12),(24,14),(26,7) ,(31,10)
此外削減
LLeft =(1,2)(1,11)(7,8)
RLeft =(9,9)(12,13),(13,4)
LRight =(20,8),(22,3),(23,12)
RRight =(24 ,14),(26,7),(31,10)
查找每組的最小距離。
LLeft(1,2)(1,11)爲9,(1,11)(7,8)爲6.7,(1,2)(7,8)是8.48
的min是6.7
RLeft(9,9)(12,3)是6.70,(9,9)(13,4)是6.4,(12,3)(13,4)是1.14
的分是1.14
LRight(20,8)(22,3)是5.38(20,8)(23,2)是5,(22,3)(23,12)是9.05
的分是5
RRight(24,14)(26,7)是7.28(24,14)(31,10)是8.06(26,7)(31,10)是5.83
的min是5.83
所以現在我有LLeft,RLeft,LRight和RRight。我需要找到的是LRLeft,RLLEft_Right(中間值)和LRRight。這是我感到困惑的地方。我能想到獲得LRLeft的唯一方法就是將LLeft和RLEft中的每一點都找出來,並找出兩者之間的距離。然後使用該距離並將其與LLeft和RLeft進行比較,這會給我左側兩點之間的最短距離。然後我在右邊和中間做同樣的事情。我很確定有一個更快,更好的方法來做到這一點,但我無法弄清楚。
不幸的是沒有。找到最近的鄰居對是AFAIK和N^2問題;想要這樣做的背景是什麼?你可能會發現這裏列出的一些可能的技術(有注意事項):http://en.wikipedia.org/wiki/Nearest_neighbor_search – 2011-04-22 20:25:46
這不是最近的鄰居搜索。你想看看:http://en.wikipedia.org/wiki/Closest_pair_of_points_problem#Planar_case – YXD 2011-04-22 21:47:11
@Mr E不應該是一個評論,它應該是一個答案 – SinistraD 2011-04-23 17:17:34