从平面上的一组点找到最近的点

时间:2009-12-07 08:42:07

标签: algorithm geometry

给定2-D平面上的n个点,使得与所有点的距离最小化的重点是什么?这一点不必来自给定的一组点。它是质心还是其他什么?

如何使用算法找到所有这些点(如果不止一个)?

4 个答案:

答案 0 :(得分:5)

这被称为“距离中心”,与质心不同。

首先,您必须定义您使用的距离的度量。如果我们假设你使用的标准度量为d = sqrt((x1-x2)^ 2 +(y1-y2)^ 2)那么它不是唯一的,问题是最小化这个总和。

显示此答案的最简单示例不是唯一的直线示例。两点之间的任何点与所有点的总距离相等。

在1D中,正确答案将是与右侧和左侧具有相同点数的任何答案。只要这是真的,那么向左和向右的任何移动都会增加和减少左右两侧相同的量,因此保持距离相同。这也证明了质心不一定是正确答案。

如果我们扩展到2D,则不再是这种情况 - 因为sqrt使问题加权。令我惊讶的是,似乎没有标准算法!页面here似乎使用强力方法。我从来不知道!

如果我想使用算法,那么我会在X和Y中找到中间点作为起点,然后使用gradient descent algorithm - 这样可以很快得到答案。整个方程最终成为二次方程式,因此感觉应该有一个精确的解决方案。

答案 1 :(得分:3)

可能不止一点。考虑一个只有两个点的飞机。这些点描述了一个线段。该线段上的任何点与两个端点的总距离相同。

答案 2 :(得分:0)

蛮力算法。可能会给你最好的结果。首先,找到一个矩形/任何限制输入点的四边形。最后,对于矩形内的每个点,计算与其他点的距离。将点与输入集的距离相加。说这是关键点的“成本”。对每个点重复并用min选择点。成本。

情报也可以添加到算法中。它可以根据平均成本等消除区域......

至少我会如何处理这个问题...希望它有所帮助。

答案 3 :(得分:0)