1

我是布卢明顿印第安纳大学计算机科学专业的研究生。对于我的一个研究项目,我正在为一个非常稀疏且死链接比例很高的有向图计算页面排名。

死链接是指出度为零的节点。有时,在有很多死链接的图中,可能会出现蜘蛛陷阱。无论如何,我感兴趣的问题是在这种情况下找出页面排名。

我正在使用 JUNG(Java 通用图网络)来计算页面排名。

当我使用正常程序时,

Graph<String, String> jungGraph = new DirectedSparseGraph<String, String>();
PageRank<String, String> pagerank = new PageRank<String,String>(jungGraph, 0.2);
pagerank.setMaxIterations(20);
pagerank.setTolerance(0.000001);
pagerank.evaluate();

当我清楚地知道不应该是这种情况时,我为所有节点获得或多或少相同的 pagerank 值。由于图中的一些节点有大量的出节点并且是强互连的。

在这种情况下建议的方法是什么。我知道有这个类 PageRankWithPriors。我是否应该首先提取没有死链接的网络,为它们计算页面排名,然后将它们的排名传播到死链接,直到它们收敛。在后一种情况下,缩减网络中的所有节点(outdegree != 0)都将设置其先验,而死链接则不会。

我在这里错过了什么吗?

4

1 回答 1

1

我不认为PageRankWithPriors这是你想要的。

你用的是哪个版本的PageRank?班级edu.uci.ics.jung.algorithms.importance.PageRank还是edu.uci.ics.jung.algorithms.scoring.PageRank?在 Jung 2.0 Beta 中,前者已被弃用,取而代之的是后者。

他们似乎以不同的方式对待出度 0 节点,这可能是您的问题。前者的规格说:

从节点 u 到节点 v 的概率等于 (1-alpha) [1/outdegree(u)] + alpha (1/|V|)

如果 u 在原始图中没有出边,则使用 0 而不是 1/outdegree(v)。

这似乎是错误的,因为它会导致概率损失(通过某种方法离开 u 的总概率应该等于 1,但事实并非如此)。后者的做法不同:

如果顶点没有出边,则从该顶点随机跳转的概率(默认情况下)有效为 1

这应该可以节省您想要的概率。

于 2010-09-08T18:20:05.670 回答