Dijkstra计算路径

时间:2016-05-06 21:20:54

标签: java graph-algorithm dijkstra

如果我尝试计算我的图中节点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

0 个答案:

没有答案