添加两条边-JGraphT

时间:2018-11-06 07:21:38

标签: java jgrapht

我正在使用SimpleDirectedWeightedGraph库中的JGrapghT 1.2.0。我的目标是在顶点AB之间创建两个边,以使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]

为什么不能在具有相同值的顶点之间创建两条边?

2 个答案:

答案 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)));