我现在必须学习PageRank,我写了这个算法:
我已经确定了while循环内部的复杂性,我相信它是O(n^2)
。但后来我陷入了while循环本身的复杂性,这本身就是由delta决定的。 Delta是迭代i
处的R的L1范数与迭代i+1
处的R的差值。
有没有办法确定这种复杂性?
编辑:更多解释:
creerMatricePageRank()
为我们创建邻接矩阵,并在混合中添加排名源向量E
答案 0 :(得分:0)
最里面的for
从0变为t
,这意味着O(t)
。外部for
从0变为t
,这意味着O(t) * O(t) = O(t^2)
。
然后你有另一个for
在O(t)
时间无效。它没有做任何事情,因为它首先计算d2
和语句,然后将d1
的值分配给d2
(两者现在都是相等的delta)。下一个声明delta = |d1 - d2|
说delta = |delta - delta|
== delta = 0
。
如果epsilon为负数,则while
循环永不结束,否则循环在一次迭代后结束,这意味着O(t^2)
复杂度。
您的代码显然有问题。您根本不需要while
循环,或者混合了分配。