Java使用JGraphT向图中添加节点和边,指定节点的属性、边的权重
依赖类库的Maven坐标:
<dependency>
<groupId>org.jgrapht</groupId>
<artifactId>jgrapht-core</artifactId>
<version>1.5.1</version>
</dependency>
该类库的简要介绍:
JGraphT是一个用于表示、建模和操作图的Java类库。它提供了一套丰富的图数据结构(如有向图、无向图、加权图等)以及与之相关的算法和操作。
样例完整Java代码如下所示:
import org.jgrapht.Graph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleDirectedGraph;
public class GraphExample {
public static void main(String[] args) {
// 创建有向图
Graph<String, DefaultEdge> graph = new SimpleDirectedGraph<>(DefaultEdge.class);
// 添加节点
String node1 = "A";
String node2 = "B";
String node3 = "C";
graph.addVertex(node1);
graph.addVertex(node2);
graph.addVertex(node3);
// 添加边,并指定权重
DefaultEdge edge1 = graph.addEdge(node1, node2);
graph.setEdgeWeight(edge1, 1.0);
DefaultEdge edge2 = graph.addEdge(node2, node3);
graph.setEdgeWeight(edge2, 2.0);
DefaultEdge edge3 = graph.addEdge(node1, node3);
graph.setEdgeWeight(edge3, 3.0);
// 输出图的信息
System.out.println("图中的节点:");
for (String vertex : graph.vertexSet()) {
System.out.println(vertex);
}
System.out.println("图中的边及其权重:");
for (DefaultEdge edge : graph.edgeSet()) {
String sourceVertex = graph.getEdgeSource(edge);
String targetVertex = graph.getEdgeTarget(edge);
double weight = graph.getEdgeWeight(edge);
System.out.println(sourceVertex + " -> " + targetVertex + ", weight: " + weight);
}
}
}
总结:本文介绍了使用JGraphT来向图中添加节点和边,并指定节点的属性和边的权重的方法。通过简单的示例代码,展示了如何使用JGraphT创建有向图,添加节点和边,并输出图的信息。JGraphT是一个功能强大的用于处理图的Java类库,可以满足各种图相关的需求,如图的建模、算法分析等。