algorithm - 基于距离的大小为 2 的组

标签 algorithm cluster-analysis k-means

我有一个包含数千个长度为 N 的点的列表,每个点都有纬度和经度。

我想将这些点分为 N/2 组,每组包含 2 个点(如果 N 是奇数,则一个将有 3 个)。

这个分组的目的是最小化两点之间的距离。我们可以将每组的误差视为平方点之间的距离。以及所有组的总误差总和。

鉴于算法应该相对较快的限制(这将部署在 API 上并运行以响应用户请求),实现此目标的最佳算法是什么?

分组不一定需要尽可能“最好”,但最好是确定性的。

最佳答案

计算中心。

按距中心的距离对点进行排序。

按降序,选择下一个未匹配点并将其与最近的未匹配邻居配对。您可以使用三角不等式来保持候选者较小。

对于索引,这种贪婪方法是 O(n log n) 否则 O(n^2)。这可能不是最好的结果,但对于这段运行时间来说应该相当不错了。预排序避免了真正糟糕的情况(只要中心不是太不平衡)。

关于algorithm - 基于距离的大小为 2 的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39337814/

相关文章:

r - 如何更改集群中每个组的树状图颜色

algorithm - 使用带有 L 方法的平滑器来确定 K-Means 聚类的数量

python - 3D 矩阵上的 K 均值

algorithm - 扫雷求解算法

algorithm - 纸男孩的聚类算法

java - Weka 总是为不同的数据生成相同的集群

python - 绘制文档 tfidf 二维图

algorithm - 如何*最佳*解决调度 N 个作业(到达时间,执行时间)提前已知,以便 N 个作业的平均等待时间最短?

algorithm - 在有向图中检测循环的最佳算法

Java:多索引排序缓存或带索引访问的 SortedMap