官网文档地址: https://jgrapht.org/guide/UserOverview
import org.apache.commons.lang3.StringUtils; import org.jgrapht.Graph; import org.jgrapht.GraphPath; import org.jgrapht.Graphs; import org.jgrapht.alg.cycle.CycleDetector; import org.jgrapht.alg.shortestpath.DijkstraShortestPath; import org.jgrapht.graph.DefaultDirectedGraph; import org.jgrapht.graph.DefaultEdge; import org.jgrapht.traverse.BreadthFirstIterator; import org.jgrapht.traverse.DepthFirstIterator; import java.util.Iterator; /** * @ClassName: Test * @author kanpiaoxue * @version 1.0 * @CreateTime: 2018/12/06 10:08:24 * @Description: jgrapht 示例 * * <dependency> * <groupId>org.jgrapht</groupId> * <artifactId>jgrapht-core</artifactId> * <version>1.3.0</version> * </dependency> */ public class JgraphtExample { /** * * @param args * @author kanpiaoxue * @throws Exception * @CreateTime: 2018/12/06 10:08:24 */ public static void main() throws Exception { String a = "A"; String b = "B"; String c = "C"; String d = "D"; String e = "E"; String f = "F"; // 构建图 Graph<String, DefaultEdge> g = new DefaultDirectedGraph<>(DefaultEdge.class); // 添加顶点 g.addVertex(a); g.addVertex(b); g.addVertex(c); g.addVertex(d); g.addVertex(e); g.addVertex(f); // 添加边 g.addEdge(a, b); g.addEdge(a, c); g.addEdge(b, d); g.addEdge(c, e); g.addEdge(d, f); g.addEdge(e, f); // 度 System.out.println(g.degreeOf(a)); // 出度 output: 2 System.out.println(g.inDegreeOf(a)); // 入度 output: 0 System.out.println(g.outDegreeOf(a)); // 入度 output: 2 // Graphs 工具类 // 当前顶点的后续节点列表 output: [B, C] System.out.println(Graphs.successorListOf(g, a)); // 当前顶点的后续节点列表 output: [D, E] System.out.println(Graphs.predecessorListOf(g, f)); // 图的遍历 // --深度优先遍历 Iterator<String> depthFirstIterator = new DepthFirstIterator<>(g, a); while (depthFirstIterator.hasNext()) { String p = depthFirstIterator.next(); System.out.println(p); /* * <pre> * A * C * E * F * B * D * </pre> */ } System.out.println(StringUtils.center("split", 100, "=")); // 分割线 // --广度优先遍历 Iterator<String> breadthFirstIterator = new BreadthFirstIterator<>(g, a); while (breadthFirstIterator.hasNext()) { String p = breadthFirstIterator.next(); System.out.println(p); /* * <pre> * A * B * C * D * E * F * </pre> */ } // 图中“环”的操作 CycleDetector<String, DefaultEdge> cycleDetector = new CycleDetector<>(g); // 探测图中是否有环 output: false System.out.println(cycleDetector.detectCycles()); // 找出图中的环 output: [] System.out.println(cycleDetector.findCycles()); // 最短路径 GraphPath<String, DefaultEdge> path = DijkstraShortestPath.findPathBetween(g, a, f); // [A, B, D, F] System.out.println(path.getVertexList()); DijkstraShortestPath<String, DefaultEdge> dijkstraAlg = new DijkstraShortestPath<>(g); // [A, B, D, F] GraphPath<String, DefaultEdge> path1 = dijkstraAlg.getPath(a, f); System.out.println(path1.getVertexList()); } }
相关推荐
在`jgrapht-0.8.0`这个版本中,可能包含了库的源代码、文档、示例程序和必要的依赖库。通过查看和学习这些内容,开发者可以深入了解JGrapht的工作原理,并在自己的项目中有效地利用这个强大的图形处理工具。 总的来...
6. **丰富的API**:提供全面的API文档和示例代码,帮助开发者快速上手并进行高效的开发。 **使用场景:** 1. **网络建模**:例如计算机网络、社交网络分析等,可以使用JGraphT构建和分析网络结构。 2. **数据可视化...
5. **API友好**:其API设计简洁明了,易于理解和使用,同时提供了丰富的示例代码和文档,便于开发者快速上手。 **应用领域** 1. **网络分析**:JGraphT常用于分析社交网络、计算机网络或其他复杂系统的连接结构。 ...
查询示例 使用客户端: 找到里昂(4.834413,45.767304)附近最近的网络节点: http GET :8080/routing/api/v1/distance lon==4.834413 lat==45.767304 返回一个GeoJSON Point: { " geometry " : { " ...
文档通常会指导如何安装、配置和使用这个库,而示例项目则展示了如何在实际应用中应用JGraphT的功能。 对于Java开发者来说,掌握JGraphT可以帮助他们更有效地处理涉及图数据结构的问题,比如在网络路由、社交网络...
JUNGRAPHT可视化:对可视化和示例代码进行了现代化并移植为使用图形和算法JUNGRAPHT-VISUALIZATION可以用于渲染以下任何内容: org.jgrapht.Graph ...包括用于可视化的R * Tree,用于强制控制布局的Barnes-Hut Quad ...
这些示例通常展示了如何创建基本的图形、添加交互功能、应用布局算法以及使用JGraphT扩展功能。通过学习和分析这些示例,开发者可以深入理解JGraph的工作原理,并将其应用到自己的项目中。 在实际开发中,JGraph常...
开发者可以通过阅读JGraphT和JGraphEd的官方文档,参加相关的在线课程,或者参考社区的示例代码来提高使用效率。 总结来说,JGraphEd是一个强大的Java绘图框架,它结合了JGraphT的图处理能力和友好的用户界面,为...
内容概要:本文全面介绍了 Java数据可视化的几个主流库,包括 JFreeChart、JavaFX、XChart、JGraphT 和 JUNG,探讨了它们的特点和使用场景。通过多个示例代码,展示了如何使用这些库创建不同类型的图表,例如柱状图...
JGraph 有多个版本,其中 JGraphX(也称为 JGraph Swing)是面向 Swing 应用程序的版本,而 JGraphT 则专注于图理论和算法。JGraph 还有一个开源社区,提供了许多扩展和示例。 **2. JGraph 的图形应用** JGraph 的...
在Java中,JGraphT是一个常用的选择,而在JavaScript中,D3.js或cytoscape.js等库可以实现交互式的关系图展示。 总结来说,关系图是理解和表达复杂系统之间关系的重要工具,它在多个IT领域都有应用。通过源码和工具...
标题 MEEDA算法的源代码 入门 这些说明将为您提供在本地计算机上运行的项目的... 要通过五个执行者来执行以运行jar文件:运行jar的命令行示例为java -jar MENHBSA4SWSC.jar out.stat problem.xml service-out.XML tax
工具有助于简化这些操作,例如图论库如NetworkX(Python)或JGraphT(Java)提供了丰富的功能来创建、操作和可视化图。 为了进一步理解图数据结构及其应用,可以访问给出的博文链接...
最后,这个Java版本的数据结构与算法教程很可能包含了这些主题的实际代码示例,帮助读者理解并实践所学知识。通过学习和实践,你将能够运用这些工具和技巧来提升你的编程技能,并为解决实际问题打下坚实基础。
5. **Java库支持**:在Java中,可以利用一些库来辅助构建和操作马尔科夫网络,比如OpenCV库提供了图形模型的实现,JGraphT库则可以用来处理图结构。 6. **并行计算优化**:由于马尔科夫网络的计算通常涉及到大量的...
8. **路径规划**:使用算法(如Dijkstra或A*)计算两点间的最短路径,Java库如JGraphT可以辅助实现。 9. **事件处理**:在JavaFX和Swing中,事件监听器允许用户与地图交互,例如点击地图上的特定区域。 10. **地图...
在Java中,我们可以自定义算法,或者使用现有的库如JGraphT,它提供了三角剖分的功能。 2. **多边形生成**:一旦图像被分割,每个区域需要转化为一个多边形。多边形的边可能是直线或曲线,具体取决于算法的选择。...
7. **图**:图数据结构用于表示对象之间的复杂关系,Java通常通过自定义类或第三方库如JGraphT来实现。 8. **散列表(哈希表)**:HashMap是Java中最常用的散列表,通过键值对进行存储,提供O(1)的平均查找和插入...
数据结构是计算机科学中的核心概念,它涉及到如何在内存中有效地组织和管理数据,以便进行高效的数据...在DataStructures-master这个项目中,可能包含了对这些数据结构的实现和示例,可以作为学习和实践的宝贵资源。
在"Data-Structures-Series-main"这个项目中,可能包含对以上数据结构的实现、示例代码和实践应用,这将帮助你更深入地理解和掌握Java中的数据结构。 例如,你可能会遇到如何实现一个简单的栈来模拟括号匹配,或者...