如果您从 R 中使用 igraph,请使用此选项
cluster_spinglass {igraph} | R 文档 |
此函数尝试通过自旋玻璃模型和模拟退火在图中查找社区。
cluster_spinglass(
graph,
weights = NULL,
vertex = NULL,
spins = 25,
parupdate = FALSE,
start.temp = 1,
stop.temp = 0.01,
cool.fact = 0.99,
update.rule = c("config", "random", "simple"),
gamma = 1,
implementation = c("orig", "neg"),
gamma.minus = 1
)
图 |
输入图可以是定向的,但边的方向被忽略。 |
weights |
边的权重。它必须是正数值向量、 |
vertex |
此参数可用于计算给定顶点的社区,而无需计算所有社区。请注意,如果存在此参数,则会忽略其他一些参数。 |
spins |
整数常数,要使用的自旋数。这是社区数量的上限。在此处提供一个(合理地)大数没有问题,在这种情况下,某些自旋状态将不会被填充。 |
parupdate |
逻辑常数,是否并行(同步)更新顶点的自旋。如果使用该函数的第二种形式(即,存在“ |
start.temp |
实数常数,起始温度。如果使用该函数的第二种形式(即,存在“ |
stop.temp |
实数常数,停止温度。如果温度降至此水平以下,则模拟终止。如果使用该函数的第二种形式(即,存在“ |
cool.fact |
模拟退火的冷却因子。如果使用该函数的第二种形式(即,存在“ |
update.rule |
字符常数,给出模拟的“null-model”。可能的值:“simple”和“config”。 “simple”使用具有与基线概率相同数量边的随机图,“config”使用具有与输入图相同顶点度的随机图。 |
gamma |
实数常数,算法的 gamma 参数。这指定了社区中存在和不存在的边的重要性之间的平衡。粗略地说,社区是一组在社区内具有许多边,而在社区外(即在社区本身和图的其余部分之间)具有少量边的顶点集。默认值 1.0 使现有链接和不存在的链接同样重要。较小的值使现有链接更重要,较大的值使缺失链接更重要。 |
implementation |
字符标量。目前,igraph 包含自旋玻璃社区发现算法的两种实现。更快的原始实现是默认的。可以通过在此处提供“neg”来选择另一个考虑负权重的实现。 |
gamma.minus |
实数常数,算法的 gamma.minus 参数。这指定了社区中存在和不存在的负加权边的重要性之间的平衡。gamma.minus 的较小值会导致负内部连通性较低的社区。如果此参数设置为零,则该算法将简化为图着色算法,使用自旋数作为颜色数。如果选择“orig”实现,则忽略此参数。 |
此函数尝试在图中查找社区。社区是一组节点,社区内有许多边,社区外(即社区本身和图的其余部分之间)有少量边。
对于具有负权重的边,此想法是相反的,即社区内的负边很少,社区之间的负边很多。请注意,只有“neg”实现支持负边权重。
spinglass.cummunity
函数可以解决与社区检测相关的两个问题。如果未给出 vertex
参数(或为 NULL
),则(近似)解决常规社区检测问题,即通过优化能量函数将顶点划分为社区。
如果给出了 vertex
参数且不为 NULL
,则它必须是顶点 ID,并且使用相同的能量函数来查找给定顶点的社区。另请参见下面的示例。
如果未给出 vertex
参数,即使用第一种形式,则 cluster_spinglass
返回 communities
对象。
如果存在 vertex
参数,即使用第二种形式,则返回一个命名的列表,其中包含以下组件
community |
数值向量,给出与 |
cohesion |
结果的凝聚力分数,请参阅参考文献。 |
adhesion |
结果的粘附力分数,请参阅参考文献。 |
inner.links |
|
outer.links |
|
Jorg Reichardt 提供了原始代码,Gabor Csardi csardi.gabor@gmail.com 提供了 igraph 胶水代码。
Vincent Traag (http://www.traag.net/) 实现了对原始函数的更改,以包括负关系的可能。
J. Reichardt 和 S. Bornholdt:社区检测的统计力学,Phys。修订版 E,74,016110 (2006),https://arxiv.org/abs/cond-mat/0603718
M. E. J. Newman 和 M. Girvan:在网络中查找和评估社区结构,Phys。修订版 E 69, 026113 (2004)
V.A. Traag 和 Jeroen Bruggeman:具有正负链接的网络中的社区检测,https://arxiv.org/abs/0811.2329 (2008)。
g <- sample_gnp(10, 5/10) %du% sample_gnp(9, 5/9)
g <- add_edges(g, c(1, 12))
g <- induced_subgraph(g, subcomponent(g, 1))
cluster_spinglass(g, spins=2)
cluster_spinglass(g, vertex=1)