我正在尝试了解 Leader-Follower 算法的复杂性。这是算法的最坏情况:
public class ScalabilityTest {
public static void main(String[] args) {
long oldTime = System.currentTimeMillis();
double[] array = new double[5000000];
for ( int i = 0; i < array.length; i++ ) {
for ( int j = 0; j < i; j++ ) {
double x = array[j] + array[i];
}
}
System.out.println( (System.currentTimeMillis()-oldTime) / 1000 );
}
}
我假设复杂度是 O(N*Log(N)),对吗?由于第一个循环,我确定前 N 部分,但是我无法确定如何计算内部循环的复杂性。
编辑:关于领导者-跟随者算法的简短信息:该算法是一种在线聚类算法,用于对数据流进行聚类,不需要定义聚类的数量。该算法接受数据输入和阈值。该算法的工作原理如下:
1- 它计算传入项目与所有现有集群的相似度 2- 如果项目与集群之间的相似度高于阈值,则将该项目添加到集群中。3- 如果不是,算法创建一个新的集群并将项目分配给这个集群。
从中我们可以看到最坏的情况:假设我们有 1000 个元素,并且假设对于每个传入的项目它找不到一个集群来分配它,那么在最后一次迭代中它最终会得到 1000 个集群。