【问题标题】:finding 3 closest points on a plane在飞机上找到 3 个最近的点
【发布时间】:2015-01-03 10:01:33
【问题描述】:

我们知道找到 2 个最近点的快速算法是使用分而治之。 解决方案在这里http://en.wikipedia.org/wiki/Closest_pair_of_points_problem

现在这里是这个问题的升级。对于任意三个点,pi,pj , 和 pk,这些点的三个距离 td(p1, p2, p3) 是两个较小的和 dist(p1,p2),dist(p2,p3) 和 dist(p1,p3) 之间的距离。

找出平面上所有可能的 3 点组合的最小三距离的有效方法是什么?

【问题讨论】:

    标签: algorithm computational-geometry divide-and-conquer


    【解决方案1】:

    回顾最近对的分治算法:将 n 个点垂直平分为 n/2 和 n/2。在每一半中找到最接近的一对。令 d 为最近的半内对之间的距离。将半径为 O(d) 的框沿二等分线滑动,考虑两个点都位于框内的半对间对。

    用于 3 点组合问题的 O(n log n) 时间分治算法不会有太大不同。对的论点的核心是该框始终包含 O(1) 个点,因此迭代三元组是没有问题的;合并步骤仍然是线性时间。必须替换临时密度参数(“六点”),但我不愿详细说明这是家庭作业的可能性,因为它实际上只需要分析而不是实施。

    【讨论】:

      【解决方案2】:

      我的实现是here - Closest Triplet;我觉得值得一看。

      从最近对转换是否有任何挑战,我不记得了。看起来不像。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        • 2012-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多