以下でも機能しないため、これは igraph のバグのようです。
> library(igraph)
> g <- graph.full(3)
> c <- edge.betweenness.community(g)
> community.to.membership(g, c$merges, steps=1)$membership
これにより、 のメンバーシップ ベクトルが得られますが1 2 0
、これは明らかに間違っています。正しい結果は1 0 0
またはになり0 1 1
ます。実際には、マージ行列から 1 を引くことでバグを修正できます。
> g <- graph.famous("zachary")
> c <- edge.betweenness.community(g)
> membership(c)
[1] 1 1 2 1 3 3 3 1 4 5 3 1 1 1 4 4 3 1 4 1 4 1 4 4 2 2 4 2 2 4 4 2 4 4
> community.to.membership(g, c$merges-1, steps=29)$membership
[1] 0 0 2 0 3 3 3 0 1 4 3 0 0 0 1 1 3 0 1 0 1 0 1 1 2 2 1 2 2 1 1 2 1 1
これら 2 つのメンバーシップ ベクトルは基本的に同じです (少し再インデックスされています)。グラフには 34 個の頂点があり、5 つのコミュニティがあるため、同じメンバーシップ ベクトルに到達するのに 29 ステップしか必要ないことに注意してください。したがって、34-5=29 回のマージを実行する必要があります。33 の手順を実行すると、1 つのコミュニティしか得られません。
これについては、igraph のバグ トラッカーにバグ レポートを提出します。