我正在使用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/

10-09 07:01