解读图论中的社区结构

时间:2014-07-12 19:52:57

标签: r algorithm graph igraph

好的,我有这样的文件。

 5 1211 11
 18 25 11
 12 281 11
 522 569 11
 46 269 11
 46 1854 11
 544 2324 11
 544 1955 11
 10 795 11
 246 982 11
 37 1500 11
 2 1154 11
 11 911 11
 200 281 11
 512 663 11
 197 663 11
 181 202 11
 1 124 11
 14 636 11
 14 1616 11
 578 1743 11

前两列代表节点(人),第三列代表他们在一段时间内发送消息时所遵循的特定模式(在本例中相同)。节点实际上代表在同一​​办公室工作的人。现在,我为他们和This is the graph of the nodes following a particular pattern.

绘制了一个图表

现在,我使用带有算法的community命令作为walktrap.community使用R.我再次获得了图形,after applying communities

我真的想知道这些分组的含义。我知道他们已经通过考虑模块性进行了分组。但这些分组究竟代表什么呢? 我在很多研究论文中读过这篇文章,但没有发现任何相关内容。

1 个答案:

答案 0 :(得分:2)

不确定这是你在问什么,但是......

社区是网络集群的一种形式。基本思想是给定社区中的节点(顶点)与该社区中的其他节点“更多地连接”,而不是与其他社区中的节点“连接”。在您的简单示例中,节点46连接到节点269和1854,但是这三个节点没有连接到任何其他节点,因此它们形成社区。类似地,节点11和911彼此连接,但不连接到任何其他节点,因此它们形成社区。 “更多连接”的定义取决于用于识别社区的算法(进行聚类)。

编辑对OP评论的回应。

来自文档:

  

此函数尝试查找密集连接的子图,也称为   图表中的社区通过随机漫步。这个想法是随机的   走路往往会留在同一个社区。

以下是一个例子:

library(igraph)
# create a sample graph
g <- graph.full(5)
for (i in 0:3) {
  g <- g %du% graph.full(5)
  g <- add.edges(g,c(5*i+1,5*(i+1)+1))
}

wc <- walktrap.community(g)
colors <- rainbow(max(membership(wc)))
set.seed(1)   # for reproducible layout
plot(g,vertex.color=colors[membership(wc)], 
     layout=layout.fruchterman.reingold)

在此示例中,每个子组(社区)都是高度互连的,虽然群集彼此连接,但它们不那么相似。因此,在节点1-5中开始的随机游走更有可能在这些节点之间循环,而不是到达任何其他节点。因此,节点1-5形成一个社区。

详细描述了算法here