【发布时间】:2012-03-18 09:27:53
【问题描述】:
我使用 JUNG 作为我的工具来可视化网络图和计算网络属性(例如:入度、出度和页面排名)。
我知道JUNG已经实现了PageRank算法,但是手册中没有关于使用pagerank算法的说明(http://jung.sourceforge.net/doc/index.html)。
有人知道怎么做吗?
我也尝试了以下代码,但出现错误“Vertex CLP Holdings Ltd not an element of this graph”。
public void calcPageRank()
{
PageRank<MyNode, MyLink> alg = new PageRank<MyNode, MyLink>(g,0.1);
alg.initialize();
System.out.println(alg.getVertexScore(new MyNode(53084,"CLP Holdings Ltd")));
}
代码文件为here
谢谢!!
【问题讨论】:
-
实际上,如果您通过从code.google.com/p/jung/source/checkout 获取的 m2e Maven SVN SCM 连接器签出来构建 JUNG,它对
edu.uci.ics.jung.algorithms.scoring包下的类进行单元测试,其中包括 TestPageRank 单元测试类和 @987654325 @单元测试类 -
嗨,eee,我仍然对如何在 JUNG 中使用 pagerank 算法感到困惑。你能根据我的代码给出一些具体的解决方案吗?我跟踪了代码(AbstractIterativeScorer.java)并怀疑我在我的程序(MyNode)中使用了不同的数据结构。它导致 pagerank 算法在图中找不到我的顶点并抛出 IllegalArgumentException 异常。谢谢~
-
你看过Javadoc吗?还是教程?至于你得到的错误,最好的猜测是(a)顶点实际上不在你的图中,或者(b)你没有在你的 MyNode 类中以兼容的方式定义 equals() 和 hashCode() 。 (旁注:“initialize()”?我假设您的意思是“evaluate()”。
-
我已经阅读了来自 eee 的 Javadoc 和示例代码。我真的很确定顶点在图中,但程序找不到任何顶点。我已经定义了用于比较 MyNode 类的 equals()。但似乎程序仍然以默认方式比较 Mynode 类。我没有启动一个新的 Mynode,而是使用了存储在我预定义的 ArrayList 中的节点,它可以工作! alg.getVertexScore(new MyNode(53084,"CLP Holdings Ltd"))----> 错误,alg.getVertexScore(CompanyNodeList.get(1))---> 好的,我现在不知道该怎么办。 Joshua O'Madadhain,感谢您的评论。
-
注意:你的假设是对的,我错了。