【发布时间】:2016-03-22 20:34:19
【问题描述】:
我想创建一个有向加权图,然后通过 Dijkstra 算法找到一个顶点到花药之间的最短路径,代码如下所示:
import org.jgrapht.alg.DijkstraShortestPath;
import org.jgrapht.graph.DefaultDirectedWeightedGraph;
public class testing {
public static void main(String[] args) {
DefaultDirectedWeightedGraph<Integer, Double> g;
g = new DefaultDirectedWeightedGraph<Integer,Double>(Double.class);
g.addVertex(0);
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addVertex(4);
g.addVertex(5);
g.addEdge(4, 5, 0.8);//1-Edge
g.addEdge(3, 4, 0.1);//2-Edge
g.addEdge(0, 1, 0.2);//3-Edge
g.addEdge(1, 2, 0.3);//4-Edge
g.addEdge(2, 3, 0.1);//5-Edge
g.addEdge(0, 5, 0.7);//6-Edge
g.addEdge(4, 0, 0.7);//7-Edge
g.addEdge(4, 1, 0.5);//8-Edge
g.addEdge(2, 4, 12.8);//9-Edge
System.out.println(g.toString());
DijkstraShortestPath<Integer, Double>shortest =
new DijkstraShortestPath<Integer, Double>(g, 1, 4);
System.out.println(shortest.getPathEdgeList() );
}
}
([0, 1, 2, 3, 4, 5], [0.8=(4,5), 0.1=(3,4), 0.2=(0,1), 0.3=(1,2), 0.7=(0,5), 0.5=(4,1), 12.8=(2,4)])
[0.3, 12.8]
而不是[0.3,0.1,0.1] 1->2->3
我知道在addEdge Jdocument 中说,如果图中存在具有相同权重的另一条边,则您不能向图中添加一条边。 有没有办法解决这个问题?
【问题讨论】: