Java JUNG中的图模性

Java JUNG中的图模性,java,modularity,jung,sna,Java,Modularity,Jung,Sna,我需要在一个小图上计算模块化,我偶然发现了一个提供了计算纽曼模块化分数的类。但是,该方法需要模块成员资格: public static <V,E,M> double computeModularity (Graph<V,E> g,Transformer<V,M> moduleMembership) 所以我的问题是:有没有比这更好的方法来为我的节点分配成员资格 // assuming I have a Graph<Person, String> t

我需要在一个小图上计算模块化,我偶然发现了一个提供了计算纽曼模块化分数的类。但是,该方法需要模块成员资格:

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<Person, Integer> componentMembership = new Transformer<Person, Integer>() {
    @Override
    public Integer transform(Person s) {
       return s.membership;
    }
};

您也可以使用将人员映射到成员身份值的映射。这个地图可以用你已经发布的循环来填充,变压器可以简单地在地图中查找这个人。这能回答你的问题吗?看来我的方法是合理的。。。谢谢你的选择!合理-这有点模糊。Person类中不应该有公共字段。如果这些信息只是暂时用于一个非常特定的算法,那么您不应该用这样一个可能无用的字段污染您的业务模型类。假设您需要运行10个其他算法,并且每个算法都需要一个或多个数据项与一个人关联-您会将它们全部作为公共字段放入Person类中吗?明白您的意思了,谢谢