在图中是否有用于社区检测的算法实现?

时间:2011-04-28 16:58:00

标签: graph graph-theory

我正在寻找社区检测算法的实现,例如Girvan-Newman算法(2002)。我访问了该领域的几位研究人员的网站(Newman,Santo等)但无法找到任何代码。我想有人在那里发布了这些算法的实现(甚至可能是一个工具包?),但我似乎无法找到它。

4 个答案:

答案 0 :(得分:38)

社区检测算法有时是库的一部分(例如java的JUNG)或工具(参见Gephi)。当作者发布新方法时,他们有时会使他们的代码可用。例如,LouvainInfomap方法。

旁注:Girvan-Newman算法有时仍在使用,但它主要被更快更准确的方法取代。为了更好地概述该主题,我建议Community detection algorithms: a comparative analysis或更长Community detection in graphs(103页)。

答案 1 :(得分:27)

您应该查看igraph library

  • 7个社区检测算法(包括上面提到的那些):
    • Edgebetweenness(基于Girvan-Newman链接中心性的方法),
    • Walktrap(Pons-Latapy随机步行方法),
    • 领先的特征向量(纽曼光谱方法),
    • Fast Greedy(Clauset et.al modularity optimization),
    • 标签传播(Raghavan等人),
    • Louvain(Blondel等,模块化优化),
    • Spinglass(Reichardt-Bornholdt,模块化优化),
    • InfoMap(Rosvall-Bergstrom,基于压缩的方法)。
  • 其他相关功能:处理模块化,处理层次结构等。
  • 可在R,C和Python中使用
  • 开源

我认为,社区检测最完整的工具。 有关详细信息,请查看: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。