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

Algorithm 放置N个点以最小化到点列表的距离,algorithm,coordinates,cartesian,Algorithm,Coordinates,Cartesian,给定二维平面上的点列表,如何在平面上放置N个点,从而使从点列表到最近放置点的所有距离的总和尽可能小?环境是谨慎的,列表将包含[(0,0);(~200:~100)]范围内的唯一点 最好算法的最坏情况性能应该是多项式的(因此实时计算范围较小)。也欢迎任何近似值 这听起来真像你在做什么。在您的例子中,点列表是输入,点的数量N是簇的数量 不幸的是,它所做的是NP难的。但是有很多研究正在进行,有很多方法可以让它变得更好(只需向下滚动wiki页面,你就会找到一些) 此外,我怀疑会有更好的算法,因为k-均值确

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


最好算法的最坏情况性能应该是多项式的(因此实时计算范围较小)。也欢迎任何近似值

这听起来真像你在做什么。在您的例子中,点列表是输入,点的数量N是簇的数量

不幸的是,它所做的是NP难的。但是有很多研究正在进行,有很多方法可以让它变得更好(只需向下滚动wiki页面,你就会找到一些)

此外,我怀疑会有更好的算法,因为k-均值确实被学术界大量使用。我想如果有更好的算法,他们会为这个算法运行:)

再一次,我为您介绍了数据挖掘方面最好的教程:。虽然我不知道您的目的,但这应该非常接近您的需要。

您可以获得节点列表的详细信息(权重为1)。
或者它与距离x^2的方差

您已经将问题简化为在质心区域放置N个节点的位置,在质心区域中,与其他节点的距离最小

在一个完美的世界里,你只需要把一点放在重心上。但是因为我假设你不能把两个点放在同一个地方,你需要选择重心附近


因此,这将问题简化为只选择质量中心附近8个点中最好的一个,然后重新计算质量中心,然后再进行一次。

您是说,对于原始集合中的每个点,只计算到新集合中最近的一个点的距离吗?我被“最近放置点”弄糊涂了,但我假设你得到了一个分数,并要求你把它们放在尽可能靠近上述分数的地方。这就是你的意思吗?在这种情况下,你会把所有的点放在围绕着点的圆圈里。这听起来正是我需要的。我会调查一下。