计算具有高百分比死链的稀疏有向图的页面

时间:2010-09-08 15:17:11

标签: algorithm graph machine-learning pagerank jung

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

通过死链接,我的意思是具有outdegree零的节点。有时,在具有大量死链接的图形中,可能会发生蜘蛛陷阱。无论如何,我感兴趣的问题是找到这种情况下的分页。

我正在使用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)将设置其先验,而死链接不会。

我在这里遗漏了什么吗?

1 个答案:

答案 0 :(得分:1)

我认为PageRankWithPriors不是你想要的。

您使用的是PageRank的哪个版本?课程edu.uci.ics.jung.algorithms.importance.PageRankedu.uci.ics.jung.algorithms.scoring.PageRank?在Jung 2.0测试版中,前者已经被弃用而不赞成后者。

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

  

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

     

如果原件没有外边缘   然后用图0代替   1 /出度(V)。

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

  

如果顶点没有外边缘,   然后采取的概率   从该顶点随机跳跃(通过   默认)有效1

这应该保存你想要的概率。