igraph 中
cluster_optimal()
的文档表示它“在所有可能的分区上”最大化了模块化性。然而,似乎在某些情况下,其他 cluster_
函数可以找到具有更高模块化程度的分区。这是使用 Zachary Karate Club 的示例:
library(igraph)
library(igraphdata)
data(karate)
optimal <- cluster_optimal(karate)
modularity(optimal)
[1] 0.4449036
louvain <- cluster_louvain(karate, resolution = 0.5)
modularity(louvain)
[1] 0.654195
在这种情况下,
cluster_louvain()
找到了一个具有更高模块化程度的分区。
我是否误解了
cluster_optimal()
的作用?或者可能是因为我的 igraph 版本没有使用 GLPK 支持编译(我怎么知道)?
在这种情况下,cluster_louvain() 会找到一个具有更高模块化程度的分区。
这不是真的。 在第二种情况下,您使用不同于 1 的分辨率参数来计算广义模块化。您不是在比较苹果与苹果,而是在两种情况下计算相同的数量。