我正在使用jgrapht,在这里遇到问题。从一个源顶点创建具有相同权重的两个边后,我最终只有一个边:
DirectedWeightedPseudograph<Object, Object> Grph1 = new DirectedWeightedPseudograph<>(Object.class);
Grph1.addVertex("a");
Grph1.addVertex("b");
Grph1.addVertex("c");
Grph1.addEdge("a", "b", "55");
Grph1.addEdge("a", "c", "55");
我期望输出:
a--55-->b
a--55-->c
但是实际输出:
a--55-->b
c
最佳答案
您没有创建两个边缘。您仅创建一个边,该边为"55"
。右:字符串"55"
是示例中的边缘。
为了创建具有实际权重的多个边缘(需要双关语),应声明图形具有正确的类型,即使用例如DefaultWeightedEdge
作为边缘类型的图形。
然后,当通过调用addEdge
添加新边时,会收到DefaultWeightedEdge
实例。使用此实例,可以通过调用setEdgeWeight
将权重分配给该边缘。
Graph<String, DefaultWeightedEdge> g = new DirectedWeightedPseudograph<>(DefaultWeightedEdge.class);
g.addVertex("a");
g.addVertex("b");
g.addVertex("c");
DefaultWeightedEdge e0 = g.addEdge("a", "b");
g.setEdgeWeight(e0, 55.0);
DefaultWeightedEdge e1 = g.addEdge("a", "c");
g.setEdgeWeight(e1, 55.0);
System.out.println(g.edgeSet());
关于java - 如何创建具有相同权重和相同源顶点的多个边?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55974370/