我正在使用SimpleDirectedWeightedGraph
库中的JGrapghT 1.2.0
。我的目标是在顶点A
和B
之间创建两个边,以使A <-80-> B
。如果我这样做:
graph.addEdge("A", "B", 80);
graph.addEdge("B", "A", 80);
System.out.println(graph.getAllEdges("A", "B"));
System.out.println(graph.getAllEdges("B", "A"));
我得到:
[80]
[]
如果我将第二行更改为:graph.addEdge("B", "A", 81);
,我会得到
[80]
[81]
为什么不能在具有相同值的顶点之间创建两条边?
答案 0 :(得分:2)
从SimpleDirectedGraph
上的JavaDocs:
一个简单的有向图。简单的有向图是有向图,其中不允许在任何两个顶点之间使用多个(平行)边,也不允许使用循环。
答案 1 :(得分:0)
您可以尝试以下方法:
DirectedWeightedMultigraph<String, DefaultWeightedEdge> graph =
new DirectedWeightedMultigraph<String, DefaultWeightedEdge>(DefaultWeightedEdge.class);
// vertices
String u = "A";
String v = "B";
// add vertices
graph.addVertex(u);
graph.addVertex(v);
// add weighted edges
graph.setEdgeWeight(graph.addEdge(u, v), 80);
graph.setEdgeWeight(graph.addEdge(v, u), 80);
// print edge weighted
System.out.println(graph.getEdgeWeight(graph.getEdge(u, v)));
System.out.println(graph.getEdgeWeight(graph.getEdge(v, u)));