我正在尝试使用加权/有向图实现Dijkstra算法。这只是一张图,但是在查看了Dijkstra的伪代码之后,我看不出要怎么去那里。
任何帮助/指导都会很棒。
import java.util.LinkedList;
public class WeightedGraph {
static class Edge {
int source;
int destination;
int weight;
public Edge(int source, int destination, int weight) {
this.source = source;
this.destination = destination;
this.weight = weight;
}
}
static class Graph {
int vertices;
LinkedList<Edge> [] adjacencylist;
Graph(int vertices) {
this.vertices = vertices;
adjacencylist = new LinkedList[vertices];
//initialize adjacency lists for all the vertices
for (int i = 0; i <vertices ; i++) {
adjacencylist[i] = new LinkedList<>();
}
}
public void addEgde(int source, int destination, int weight) {
Edge edge = new Edge(source, destination, weight);
adjacencylist[source].addFirst(edge); //for directed graph
}
}
public static void main(String[] args) {
int vertices = 6;
Graph graph = new Graph(vertices);
graph.addEgde(0, 1, 4);
graph.addEgde(0, 2, 3);
graph.addEgde(1, 3, 2);
graph.addEgde(1, 2, 5);
graph.addEgde(2, 3, 7);
graph.addEgde(3, 4, 2);
graph.addEgde(4, 0, 4);
graph.addEgde(4, 1, 4);
graph.addEgde(4, 5, 6);
}
}