【发布时间】:2015-01-29 21:19:24
【问题描述】:
我正在编写一个小代码(顺序)来计算适度数据集的页面排名(尽管并非完全微不足道)。
算法是这样的:
while ( not converged ) {
// Do a bunch of things to calculate PR
}
除了“收敛”标准之外,我对算法很清楚。检查算法是否收敛的最佳方法是什么?我应该:
检查我保留了一次迭代中所有单个节点的 PR 的副本,并检查下一次迭代中所有节点的 PR 是否相同?
这对我来说似乎效率很低。这是正确的做法吗?
【问题讨论】:
-
为什么感觉效率低下?它实际上只是每个顶点的另一个
float,与图的结构相比,这算不了什么。对于计算,您只需计算两个floats之间的差异,因此与您需要做的其余数学相比,这也算不了什么;) -
每次迭代(用于 PR 比较)在两个单独的 HashMap 中迭代每个节点似乎是我可以优化的东西。
-
您可以在计算页面排名时计算差异(这已经需要一次迭代)
-
是的!你说的对。我想到了。谢谢 ! :)