我正在尝试在我从Wikipedia Dump构建的DirectedSparseGraph上使用PageRank和Hits算法。图形很明显,其节点是String,而Edge是Integer。问题是当我运行这段代码时:
PageRank<String,Integer> pageRank = new PageRank<String,Integer>(w, alpha);
pageRank.initialize();
pageRank.setTolerance(0.000001);
pageRank.setMaxIterations(200);
pageRank.evaluate();
HITS<String, Integer> hits = new HITS<String, Integer>(w,alpha);
hits.initialize();
hits.setTolerance(0.000001);
hits.setMaxIterations(200);
hits.evaluate();
for(String s: w.getVertices()){
writer.write(s + "\th:" + hits.getVertexScore(s).hub + "\ta:" + hits.getVertexScore(s).authority + "\tpagerank:" + pageRank.getVertexScore(s));
writer.newLine();
}
我在文件txt上写的结果对于每个节点总是相同的。 也许我通过参数传递方法时犯了一个错误。我不知道。
答案 0 :(得分:0)
图表有多大?实际执行了多少次迭代?
如果值只是1 / n(其中n是顶点数),那么这里可能发生的是它立即退出(你可以检查)。
另一个显而易见的可能性是你在构造图形时犯了一个错误并使其对称,所以得分都是相同的。您也应该能够轻松地检查这一点。