二维最接近坐标的算法

| 我知道我做错了,但无法想出解决此问题的正确方法。 我正在使用下面列出的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) 右=(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 最小值是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 右(24,14)(26,7)为7.28(24,14)(31,10)为8.06(26,7)(31,10)为5.83 最小值是5.83 所以现在我有了LLeft,RLeft,LRight和RRight。我需要找到的是LRLeft,RLLEft_Right(中间的值)和LRRight。这就是我感到困惑的地方。我想到LRLeft的唯一方法是获取LLeft和RLEft中的每个点,然后找出两者之间的距离。然后使用该距离并将其与LLeft和RLeft进行比较,这将使我在左侧两点之间的距离最短。然后,我对右侧和中央执行相同操作。我敢肯定,有一种更快更好的方法,但是我无法弄清楚。     
已邀请:
您应该看一下http://en.wikipedia.org/wiki/Closest_pair_of_points_problem#Planar_case 这是第4步的更好资源,但可以帮助您开始:在递归中,如果我们已经分别在左右两个集合中具有最小距离
d1
d2
,那么如果有一对较近的点-其中一个是从左边的集合开始,从右边的集合开始,那么我们只需要检查距离分界线
d
以内的点,where3ѭ。     

要回复问题请先登录注册