我在2D空间中有一个坐标列表(x i ,y i )。如何找到坐标(X,Y),使其与其他给定坐标之间的距离最小?是否有一个解决(X,Y)的数学公式?
让我举个例子.. 假设我有co.ordinates列表(0,0);(1,0);(0,1);( - 1,0);(0,-1); 现在我必须找出可能的协调(一个或多个),使得所产生的协调与所有点的距离最小。在这种情况下(0,0)。
正如Voo所说,这是我的要求: 找到一个最小化给定集合中点数距离总和的点
答案 0 :(得分:2)
假设您要求最接近给定点的候选人
您在询问nearest neighbour searches。
最简单的方法是在每个候选坐标上循环,计算欧几里德距离(假设您需要欧几里德度量),并跟踪最小值。这还够吗?
更复杂(但可能更快)的方法涉及将候选点存储在例如一个space-partitioning tree,例如四叉树,或kd树,或其他几种变体之一。
答案 1 :(得分:1)
public Coord2D minDistance(List<Coord2D> coordinates, Coord2D someCoord) {
float minDistance = Float.MAX_VALUE;
Coord2D result;
for (Coord2D coord : coordinates) {
float distance = Math.sqrt(Math.pow((coord.x - someCoord.x), 2) + (Math.pow((coord.y - someCoord.y), 2))
if (distance < result) {
result = coord;
minDistance = distance;
}
}
return result;
}
答案 2 :(得分:0)
您可以使用欧几里德距离公式计算两点之间的距离: 平方根((X1-X)2 +(YI-Y)2) 或者您可以使用曼哈顿公式: |易-Y | + | XI-X |。
这是一个寻路问题吗?
答案 3 :(得分:0)
要求:找到一个点,该点最小化到给定集合中点的距离之和。
欧几里得距离与所有其他点之和最小的点有:
x =集合中所有X的平均值 y =集合中所有Y的平均值