放置N点以最小化到点列表的距离

时间:2011-07-29 18:49:06

标签: algorithm coordinates cartesian

给定2D平面上的点列表,如何在平面上放置N个点,使得从点列表到最近放置点的所有距离的总和尽可能小?环境是谨慎的,列表将包含[(0,0);范围内的唯一点。 (〜200:〜100)]

优选地,算法的最坏情况性能应该是多项式的(并且因此具有实时计算的小范围)。任何近似值也是受欢迎的。

2 个答案:

答案 0 :(得分:3)

这个声音真的像K-Means clustering algorithm那样。在您的情况下,点列表是输入,点数N是簇的数量。

可悲的是,它的作用是NP难。但是有很多研究正在进行,并且有很多方法可以让它变得更好(只需向下滚动你会发现的维基页面)。

另外,我怀疑会有更好的算法,因为k-means确实被学者大量使用。我想如果有一个更好的算法,他们会为那个运行:)

我再次向您介绍数据挖掘中最好的教程:Andrew Moore's slides。虽然我不知道你的目的,但这应该非常接近你的需要。

答案 1 :(得分:0)

您可以获得节点列表的Center of mass(权重= 1) 或者它与x ^ 2的距离变化。

您已将问题缩小到将N个节点放置在质心区域的位置,其中与其余区域的距离最小。

在一个完美的世界中,你只需要将一个点放在质量中心。但是因为我假设你不能在同一个地方放置2个点,你需要选择质心附近。

这样可以将问题简化为只选择质心附近8点的最佳点,然后重新计算质心,然后重新进行。