iGraph库中Community Detection方法比较

14 篇文章 0 订阅

    复杂网络的使用中,有这么几个库:

表格来自:http://bbs.sciencenet.cn/blog-404069-297233.html

库名称原始开发语言可用某语言调用
BGLC++C++/ Python(通过boost-python)
QuickGraph   C#
支持.NET平台的任何语言(Python程序员可用IronPython)
igraph       CC/C++/R/Python(理论上至少有50种语言可直接或间接调用C程序)
NetworkX     PythonPython

=========
别的没有尝试过,igraph还是比较好用的,里面的社区发现经典算法很全面。直接贴对比几种方法的R代码吧,相关论文以及算法的复杂度都在代码中,自己体验体验吧,multilevel.community(算法可以称作:Louvain或者BGLL)算法感觉是稳定、准确而且快速的,特别是稀疏图的时候:没时间细说原理了,其实原理都很简单。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
library(igraph)
layout(matrix(c(1,2,3,
  4,5,6),nr = 2, byrow = T))
 
##########################################################
#经典的“Zachary 空手道俱乐部”(Zachary‟s Karate Club)社
#会网络[26]。20 世纪70 年代,Zachary 用了两年的时间观察美国一所大学的空手道
#俱乐部内部成员间关系网络。在Zachary 调查的过程中,该俱乐部的主管与校长因
#为是否提高俱乐部收费的问题产生了争执,导致该俱乐部最终分裂成了两个分别
#以主管与校长为核心的小俱乐部。就模块度优化而言,当前学者们已经广泛认为,
#该网络的最优划分是模块度Q=0.419 的4 个社团划分。
##########################################################
g <- graph.famous( "Zachary" )
 
##
#• Community structure in social and biological networks
# M. Girvan and M. E. J. Newman
#• New to version 0.6: FALSE
#• Directed edges: TRUE
#• Weighted edges: TRUE
#• Handles multiple components: TRUE
#• Runtime: |V||E|^2 ~稀疏:O(N^3)
##
system . time (ec <- edge.betweenness.community(g))
print(modularity(ec))
plot(ec, g)
 
#• Computing communities in large networks using random walks
# Pascal Pons, Matthieu Latapy
#• New to version 0.6: FALSE
#• Directed edges: FALSE
#• Weighted edges: TRUE
#• Handles multiple components: FALSE
#• Runtime: |E||V|^2
system . time (wc <- walktrap.community(g))
print(modularity(wc))
#membership(wc)
plot(wc , g)
#• Finding community structure in networks using the eigenvectors of matrices
# MEJ Newman
# Phys Rev E 74:036104 (2006)
#• New to version 0.6: FALSE
#• Directed edges: FALSE
#• Weighted edges: FALSE
#• Handles multiple components: TRUE
#• Runtime: c|V|^2 + |E| ~N(N^2)
system . time (lec <-leading.eigenvector.community(g))
print(modularity(lec))
plot(lec,g)
 
#• Finding community structure in very large networks
# Aaron Clauset, M. E. J. Newman, Cristopher Moore
#• Finding Community Structure in Mega-scale Social Networks
# Ken Wakita, Toshiyuki Tsurumi
#• New to version 0.6: FALSE
#• Directed edges: FALSE
#• Weighted edges: TRUE
#• Handles multiple components: TRUE
#• Runtime: |V||E| log |V|
system . time (fc <- fastgreedy.community(g))
print(modularity(fc))
plot(fc, g)
 
#• Fast unfolding of communities in large networks
# Vincent D. Blondel, Jean-Loup Guillaume, Renaud Lambiotte, Etienne Lefebvre
#• New to version 0.6: TRUE
#• Directed edges: FALSE
#• Weighted edges: TRUE
#• Handles multiple components: TRUE
# Runtime: “linear” when |V| \approx |E| ~ sparse; (a quick glance at the algorithm \
# suggests this would be quadratic for fully-connected graphs)
system . time (mc <- multilevel.community(g, weights=NA))
print(modularity(mc))
plot(mc, g)
 
#• Near linear time algorithm to detect community structures in large-scale networks.
# Raghavan, U.N. and Albert, R. and Kumara, S.
# Phys Rev E 76, 036106. (2007)
#• New to version 0.6: TRUE
#• Directed edges: FALSE
#• Weighted edges: TRUE
#• Handles multiple components: FALSE
# Runtime: |V| + |E|
system . time (lc <- label.propagation.community(g))
print(modularity(lc))
plot(lc , g)

其中BGLL算法还是既稳定又快速的方法,LPA方法也太不稳定了吧。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值