首页 文章

一系列xy坐标中的最短距离

提问于
浏览
3

我有一个分配比较2个不同算法的问题 . 这是问题所在:

假设我有一系列像这样的xy坐标:

A(2,3),B(5,6),C(7,8),D(6,2),E(5,5)等 .

我想找到两条距离最短的坐标 . 其中一个解决方案是使用蛮力(逐个匹配),但还有另一种使用“分而治之”方法的解决方案 .

你能帮我解决“分而治之”的方法吗?

2 回答

  • 4

    递归分而治之的方法如下工作:

    1)根据x坐标对点进行排序 . 2)通过垂直线x = xmid将点集分成两个相等大小的子集 . 3)在左右子集中递归地解决问题 . 这分别产生左侧和右侧最小距离dLmin和dRmin . 4)找到一对点中的最小距离dLRmin,其中一个点位于分割垂直的左侧,第二个点位于右侧 . 5)最终答案是dLmin,dRmin和dLRmin中的最小值 . (资源)

    它的复杂度为O(n log n) . 您还有一个伪代码实现here以及方法here的可视化描述 .

  • 0

    想想“鸿沟”和“合并”部分的意思 . 显然,“分裂”意味着将问题分成两个较小的单独的问题 . 怎么样?那么,鉴于你解决了2个较小的问题,你如何将它们合并在一起?两种方法的时间复杂度是多少?如果您需要更多说明,请发表评论 .

相关问题