`
kanpiaoxue
  • 浏览: 1777545 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jgraph的连通图使用范例

 
阅读更多

 

 

package utils;

import org.apache.commons.lang3.StringUtils;
import org.jgrapht.Graph;
import org.jgrapht.alg.connectivity.BiconnectivityInspector;
import org.jgrapht.graph.DefaultDirectedGraph;
import org.jgrapht.graph.DefaultEdge;

import java.util.Set;
import java.util.stream.IntStream;

/**
 * @ClassName: ConnectedGraphExample
 * @author kanpiaoxue
 * @version 1.0
 * @CreateTime: 2019/07/12 11:13:16
 * @Description: 连通图的示例
 */
public class ConnectedGraphExample {

    public static final int ZERO = 0;

    /**
     *
     * @param args
     * @author kanpiaoxue
     * @CreateTime: 2019/07/12 11:13:16
     */
    public static void main(String[] args) {
        Graph<Integer, DefaultEdge> g = new DefaultDirectedGraph<Integer, DefaultEdge>(DefaultEdge.class);
        IntStream.rangeClosed(1, 13).forEach(v -> {
            g.addVertex(v);
        });

        /**
         * <pre>
         * [示意图]:当前Graph是有向无环图(DAG),方向是:从上到下。
         * -- predecessor:upstream
         *
         *  8   1   5   7   9   11
         *  | / | \  \ /    |
         *  2   3  4  6     10
         *  |   |
         *  12  |
         *    \ |
         *     13
         *
         * -- successor:downstream
         *
         * 也可以下载博客附件:连通图.drawio的压缩包,解压之后,登录 https://www.draw.io/
         * 导入之后可以查看该图。或者查看代码上面的示意图。
         *
         * </pre>
         */

        g.addEdge(8, 2);
        g.addEdge(1, 2);
        g.addEdge(1, 3);
        g.addEdge(1, 4);
        g.addEdge(5, 6);
        g.addEdge(7, 6);
        g.addEdge(9, 10);
        g.addEdge(2, 12);
        g.addEdge(3, 13);
        g.addEdge(12, 13);
        // 双连通性检查器
        BiconnectivityInspector<Integer, DefaultEdge> in = new BiconnectivityInspector<>(g);
        Set<Graph<Integer, DefaultEdge>> graphs = in.getConnectedComponents();
        graphs.forEach(g1 -> {
            System.out.println(g1);
        });
        /**
         * <pre>
         *  ---> output
         *  ([1, 2, 3, 4, 8, 12, 13], [{1,2}, {1,3}, {1,4}, {8,2}, {12,13}, {2,12}, {3,13}])
         *  ([5, 6, 7], [{5,6}, {7,6}])
         *  ([9, 10], [{9,10}])
         *  ([11], [])
         * </pre>
         */

        System.out.println(StringUtils.repeat("=", 100));
        Graph<Integer, DefaultEdge> g11 = in.getConnectedComponent(11);
        System.out.println(g11);

        /**
         * <pre>
         *  ---> output
         *  ([11], [])
         * </pre>
         */
        System.out.println(StringUtils.repeat("=", 100));
        Graph<Integer, DefaultEdge> g2 = in.getConnectedComponent(2);
        System.out.println(g2);
        /**
         * <pre>
         *  ---> output
         *  ([1, 2, 3, 4, 8, 12, 13], [{1,2}, {1,3}, {1,4}, {8,2}, {12,13}, {2,12}, {3,13}])
         * </pre>
         */

    }

}

 

 

分享到:
评论

相关推荐

    jGraph 有向图自动布局解决方案

    jGraph 的自动布局解决方案可以通过 draw2d 的算法来实现,并且可以解决回路和非连通图的问题,具有高度的实用性和灵活性。 知识点: 1. jGraph 的基本概念和应用领域 2. jGraph 的自动布局解决方案 3. draw2d ...

    JGraph

    本手册旨在为用户提供全面的JGraph使用指南,包括安装配置、基础操作、高级特性等方面的内容。阅读本手册前,建议具备一定的Java编程基础。 ##### 3.1 预备知识(Pre-requisites for this Manual) - Java基础知识...

    Java图形组件 JGraph

    它提供了丰富的功能,让开发者能够轻松地构建可交互的、动态的图形模型,适用于数据可视化、流程图、组织结构图等多种场景。JGraph不仅支持基本的图形绘制,还支持拖放操作、事件处理、布局算法等高级特性,使得图形...

    Jgraph 使用手册

    《JGraph 使用手册》 **一、引言** 在当今数据密集型的世界中,图形(Graph)不仅是数据可视化的重要工具,也是数据结构和算法研究的关键领域。JGraph,一款由JGraph Ltd.开发的高性能图形编辑和展示组件,旨在...

    JGraph 手册+The JGraph Tutorial

    1. **note.docx**:可能包含个人笔记、额外示例或对JGraph使用的一些见解和心得。 2. **The JGraph Tutorial.docx**:完整版的JGraph教程文档,提供详细的步骤和代码实例。 3. **JGraph手册.pdf**:官方JGraph手册的...

    jgraph源码+例子

    这个压缩包“jgraph源码+例子”包含的是JGraph库的源代码以及相关的示例,对于学习和理解JGraph的内部工作原理以及如何在自己的项目中使用它非常有帮助。 JGraph的核心功能包括: 1. **图形绘制**:JGraph允许...

    jgraph

    用户可以点击、拖动、缩放和旋转图形,这使得jgraph在创建流程图、网络拓扑图和状态机等需要用户参与的应用中特别有用。 5. **事件处理:** jgraph允许开发者绑定自定义事件处理器,以便在用户与图形交互时执行...

    JGraph document

    压缩包中的"JGraph doc"文件可能是JGraph的官方文档,包括详细的API参考、示例代码和教程,是学习和使用JGraph的重要资料。通过阅读这些文档,可以深入理解JGraph的功能,并学会如何在自己的项目中有效利用它。 ...

    JGraph中文资料

    JGraph 是一款强大的图形库,主要用于创建流程图和其他类型的图形可视化应用。它为开发者提供了丰富的功能,包括图形的创建、编辑、布局以及交互性。在本文中,我们将深入探讨 JGraph 的核心概念、使用方法以及如何...

    jgraph官方手册

    - **图形分析**:利用jgraph提供的API,开发者可以进行图形的深度分析,如路径查找、连通性分析等。 - **1.3 关于本手册** - **先决条件**:学习本手册之前,建议读者具备一定的Java编程基础。 - **获取帮助**:...

    jgraph官方文档

    文档覆盖了jgraph的基本概念、使用方法以及高级特性,对于希望深入理解jgraph的开发者来说是不可或缺的资源。 #### 二、什么是jgraph? jgraph主要功能在于提供了一种灵活的方式来创建和编辑图(graphs)。这里的“图...

    有向图自动布局-JGraph--demo

    文件名"Jgraph"可能是指JGraph的示例代码或者文档,通过查看这个文件,你可以学习如何使用JGraph库来创建和管理有向图,包括导入和导出数据、添加和删除节点、应用不同的布局策略以及处理用户交互等。 总的来说,...

    Jgraph中文讲义

    JGraph 有多个版本,其中 JGraphX(也称为 JGraph Swing)是面向 Swing 应用程序的版本,而 JGraphT 则专注于图理论和算法。JGraph 还有一个开源社区,提供了许多扩展和示例。 **2. JGraph 的图形应用** JGraph 的...

    JGraph小列子加jar包

    "JGraph小例子加jar包"这个主题意味着我们将探讨如何使用JGraph库,并通过查看其提供的示例代码来学习和理解其核心功能。 首先,JGraph的核心组件是mxGraph,这是一个灵活且高度可定制的图形编辑框架。它支持各种...

    jgraph的jar包 zip 源代码

    JGraph广泛应用于数据可视化、流程图、网络拓扑图、uml图等场合,尤其是在需要用户交互编辑图形的软件中。例如: - **项目管理工具**:用于展示项目任务间的依赖关系。 - **数据库设计工具**:展示数据库表之间的...

    JGraph组件下载 JGraph.jar组件下载

    JGraph组件下载 JGraph.jar组件下载 javabean组件下载 图像绘制javabean

    jgraph-draw.io

    使用jgraph-draw.io创建流程图的过程通常包括以下几个步骤: 1. **启动应用**:访问jgraph-draw.io的网站或本地部署的应用,进入编辑界面。 2. **选择模板**:根据需求,选择合适的流程图模板或从头开始创建。 3. *...

    jgraph源代码

    **正文** 标题“jgraph源代码”所提及的“jgraph”,是一个开源的图形组件库,主要用于Java Swing应用...对于希望提升Java应用视觉表现力和交互性的开发者来说,理解和使用JGraph及其扩展库是一项非常有价值的技能。

    Swing 实现 JGraph

    这里提到的“图”是指图论中的定义,而不是函数图像。 在设计与实现JGraph时,遵循了以下原则: - **全Swing兼容性**:确保JGraph可以无缝集成到任何基于Swing的应用程序中。 - **清晰高效的设计**:设计简洁明了...

    JGRAPH开发jar

    **JGRAPH开发jar详解** JGRAPH是一款强大的图形库,主要用于Java平台上的...无论是数据分析的可视化展示,还是流程图的绘制,JGRAPH都能够满足需求,并且提供了足够的定制空间,让开发者能够打造出个性化的图形界面。

Global site tag (gtag.js) - Google Analytics