从位置找到最小总距离点的算法

时间:2012-01-03 20:19:27

标签: algorithm coordinates distance

我正在建立一个基于在一组位置找到“方便的会面点”的应用程序。

目前我将“方便”定义为“最小化总行程距离”。这是寻找质心的另一个问题,如下例所示(为方便起见,使用笛卡尔坐标而不是纬度和经度):

  • A是(0,0)
  • B为(0,0)
  • C为(0,12)

这些点的最小总行程位置为(0,0),总行程距离为12;质心位于(0,4),总行程距离为16(4 + 4 + 8)。

如果位置仅限于其中一个点,则问题似乎变得更简单,但这不是我想要的约束(例如,this otherwise similar question)。

我似乎无法做到的是提出任何解决此问题的算法 - 欢迎提出建议!

2 个答案:

答案 0 :(得分:11)

这是一个解决方案,找到地理中点,然后迭代探索附近的位置,以调整到最小的总距离点。

http://www.geomidpoint.com/calculation.html

这个问题也与

非常相似

Minimum Sum of All Travel Times

以下是维基百科关于您要解决的一般问题的文章:

http://en.wikipedia.org/wiki/Geometric_median

答案 1 :(得分:3)

在某种程度上,您所寻找的是三角形的质心,顶点的权重相等。这将指向重心坐标。

当超越三角形时,存在广义重心坐标的解,您可以通过修改顶点的权重来为人们提供优先级。还没有考虑到的是真实地图上的距离(不能直接向任何方向行进)但它可能是一个开始?