如何根据delta值确定算法的时间复杂度

时间:2017-11-24 22:37:32

标签: algorithm time-complexity pagerank

我现在必须学习PageRank,我写了这个算法:

Algorithm

我已经确定了while循环内部的复杂性,我相信它是O(n^2)。但后来我陷入了while循环本身的复杂性,这本身就是由delta决定的。 Delta是迭代i处的R的L1范数与迭代i+1处的R的差值。

有没有办法确定这种复杂性?

编辑:更多解释:

  • R是等级向量
  • epsilon是用户给出的值(我们希望epsilon很小,可以很好地估算PageRank,但不能太小,需要很长时间来计算它)。
  • creerMatricePageRank()为我们创建邻接矩阵,并在混合中添加排名源向量E
  • A是邻接矩阵

1 个答案:

答案 0 :(得分:0)

最里面的for从0变为t,这意味着O(t)。外部for从0变为t,这意味着O(t) * O(t) = O(t^2)

然后你有另一个forO(t)时间无效。它没有做任何事情,因为它首先计算d2和语句,然后将d1的值分配给d2(两者现在都是相等的delta)。下一个声明delta = |d1 - d2|delta = |delta - delta| == delta = 0

如果epsilon为负数,则while循环永不结束,否则循环在一次迭代后结束,这意味着O(t^2)复杂度。

您的代码显然有问题。您根本不需要while循环,或者混合了分配。