dist()的复杂性是多少?

时间:2017-06-15 11:43:01

标签: r cluster-analysis euclidean-distance distance-matrix

我在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复杂度?

1 个答案:

答案 0 :(得分:1)

确切地说,如果矩阵X具有NP列,则dist(X)的复杂度为3N(N-1)P/2。这由N(N - 1)/2 * 3P计算。

说明:

  • 结果距离矩阵中有N(N - 1)/2个条目;
  • 每个条目是两个长P个向量(加上一个平方根)之间的点积,每个向量包含P减法,P乘法和P加法。