网格上点之间的总距离

计算科学 距离测量
2021-12-12 06:53:24

我有n形成带有空白空间的网格的点,我需要找到一种算法来计算这些点的总距离,时间复杂度低于O(n2).

一个网格n=5可以表示为一个矩阵:

001101011

点的距离(1,3)是: 1+5+2+5=3+25

点的距离(2,1)是: 2+2+5

点的距离(2,3)是: 2+1

点的距离(3,2)是: 1

点的距离(3,3)是: 0

所以总距离为:7+22+35

这种方法只是单独计算距离,然后将其相加,这并没有考虑到它们是层中的位置这一事实。

这看起来不像是一个超级独特的问题 - 是否有任何现有的算法或者有没有人知道如何加快这个速度?

编辑:总距离是指这样的情况:我选择一个点,然后计算所选择的点与其余点之间的欧几里得距离n1点。然后我选择下一个点并计算它与其余点之间的距离n2积分等等。然后我总结所有距离以获得总数。

距离计算说明:点的距离(1,3)是点之间的欧几里得距离之和(1,3)(2,1),(2,3),(3,2),(3,3). 点的距离(2,1)是点之间的欧几里得距离之和(2,1)(2,3),(3,2),(3,3). 等等...

1个回答

如果我正确理解问题,您有以下情况。S={x1,,xn}点的集合。您需要计算总距离dtS, 定义为

dt=j=1n1ij=j+1n|xijxj|
.

这个定义等价于集合 S 的距离矩阵的上三角矩阵或下三角矩阵之和。

D=(0x12x13x1nx210x23x2nxn1xn20)
这里xij=|xixj|.要单独计算距离矩阵,您需要n(n1)/2=O(n2)操作。所以不,我不知道比O(n2).

如果一个近似值dt是有序的,比你可以使用比你更好的最近邻搜索算法O(n2)并且仅对占总和的那些距离对求和。