我正在寻找社区检测算法的实现,例如Girvan-Newman算法(2002)。我访问了该领域的几位研究人员的网站(Newman,Santo等)但无法找到任何代码。我想有人在那里发布了这些算法的实现(甚至可能是一个工具包?),但我似乎无法找到它。
答案 0 :(得分:38)
社区检测算法有时是库的一部分(例如java的JUNG)或工具(参见Gephi)。当作者发布新方法时,他们有时会使他们的代码可用。例如,Louvain和Infomap方法。
旁注:Girvan-Newman算法有时仍在使用,但它主要被更快更准确的方法取代。为了更好地概述该主题,我建议Community detection algorithms: a comparative analysis或更长Community detection in graphs(103页)。
答案 1 :(得分:27)
您应该查看igraph library:
我认为,社区检测最完整的工具。 有关详细信息,请查看:What are the differences between community detection algorithms in igraph?
答案 2 :(得分:6)
您可以尝试SNAP库(斯坦福网络分析平台,http://snap.stanford.edu/),其中包括Modularity,Girvan-Newman和Clauset-Newman-Moore算法。它是用C ++编写的,并且是BSD许可证。由于许多论文已经使用过它(参见http://snap.stanford.edu/papers.html),它应该是好的。
答案 3 :(得分:1)
我们最近实施了our algorithm,它基于Constant Potts模型,快速Louvain优化,以及用于加权和签名网络的InfoMap的可靠映射方程。 Here是开源java项目+可执行jar。