【问题标题】:Are there implementations of algorithms for community detection in graphs? [closed]图中是否有用于社区检测的算法的实现? [关闭]
【发布时间】:2018-02-14 00:45:50
【问题描述】:

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

【问题讨论】:

标签: graph graph-theory


【解决方案1】:

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

旁注:有时仍会使用 Girvan-Newman 算法,但它大部分已被更快、更准确的方法所取代。为了更好地了解该主题,我推荐Community detection algorithms: a comparative analysis 或更长的Community detection in graphs(103 页)。

【讨论】:

    【解决方案2】:

    你应该看看igraph library

    • 7 社区检测算法(包括上面提到的那些):
      • Edgebetweenness(基于 Girvan-Newman 链接中心性的方法),
      • Walktrap(基于 Pons-Latapy 随机游走的方法),
      • 主要特征向量(纽曼光谱法),
      • Fast Greedy(Clauset 等人的模块化优化),
      • 标签传播(Raghavan 等人),
      • Lo​​uvain(Blondel 等人,模块化优化),
      • Spinglass(Reichardt-Bornholdt,模块化优化),
      • InfoMap(Rosvall-Bergstrom,基于压缩的方法)。
    • 其他相关功能:流程模块化、处理层次结构等
    • 支持 R、C 和 Python
    • 开源

    在我看来,最完整的社区检测工具。 更多详情,另请查看:What are the differences between community detection algorithms in igraph?

    【讨论】:

    【解决方案3】:

    您可以尝试 SNAP 库(斯坦福网络分析平台,http://snap.stanford.edu/),其中包括模块化、Girvan-Newman 和 Clauset-Newman-Moore 算法。它是用 C++ 编写的,并且在 BSD 许可下。许多论文都使用了它(参见http://snap.stanford.edu/papers.html),它应该很好。

    【讨论】:

      【解决方案4】:

      我们最近实现了our algorithm,它基于Constant Potts 模型、快速鲁汶优化和InfoMap 的可靠映射方程,用于加权和有符号网络。 Here是开源java项目+可执行jar。

      【讨论】:

      • 这有帮助,非常感谢!但还有一个小问题,为什么你的分区输出是排序索引?预期将是一个二维数组,如 [[1,2,3],[4,8]] 表示 1,2,3 是一个社区
      • 我们使用“node_id group_id”而不是“group_id node_id1,...”,这样更容易表示自动化处理
      猜你喜欢
      • 2010-09-21
      • 2012-06-09
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 2018-08-15
      • 1970-01-01
      • 2015-05-11
      相关资源
      最近更新 更多