如果我尝试计算我的图中节点A到Z的最短距离,那么Dijkstra算法效果不佳。我不知道为什么,我认为计算节点到节点的距离是一个问题。
PriorityQueue<Node> prio_station = new PriorityQueue<Node>();
// PrioritaetsQueue prio_station = new
// PrioritaetsQueue(arrayList_Nodes.size());
final_way = new ArrayList<Node>();
for (Node node : arrayList_Nodes) {
if (node.getData().getStation().equals(source.getData().getStation())) {
node.setPrevious(null);
node.setDistance(0);
prio_station.add(node);
} else {
node.setDistance(Integer.MAX_VALUE);
node.setPrevious(null);
prio_station.add(node);
}
}
// for(Node n : prio_station){
// System.out.println("Station in Prio: " + n.getData().getStation());
// }
Node min;
Node start = prio_station.peek();
while (prio_station.isEmpty() == false) {
min = prio_station.poll();
System.out.println(min.getData().getStation());
for (Edge neighbor : min.getArrayList_Edges()) {
Node adjNode = neighbor.getDestinationNode();
int alt = min.getDistance() + neighbor.getDistanceCost();
int dist = adjNode.getDistance();
if (alt < dist) {
adjNode.setDistance(alt);
adjNode.setPrevious(min);
如果我想将表单E导航到J,我有一个方法,它让我使用前一个节点然后我有w,而这样做很长时间直到我的startnode到达。我的预期输出应该是JHGFE但是我的输出是无止境的JHJHJHJHJHJHJHJHHHHHH