在平面上的 n 个点中找到一个点以最小化距离总和的算法

标签 algorithm

我这里有一道算法题。它不同于普通的Fermat Point problem .

给定一组 n平面上的点,我需要找到哪一个可以最小化到其余 n-1 的距离总和点数。

有没有你知道的运行时间少于 O(n^2) 的算法?

谢谢。

最佳答案

一种解决方案是假设中位数接近平均值,并且对于接近平均值的点的子集,详尽地计算距离总和。您可以选择最接近均值的 klog(n) 个点,其中 k 是任意选择的常数(复杂度 nlog(n))。

另一种可能的解决方案是 Delaunay 三角剖分。这种三角剖分在 O(nlogn) 时间内是可能的。三角剖分生成一个图,每个点和边有一个顶点以满足德劳尼三角剖分。 进行三角测量后,您可以从任意点开始,比较该点与其相邻点的距离总和,并继续迭代移动。当当前点与其相邻点相比具有最小距离和时,您可以停止。直觉上,这将在全局最优点处停止。

关于在平面上的 n 个点中找到一个点以最小化距离总和的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8854621/

相关文章:

algorithm - 从两种不同的方式删除二叉搜索树中的节点,哪种方式更可靠?

algorithm - CRC32 和 MD5 算法傻瓜式

java - 从字符串中删除重复的单词

java - 从递归方法返回时需要帮助

java - 用 O(nlogn) 时间 O(1) 空间有效地计算数组中等值对的数量

swift - Swift 中的递归寻路 - 找到最长的路径

c++ - [仅等于运算符]在集合中查找重复元素并将它们分组的快速算法是什么?

java - 生成位掩码以最小化 1 的数量

c++ - 对二进制数数组进行排序的时间复杂度

java - 为什么我的算法没有给出预期的输出?