任何人都可以帮我解决这个问题。我有一个包含大量节点和边缘的图表。我必须给每个对的节点(使用jaccard算法)给予相邻的节点然后找到前n个分数边缘。 我使用邻接矩阵如下:
import java.util.HashSet;
import org.gephi.graph.api.Graph;
import org.gephi.graph.api.Node;
public class Jaccard extends CommonNeighbors{
private final static String NAME = "JC";
private final static String FULL_NAME = "Jaccard's Coefficient (JC)";
public double getScore(Node v1, Node v2){
HashSet<Node> neighbors = new HashSet<Node>(this.graph.getNeighbors(v1));
neighbors.addAll(new HashSet<Node>(this.graph.getNeighbors(v2)));
double score = 0;
if(!neighbors.isEmpty()){
score = super.getScore(v1, v2)/neighbors.size();
}
return score;
}
public String getName() {
return NAME;
}
public String getFullName(){
return FULL_NAME;
}
}
ArrayList<ArrayList<Double>> score = new ArrayList<ArrayList<Double>>();
Node[] nodes = graph.getNodes().toArray();
Jaccard jaccard= new Jaccard();
for(Node f:nodes){
for(Node g:nodes){
if(!graph.isAdjacent(g, f) && g!=f ){
score.get(f.getId()).set(g.getId(), jaccard.getScore(f, g));
}else {
score.get(f.getId()).set(g.getId(), 0.0);
}
}
}
一个人说邻接矩阵的内存效率最高,最好用PriorityQueue表示对节点和分数。
问题
我如何构建PriorityQueue,因为我将值插入到我的nxn双矩阵中(得分[i] [j])。
PriorityQueue((i,j),value)
请详细解释,因为我是java的新手。
我很想听听你的想法。