DijkstraShortestPath在JGrapht

时间:2017-05-05 00:59:34

标签: java graph-theory jgrapht graph-traversal jgraph

我试图让JGrapht的DijkstraShortestPath类能够找到简单的路径1 => 4 => 8 => 9.出于某种原因,getRoute为除1,4之外的任何输入返回null [1 => 8且1 => 9返回null]。根据文档,如果两个节点之间没有路径,则graphpath应该只为null。我相信你可以说,我完全不知所措。

import java.util.List;

import org.jgrapht.GraphPath;
import org.jgrapht.alg.shortestpath.DijkstraShortestPath;
import org.jgrapht.graph.SimpleWeightedGraph;

public class main {
    static SimpleWeightedGraph<Integer, Double> graph;

    public static void main(String[] args) 
    {
        graph = new SimpleWeightedGraph<Integer, Double>(Double.class);

        graph.addVertex(1);
        graph.addVertex(4);
        graph.addVertex(8);
        graph.addVertex(9);

        graph.addEdge(1, 4, 0.001);
        graph.addEdge(4, 8, 0.001);
        graph.addEdge(8, 9, 0.001);

        getRoute(1, 9);
    }

    public static void getRoute(Integer startVertex, Integer endVertex)
    {
        DijkstraShortestPath<Integer, Double> dijkstra = new DijkstraShortestPath<Integer, Double>(graph);
         GraphPath<Integer, Double> graphpath = dijkstra.getPath(startVertex, endVertex);
         if(graphpath == null)
         {
             System.err.println("null");
             return;
         }

         List<Integer> path = graphpath.getVertexList();
         for(Integer p : path) System.err.println(p);

    }
}

0 个答案:

没有答案