将值插入到优先级队列中作为插入nxn矩阵

时间:2015-05-28 12:35:35

标签: java

任何人都可以帮我解决这个问题。我有一个包含大量节点和边缘的图表。我必须给每个对的节点(使用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的新手。

我很想听听你的想法。

0 个答案:

没有答案