我正在研究现有算法以提高其复杂性。现有的算法使用K-means进行聚类,而我选择使用K-means ++来做同样的事情。
选择K-means ++是因为与K-mean相比,它主要具有更快,更准确的聚类结果。现在,在最后,我必须比较新算法和现有算法的复杂性,我发现我无法理解K-means ++具有 O(logk)的复杂性这一事实竞争性
我试过在网上到处寻找解释,包括堆栈溢出。
我唯一理解的是,竞争力与“在线”和“离线”算法有关。有人可以解释一下它在这里适用的方法吗?
答案 0 :(得分:1)
你正在读的完整句子说的是" k-means ++聚类是O(log k) - 与最佳k-means解决方案竞争"。
这不关于其算法复杂性的陈述。它是关于其有效性的声明。您可以将O-notation用于其他事情。
K-意味着尽量减少潜力"计算为点集中心点的平方距离之和。
对于任何特定的群集问题,K-means ++解决方案的预期潜力最多可能是最佳解决方案的潜力的8(ln k + 2)
倍。为简洁起见,8(ln k + 2)
缩短为O(log k)
。
k-means ++解决方案为O(log k) - 竞争性的语句的确切含义是存在一些常数C
,使得k-means ++潜力与最佳潜力之间的预期比率对于所有足够大的k,小于C *(log k)。
最小的这样的常数约为8