如何将点重新分配/强制进入网格,以便移动量最小?

时间:2013-11-23 19:09:30

标签: algorithm sorting point

我有一组n×n点,浮点坐标在[0..n]范围内。如何为集合中的每个点分配一个网格点,以便“所需的运动总和”最小 - 不使用暴力?

points and grid
(总和最小化=箭头长度的总和)

我提出的算法:

for all remaining points in the set
    calculate distances to each point's nearest available grid point
    place point with smallest distance on its near grid point
    remove that point from the set
    make grid point unavailable
repeat.

现在,我怀疑这是一个非常标准的算法,我找不到正确的搜索关键字,正如你可以从我有缺陷的术语中看出来的那样。

或者这应该是最好的方法吗?

2 个答案:

答案 0 :(得分:0)

这是Linear Programming Assignment Problem

可以通过将距离矩阵设为n*n x n*n然后使用Hungarian Algorithm求解来解决此问题。

通过计算每个网格位置的每个点的距离来计算距离矩阵。然后为每个点分配一个唯一的网格,以便最小化总距离。匈牙利算法在多项式时间内完成。

答案 1 :(得分:0)

您可以计算voronoi图。然后计算平均单元格并将其用于网格。