如何考虑边缘的权重遍历该图?

时间:2018-10-03 09:30:09

标签: java search graph graph-traversal

好的,所以我制作了这张图,该图我一直在执行以下搜索算法:

    class Graph{
class Edge implements Comparable<Edge>{
    int u,v,w;
    public Edge(int u,int v,int w){
        this.u=u;
        this.v=v;
        this.w=w;
    }
    @Override
    public String toString(){
        return "("+u+","+v+","+w+")";
    }
    /** Compare two edges on weights */
    @Override
    public int compareTo(Edge edge) {
        if (this.w > edge.w) {
            return 1;
        }
        else if (this.w == edge.w) {
            return 0;
        }
        else {
            return -1;
        }
    }
}
List<String> vertices = new ArrayList<>(); // Store vertices names
List<List<Edge>> neighbors = new ArrayList<>(); // Adjacency lists

到目前为止,我已经能够通过简单地遍历它了,方法是为每个字符串分配一个索引,并使用该索引获取其所有邻居。我只用整数来访问顶点和边。我现在的问题是我必须编写一个统一的成本搜索程序,但是我不确定如何在考虑边的权重的同时遍历列表。我并没有真正将边缘更多地视为索引。例如,假设我要顶点5的邻居。我将调用以下函数来获取它们:

        /** Return the neighbors of the specified vertex */
public List<Integer> getNeighbors(int index) {

    List<Integer> result = new ArrayList<>();
    for (Edge e: neighbors.get(index))
        result.add(e.v);

    return result;
}

如何在考虑加权边的情况下遍历图形?

0 个答案:

没有答案