java最短路径(jgrapht)

2019-07-08  本文已影响0人  淡看江湖等雨

基于jgrapht求最短路径的算法,有向图/无向图,加权图

/**
     * 主方法
     * 
     * @param args
     */
    public static void main(String[] args) {
        String v1 = "v1";
        String v2 = "v2";
        String v3 = "v3";
        String v4 = "v4";
        String v5 = "v5";

        DefaultDirectedWeightedGraph<String, DefaultWeightedEdge> graph=new DefaultDirectedWeightedGraph<>(DefaultWeightedEdge.class);
        graph.addVertex(v1);
        graph.addVertex(v2);
        graph.addVertex(v3);
        graph.addVertex(v4);
        graph.addVertex(v5);

        DefaultWeightedEdge edge1 = graph.addEdge(v1, v2);
        graph.setEdgeWeight(edge1, 3);

        DefaultWeightedEdge edge2 = graph.addEdge(v1, v3);
        graph.setEdgeWeight(edge2, 8);

        DefaultWeightedEdge edge3 = graph.addEdge(v1, v4);
        graph.setEdgeWeight(edge3, 5);

        DefaultWeightedEdge edge4 = graph.addEdge(v1, v5);
        graph.setEdgeWeight(edge4, 2);

        DefaultWeightedEdge edge5 = graph.addEdge(v2, v3);
        graph.setEdgeWeight(edge5, 4);

        DefaultWeightedEdge edge6 = graph.addEdge(v2, v4);
        graph.setEdgeWeight(edge6, 3);

        DefaultWeightedEdge edge7 = graph.addEdge(v2, v5);
        graph.setEdgeWeight(edge7, 4);

        DefaultWeightedEdge edge8 = graph.addEdge(v3, v4);
        graph.setEdgeWeight(edge8, 1);

        DefaultWeightedEdge edge81 = graph.addEdge(v4, v3);
        graph.setEdgeWeight(edge81, 1);

        DefaultWeightedEdge edge9 = graph.addEdge(v3, v5);
        graph.setEdgeWeight(edge9, 4);

        DefaultWeightedEdge edge10 = graph.addEdge(v4, v5);
        graph.setEdgeWeight(edge10, 2);

        DefaultWeightedEdge edge11 = graph.addEdge(v5, v4);
        graph.setEdgeWeight(edge11, 2);

        DijkstraShortestPath<String, DefaultWeightedEdge> dijkstraShortestPath = new DijkstraShortestPath<>(graph);
        GraphPath<String, DefaultWeightedEdge> path = dijkstraShortestPath.getPath(v1, v3);

        System.out.println(path.getEdgeList());
    }
上一篇 下一篇

猜你喜欢

热点阅读