使用K-means加上基于连接距离的聚类算法创建聚类

时间:2016-11-23 10:43:00

标签: java algorithm machine-learning k-means shortest-path

我有一组相互连接的节点(大约10K)。我必须创建小型集群(最多15个节点)。

我正在使用连接距离来查找两个节点之间的距离(使用Dijkstra最短路径算法)而不是地理空间距离。 现在的问题是,使用K-means plus plus算法创建小型集群需要1个多小时。我知道需要更多时间才能找到两个节点之间的最短距离。如果我想最初存储所有最短路径,它需要更多内存(这是不可能的)。 任何人都可以建议我如何优化它?

1 个答案:

答案 0 :(得分:0)

您必须为图表中的每个节点运行dykstras算法。 Dykstras算法在密集图上占用O(n ^ 2 * log n)时间。这导致了O(n ^ 3 * log n),这几乎是永远的。您可以使用Floyd-Warshall(https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm)算法将其转换为O(n ^ 3)作为预处理,然后使用此算法,这仍然需要很长时间。对此有利的是,您可以使用O(n ^ 2)内存存储最短路径内存效率。

密集图上的所有对最短路径问题没有什么好处。