我在R中使用了dist
函数,我想知道它的时间复杂性。
我知道层次聚类的时间复杂度为N^2*logN
。层次聚类由R中的以下代码两部分组成。
> d <- dist(as.matrix(mtcars)) # find distance matrix
> hc <- hclust(d) # apply hirarchical clustering
> plot(hc) # plot the dendrogram
在应用分层聚类之前,需要计算距离矩阵。我认为这需要N^2
复杂度?
答案 0 :(得分:1)
确切地说,如果矩阵X
具有N
行P
列,则dist(X)
的复杂度为3N(N-1)P/2
。这由N(N - 1)/2 * 3P
计算。
说明:
N(N - 1)/2
个条目; P
个向量(加上一个平方根)之间的点积,每个向量包含P
减法,P
乘法和P
加法。