热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

数据结构与算法之图论

图1、基本概念极大连通、极小连通、极大连通子图、极小连通子图、连通分量极大连通在无向图中,指的是任意两点都有直接或者间接的路径极小连通在无向图中,生


1、基本概念


极大连通、极小连通、极大连通子图、极小连通子图、连通分量


  • 极大连通

    在无向图中,指的是任意两点都有直接或者间接的路径

  • 极小连通

    在无向图中,生成树就是一个极小连通;如果加一条边就会形成一个环,如果减一条边就会出现孤立的节点;n个节点应该有n-1条边

  • 极大连通子图和极小连通子图

    满足上述极大连通和极小连通的子图

  • 连通分量

    指的是极大连通子图的数目

  • 思考:假如一个图有n个节点

    如果边数小于n-1的话,此图必定是非连通图

    非连通图最多应该有 (n−1)(n−2)2\frac{(n-1)(n-2)}{2}2(n1)(n2) 条边 ,解释:由n-1构成完全图,如果此时再加入一条边,那么就会形成连通图了


强连通图、强连通分量


  • 强连通图

    有向图中,任意两个顶点都有直接或者间接的路径到达(注意,路径是有方向的),此图称为强连通图

  • 强连通分量

    有向图的强连通子图的数量就是强连通分量,书上是说‘有向图的极大连通子图就是强连通分量’

    如下图所示,三个强连通分量 {1,2,3,4}, {5}, {6}

    image-20220516103614869

  • 思考:假如有n个节点的有向图

    强连通情况下,至少需要n条边;解释:构成一个环就行了,这样,任意两点直接都可循环到达。


生成树与最小生成树


  • 生成树

    无向图G=(V,E)G = (V,E)G=(V,E)和无向图图G1=(V1,E1)G^1 = (V^1, E^1)G1=(V1,E1),若G1包含GG^1包含GG1G的所有顶点,且边是GGG的子集,那么G1就是G的生成树G^1就是G的生成树G1G

    生成树不唯一

    维基百科如下图定义

  • 最小生成树

    每条边都有权值,最小生成树就是最后生成的树,权值和最小




2、最小生成树算法


Prim算法


Kruskal算法


3、最短路径算法


Dijkstra算法


Floyd算法


4、拓扑排序与关键路径(AOV与AOE)


5、Graphviz简单介绍

Graphviz是用来可视化图和树的工具,常用.dot文件或者api进行操作,官网链接。


用法一、dot文件使用

目前还不会使用这个软件,先挖坑。


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 在API测试中,我们常常需要通过大量不同的数据集(包括正常和异常情况)来验证同一个接口。如果为每种场景单独编写测试用例,不仅繁琐而且效率低下。采用数据驱动的方式可以有效简化这一过程。本文将详细介绍如何利用CSV文件进行数据驱动的API测试。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
author-avatar
最棒小小丫_635
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有