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());
}