小さなグラフでモジュール性を計算する必要があり、Newman モジュール性スコアを計算するクラスを提供するこのプロジェクトに出くわしました。ただし、メソッドにはモジュール メンバーシップが必要です。
public static <V,E,M> double computeModularity (Graph<V,E> g,Transformer<V,M> moduleMembership)
だから私の質問は:私のノードにメンバーシップを割り当てるこれよりも良い方法はありますか?
// assuming I have a Graph<Person, String> thisNet
EdgeBetweennessClusterer<Person, String> edgeBetweennessClusterer = new EdgeBetweennessClusterer<>(1);
Set<Set<Person>> clusters = edgeBetweennessClusterer.transform(thisNet);
int membership = 0;
for (Set s : clusters) {
for (Iterator it = s.iterator(); it.hasNext();) {
Person inset = (Person) it.next();
inset.membership = membership;
}
membership++;
}
次に、次のような Transformer を適用します。
Transformer<Person, Integer> componentMembership = new Transformer<Person, Integer>() {
@Override
public Integer transform(Person s) {
return s.membership;
}
};