我知道我做错了,但想不出解决这个问题的正确方法。我正在处理下面列出的 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
RRight (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 进行比较,这将为我提供左侧两点之间的最短距离。然后我对右边和中心做同样的事情。我很确定有一种更快更好的方法可以做到这一点,但我无法弄清楚。