SimpleWeightedGraph<String, DefaultWeightedEdge> g = new SimpleWeightedGraph<>(DefaultWeightedEdge.class);
String v1 = "v1";
String v2 = "v2";
String v3 = "v3";
// add the vertices
g.addVertex(v1);
g.addVertex(v2);
g.addVertex(v3);
// add edges to create a circuit
g.addEdge(v1, v2);
g.addEdge(v2, v3);
我使用JGraphT Library创建图形,v1 - v2 - v3,如何检查v1是否与v3连接,它们可以通过v2相互联系。
答案 0 :(得分:1)
有很多方法可以做到这一点。我将使用的方法是检查最短路径。只需使用以下内容 -
DijkstraShortestPath dijk = new DijkstraShortestPath(g, startNode, endNode);
GraphPath<Integer, WeightedEdge> shortestPath = dijk.getPath();
这里 g 是图表。 GraphPath 中的类型与 g 的类型相同。如果存在连接, shortestPath 包含它们之间的最短路径。如果没有,则 shortestPath 等于null。