algorithm - 找到与其他点集的距离总和最小的点

标签 algorithm optimization geometry gis

我有一组 (X) 点(不是很大,比如 1-20 个点)和第二组 (Y),更大的一组点。我需要从 Y 中选择一些点,从 X 到 all 点的距离总和最小。

我想出了一个想法,将 X 视为多边形的顶点并找到该多边形的质心,然后我将从 Y 中选择一个最接近质心的点。但是我不确定质心是否最小化了它到多边形顶点的距离之和,所以我不确定这是否是一个好方法?有解决这个问题的算法吗?

点由地理坐标定义。

最佳答案

多边形的质心可能不对,但这样的点是存在的。

论文中:n-ellipses and the minimum distance problem ,表明如果点(称为焦点,你的 X 集)不共线,则

  • 有一个唯一点(称为中心),距离总和最小。这一点使得从该点到焦点的单位向量之和为零!

  • 距离和为常数的点的轨迹是包含中心的凸曲线(称为 n 椭圆)

  • 距离 D 的 n 椭圆完全包含任何其他距离 D' 的 n 椭圆,其中 D' < D。

因此,您可以执行某种类型的爬山算法来找到中心。

当然,这些 n 个椭圆不一定是圆,所以只选择离中心最近的点可能行不通,但可能是一个很好的近似值。

你或许可以对这 20 个点(如果它们是固定的)进行一些预处理,以找出一个好的分区方案(基于以上信息)。

希望对您有所帮助。

关于algorithm - 找到与其他点集的距离总和最小的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609846/

相关文章:

c++ - 从两个 4x64 位整数数组中取模

c++ - 尝试使用书中的最小生成树示例,但不适用于大数据

javascript - 缩小 ASP.NET 生成的 Javascript 的最佳方法是什么?

javascript - 这是 Javascript 黑客尝试吗?

svg - 在 SVG 上绘制圆的一段

algorithm - 在使用 A* 时实现快捷方式(reach)修剪

java - 处理一组被覆盖的方法取决于它是任意的还是交替的

c++ - 如何生成始终触发信号 SIGFPE(div by zero) 的代码?

css - 没有图像的三 Angular 形式面包屑

math - 将一个多边形映射到另一个多边形