【数据结构】——图

数据结构 图(Graph) 在数据结构中,是一种非常重要的数据结构,用于表示不同的对象之间的关系。 阅读详情

目录

图的定义和基本术语

图的存储结构

邻接矩阵表示法

邻接表表示法

时间复杂度

图的遍历

深度优先搜索遍历

广度优先搜索遍历

图的生成树

拓扑排序

图的定义和基本术语

概述:一种复杂的非线性结构,结点之间的关系可以是任意的,图中任意两个元素之间都可能相关。

图由两个集合V、E组成,定义为G=(V, E),其中V是顶点的有限非空集合,E是由V中顶点偶对表示的边的集合。

顶点集 V(G),边集 E(G)。E(G)可以为空集,只有顶点没有边。

有向图

  • 概述:每条边都是有方向的图
  • 一条有向边是由两个顶点组成的有序对,用尖括号表示<>
  • <v(i),v(j)>表示一条有向边,此边称为顶点v(i)的一条出边,顶点v(j)的一条入边
  • 有向边称为弧
  • 边的起点称为弧尾
  • 边的终点称为弧头

无向图

  • 概述:每条边都是没有方向的图
  • 边都是顶点的无序对,用圆括号表示( )

图示:

有向图G1的顶点集和边集
无向图G2的顶点集和边集

  • n表示图中顶点数,e表示图中边或弧的数目
  • 具有1/2*(n)*(n-1)条边的无向图称为无向完全图
  • 具有(n)*(n-1)条边或弧的有向图称为有向完全图

入度:以该顶点为终点的入边数目。

出度:以该顶点为起点的出边数目。

该顶点的度 = 入度 + 出度

如果顶点v(i)的度为D(v(i)),不管是有向图或无向图,顶点数n,边数e和度数之间有如下关系:

例如,上图G1的边数e = ( D(v(1)) + D(v(2)) + D(v(3)) ) / 2 = (3 + 2 + 3) / 2 = 4

路径长度:一条路径上经过的边的数目。

简单路径:一条路径上除了起点和终点可以为同一个顶点外,其余顶点均不相同的路径。

回路 (环):一条简单路径上的起点和终点为同一个顶点。

在一个无向图中,顶点v(i)到顶点v(j)有路径,称v(i)和v(j)是连通的。

连通图:在一个无向图中,任意两个顶点v(i)和v(j)都连通。否则为非连通图。

连通分量:无向图的极大连通子图。

任何连通图的连通分量只有一个,其自身。而非连通图的无向图有多个连通分量。

图示:

强连通图:在一个有向图中,任意两个顶点v(i)和v(j)都连通。

有向图中的极大连通子图称作有向图的强连通分量。

在一个图的每条边上标上某种数值,该数值称为该边的权。

边上带权的图称为带权图。

带权的连通图称为网络。

图示:

图的存储结构

邻接矩阵表示法

概述:是表示图形中顶点之间相邻关系的矩阵。

转换规则:0代表顶点之间不连通,1代表顶点之间是连通的。

带权图的转换:把1换为相应边上的权值,0的位置可以不动或将其换为无穷大表示。

图示:

图6.7是转换图6.6之后的邻接矩阵,图6.8是转换的上图6.5中的带权图。

无向图的邻接矩阵是按主对角线对称的。

邻接表表示法

概述:图的一种链式存储结构。类似树的孩子链表表示法。

图示:基于上述图进行的转换

时间复杂度

图的深度优先和广度优先时间复杂度主要是根据图的表示方式来决定的。

  • 采用邻接矩阵表示,时间复杂度为:O(n^2)
  • 采用邻接表表示,时间复杂度为:O(n+e)

图的遍历

深度优先搜索遍历

基本思想:

  1. 从图中选任意一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点
  2. 当没有未访问过的顶点时,则回到上一个顶点,继续试探别的顶点,直到所有的顶点都被访问过

图示:

深度优先遍历图G(8)的顶点访问序列:v(0),v(1),v(2),v(5),v(4),v(6),v(3),v(7),v(8)

广度优先搜索遍历

基本思想:首先访问出发点v(i),接着依次访问v(i)的所有未被访问过的邻接点v(i1),v(i2),...,v(it)并都标记为已访问,然后再按照v(i1),v(i2),...,v(it)的次序,访问每一个顶点的所有未曾访问过的顶点并都标记为以访问过,依次类推,直到图中所有和初始出发点v(i)有路径想通的顶点都已访问过为止。

图示:

广度优先搜索遍历序列:v(0),v(1),v(3),v(4),v(2),v(6),v(8),v(5),v(7)

图的生成树

在图论中,常常将树定义为一个无回路的连通图。

一个连通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树。

生成树是连通图的包含图中所有顶点的一个极小连通子图 (边最少)。一个图的极小连通子图恰为一个无回路的连通图。

一棵具有n个顶点的生成树有仅有n-1条边,有n-1条边的图不一定是生成树。同一个图可以有不同的生成树。

图示:

由深度优先搜索所得的生成树称之为深度优先生成树,简称DFS生成树。

由广度优先搜索所得的生成树称之为广度优先生成树,简称BFS生成树。

图示:基于上图G(8)的转换

对于连通的带权图,生成树也是带权的,生成树各边的权值总和称为该树的权,权值最小的生成树称为图的最小生成树 (MST)。

拓扑排序

概述:对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若<u,v> ∈E(G),则u在线性序列中出现在v之前。简单点说就是,该顶点的所有指向它的顶点排过序后才能排该顶点。

特点:

  • 有向无环图才存在拓扑序列
  • 可能存在多个拓扑序列

图示:

拓扑序列1:C1、C4、C2、C7、C3、C8、C9、C6、C5

拓扑序列2:C2、C9、C6、C1、C7、C4、C3、C5、C8

......


数据结构:图 数据结构:图;无向图和有向图;顶点的度;图的存储结构;图的邻接矩阵存储和邻接表存储;图的广度优先和深度优先搜索 阅读详情

相关推荐

C#上位机与MES系统数据对接:从协议选型到安全传输的实战解析

本文详细解析了C#上位机与MES系统数据对接的全过程,从协议选型到安全传输的实战技巧。针对工业互联网场景下的数据对接挑战,提供了RESTful API、MQTT和OPC UA等协议的选型建议,并分享了健壮性设计、异常处理和安全传输的实用代码示例,帮助开发者高效实现数据上传与系统集成。

weixin_30566063的博客 105

数据结构 --- c语言图的基础

本博客主要介绍图的基本概念、图的存储结构和有关图的一些常用算法 1) 图的定义和术语 2) 图的各种存储结构 3) 图的深度优先搜索(DFS)和广度优先搜索(BFS)遍历算法 图定义 图G由两个集合V和E组成,记为 G = ( V , E ) V是顶点的有穷非空集合,E是V中顶点偶对的有穷集, 这些顶点偶对称为边。通常V(G)和E(G)分别称为图的顶点集合和边集合注: E(G)可以为空集 图的数据结构的形式化定义 G = ( V , E ) .........

weixin_60569662的博客 3197

CXL ALMP(ARB/MUX Link Management Packet)理解

ALMP(ARB/MUX Link Management Packet) 是CXL协议中由ARB/MUX层生成和处理的专用管理报文,用于协调链路电源状态切换(如L0s/L1)和虚拟链路状态机(vLSM)同步。ALMP是ARB/MUX层的控制平面报文,专用于以下场景:协调多协议(CXL.io、CXL.cachemem等)的链路状态切换(如L1进入/退出)。维护各协议独立的虚拟链路状态机(vLSM) 状态同步。在物理层(PHY)与链路层(Link Layer)之间仲裁电源管理请求。

Summer的博客 1198

数据结构与算法----图

图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 对于图的定义,我们需要明确几个注意的地方: 一线性表中我们把数据元素叫元素,树中叫结点,在图中数据元素我们则称之为顶点(Vertex)。 一线性表可以没有数据元素,称为空表,树中可以没有结点,叫做空树,而图结构在咱国内大部分的教材中强调顶点集合V要有穷非空。 一线性表中,相邻的数据元素之间具有线性关系,树结构中,相邻两层的结点具有层次关.

weixin_47328424的博客 1147

GNSS气象学入门:从ZTD到PWV的水汽反演全流程解析(含精度评估)

本文详细解析了GNSS气象学中从ZTD到PWV的水汽反演全流程,包括基础概念、反演原理、数据处理步骤及精度评估方法。通过PRIDE软件和MATLAB代码示例,展示了如何高效提取ZTD数据并结合ERA5气象数据进行PWV计算,为气象研究和业务应用提供了实用指南。

weixin_28707365的博客 573

告别PS串口焦虑:深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口(从Vivado约束到驱动文件全解析)

本文深入解析AXI Uartlite IP核如何将ZYNQ PL任意引脚变成串口,从Vivado约束到驱动文件全解析。通过AXI Uartlite IP核,开发者可以突破PS端UART数量限制,实现高效串口通信。文章详细介绍了IP核架构、Vivado工程配置、驱动开发及调试技巧,帮助开发者快速掌握这一技术。

weixin_33736649的博客 468

无向图的深度优先遍历非递归_数据结构-图(图的基本实现C++)

​一、图的概念图是一种比较复杂的非线性数据结构图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。图区分有向图和无向图1、无向图(Undirected graphs)如果图中任意两个顶点之间的边都是无向边,则称该图为无向图。无向图相关概念:顶点、边图1-无向图2、有向图(Directed graphs...

weixin_39757743的博客 854

2023电视专用!安卓电子相册APP避坑指南(附开源代码)

本文针对2023年智能电视用户,提供安卓电子相册APP的避坑指南与实战教程。文章详细解析了电视端相册应用的常见广告与兼容性陷阱,并指导用户如何安全获取、部署纯净的APK应用,通过核心设置实现无广告的个性化图片轮播体验,最终打造专属的家庭回忆墙。

weixin_29012677的博客 495

G=(V,E)是什么意思

G=(V,E)是什么意思 G 图(graph) 顶点(vertex) V 边(edge) E 函数(γ) 为E到V的一个函数,有γ(e)={v1,v2},表示v1,v2顶点间的关系,γ通常表示线。即顶点间使用线(γ)来联系 参考:https://blog.youkuaiyun.com/qq_42662837/article/details/85018469 ......

weixin_45834664的博客 5501

文件上传漏洞攻击与防范方法

文件上传漏洞攻击与防范方法 文件上传漏洞简介: 文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。 文件上传漏洞危害: 上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传...

m0_38103658的博客 4万+

动力学约束下的运动规划算法——状态栅格规划器(State Lattice Planner)

A*、RRT等算法建立的用于路径搜索的图模型是不考虑机器人的动力学约束的,其构建的图模型的两个相邻节点之间的路径可能是不可行的,或者很难被机器人跟踪的,现在我们想要使得图中相邻两个节点间的连接是一种满足动力学约束的可行的连接,那么如何构建一个这样的图呢? 构建这样的图通常有两种方法:第一种是基于控制空间的采样(正向方法)

慕羽★的博客 3105

数据结构-图篇

图的思维导图+图的习题

qq_44663230的博客 2606

SAP 打印输出中 `#` 字符替代日文汉字的根本原因与全面解决方案

只要认清设备类型 / 字符集 / 字体三角关系,并合理利用PDFUCSWINCF或 UPE + URDT,LP01里那些恼人的就会彻底消失,日文汉字将在纸面与 PDF 中如预览一样完美呈现。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 816

数据结构——图

图——定义、分类、术语、常用表示方法、常用操作、代码(分别用邻接矩阵和邻接表两种方法实现)

qq_42106610的博客 5962

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

图的数据结构

图的表示(数组) 图的数据结构 /*** * 图 */ public class Graph { public HashMap<Integer,Node> nodes;//点 public HashSet<Edge> edges;//边 public Graph() { nodes = new HashMap<>(); edges = ne...

LaZY的博客 554

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据结构之图

图(Graph)G由顶点集合V(G)和边集合E(G)构成。

慢慢记录,慢慢更新。 1322

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构-图

一、图的定义与基本术语图(Graph)是一种非线性数据结构,由顶点(Vertex)和边(Edge)组成。:是图中的数据元素。:连接两个顶点的线,可以是有向的(表示两个顶点之间的关系有方向)或无向的(表示两个顶点之间的关系无方向)。:图中的边没有方向。:图中的边有方向。:每一对不同的顶点都有一条边相连。:相对于某一图来说,由部分顶点和边组成的图。:在无向图中,任意两个顶点都是连通的。:在有向图中,任意两个顶点之间都存在互相可达的路径。:无向图中的极大连通子图。:有向图中的极大强连通子图。

2302_80961196的博客 1177

【数据结构】图

💬 hello!各位铁子们大家好哇。今日更新了图的相关内容续上一篇《图和并查集》

qinjh_的博客 2951

【数据结构】图简介

前言一、图的概念二、图的术语三、图的表示1. 邻接矩阵2. 邻接表和逆邻接表3. 十字链表四、总结 一、图的概念 究竟什么是图呢?大家先来想一想咱们常用的互联网产品。 举个栗子,大家一定都用过微信,假设你的微信朋友圈中有若干好友:张三、李四、王五、赵六、七大姑、八大姨。 而你七大姑的微信号里,又有若干好友:你、八大姨、Jack、Rose。 微信中,许许多多的用户组成了一个多对多的朋友关系网,这...

码农印象 544

【数据结构】图和并查集

💬hello!各位铁子们大家好哇。今日更新了并查集和图的相关内容。

qinjh_的博客 3443

数据结构之---- 图

图由顶点和边组成,可以被表示为一组顶点和一组边构成的集合。相较于线性关系(链表)和分治关系(树),网络关系(图)具有更高的自由度,因而更为复杂。有向图的边具有方向性,连通图中的任意顶点均可达,有权图的每条边都包含权重变量。邻接矩阵利用矩阵来表示图,每一行(列)代表一个顶点,矩阵元素代表边,用 1 或 0 表示两个顶点之间有边或无边。邻接矩阵在增删查操作上效率很高,但空间占用较多。邻接表使用多个链表来表示图,第 𝑖 条链表对应顶点 𝑖 ,其中存储了该顶点的所有邻接顶点。

weixin_43285931的博客 1203

数据结构 - 图

在线性表中,数据元素之间是被串起来的,仅有线性关系,每一个数据元素只有一个直接前驱和一个直接后继。 在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关。但只能和上一层中一个元素相关。 图是一种更加复杂的数据结构,在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成的,通常表示为G(V,E),其中G表示一个图,V是图G中顶点的集合,E是图G中边的集合。对于这个定义,我们需要明确几个

qq_39294387的博客 316
上一篇: 【数据结构】——树、森林、哈夫曼树
下一篇: JavaScript
South.return
博客等级 码龄6年 1879粉丝 87原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

South.return

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值