在线文字转语音网站:无界智能 aiwjzn.com

Java使用JGraphT创建有向图、无向图、权重图

Java使用JGraphT创建有向图、无向图、权重图

在Java中使用JGraphT创建有向图、无向图、权重图的步骤如下: 1. 添加JGraphT依赖类库的Maven坐标。在pom.xml文件中添加以下依赖: <dependency> <groupId>org.jgrapht</groupId> <artifactId>jgrapht-core</artifactId> <version>1.6.0</version> </dependency> 2. JGraphT简介:JGraphT是一个Java图类库,提供了丰富的图和图算法的实现。它支持创建有向图、无向图、加权图等,并提供了常见图算法,如最短路径、最小生成树、最大流等算法。 3. 创建有向图的示例: import org.jgrapht.Graph; import org.jgrapht.Graphs; import org.jgrapht.graph.DefaultDirectedGraph; import org.jgrapht.graph.DefaultEdge; public class DirectedGraphExample { public static void main(String[] args) { // 创建有向图对象 Graph<String, DefaultEdge> directedGraph = new DefaultDirectedGraph<>(DefaultEdge.class); // 添加顶点 directedGraph.addVertex("A"); directedGraph.addVertex("B"); directedGraph.addVertex("C"); // 添加边 directedGraph.addEdge("A", "B"); directedGraph.addEdge("B", "C"); // 输出图的顶点和边 System.out.println("顶点集合:" + directedGraph.vertexSet()); System.out.println("边集合:" + directedGraph.edgeSet()); } } 4. 创建无向图的示例: import org.jgrapht.Graph; import org.jgrapht.graph.DefaultEdge; import org.jgrapht.graph.SimpleGraph; public class UndirectedGraphExample { public static void main(String[] args) { // 创建无向图对象 Graph<String, DefaultEdge> undirectedGraph = new SimpleGraph<>(DefaultEdge.class); // 添加顶点 undirectedGraph.addVertex("A"); undirectedGraph.addVertex("B"); undirectedGraph.addVertex("C"); // 添加边 undirectedGraph.addEdge("A", "B"); undirectedGraph.addEdge("B", "C"); // 输出图的顶点和边 System.out.println("顶点集合:" + undirectedGraph.vertexSet()); System.out.println("边集合:" + undirectedGraph.edgeSet()); } } 5. 创建权重图的示例: import org.jgrapht.Graph; import org.jgrapht.graph.DefaultWeightedEdge; import org.jgrapht.graph.SimpleWeightedGraph; public class WeightedGraphExample { public static void main(String[] args) { // 创建权重图对象 Graph<String, DefaultWeightedEdge> weightedGraph = new SimpleWeightedGraph<>(DefaultWeightedEdge.class); // 添加顶点 weightedGraph.addVertex("A"); weightedGraph.addVertex("B"); weightedGraph.addVertex("C"); // 添加带权重的边 DefaultWeightedEdge edge1 = weightedGraph.addEdge("A", "B"); weightedGraph.setEdgeWeight(edge1, 1.5); DefaultWeightedEdge edge2 = weightedGraph.addEdge("B", "C"); weightedGraph.setEdgeWeight(edge2, 2.0); // 输出图的顶点和边 System.out.println("顶点集合:" + weightedGraph.vertexSet()); System.out.println("边集合:" + weightedGraph.edgeSet()); System.out.println("边权重:" + weightedGraph.getEdgeWeight(edge1) + ", " + weightedGraph.getEdgeWeight(edge2)); } } 总结:JGraphT是一个Java图类库,可以用来创建有向图、无向图和权重图,并提供了常见图算法的实现。通过添加相应的依赖类库,可以轻松地在Java中使用JGraphT。以上示例提供了创建有向图、无向图和权重图的完整Java代码。