【数据结构与算法】图的基本概念

文章目录

  • 图的基本概念
    • 定义
    • 常用术语
      • 有向图
      • 无向图
      • 简单图、多重图
      • 完全图(简单完全图)
      • 子图
      • 连通、连通图和连通分量
      • 强连通图、强连通分量
      • 边的权和网
      • 稠密图、稀疏图
      • 路径、路径长度和回路
      • 简单路径、简单回路
      • 距离
      • 有向树


图的基本概念

定义

图是一种非线性的逻辑结构。如果在某个结构中,任意两个元素之间都存在多对多的关系,那么我们就把这个结构称为

G G G 由顶点集 V V V 和 表示顶点之间联系的边集 E E E 组成,记为 G = ( V , E ) G=(V,E) G=(V,E),其中 V V V为有限非空集合。

由于人们习惯于将有关联的两个元素连接起来,因此,图结构又被称为网状结构

与线性表、树不同的是,线性表可以是空表,树可以是空树,但图不可以是空图。


常用术语

图的基本术语非常的多,我们逐一讲解。

有向图

在图 G = ( V , E ) G=(V,E) G=(V,E) 中,若 E E E 为有向边(也可以叫弧)的集合,那么我们图 G G G称为有向图。

有向边(弧)是顶点的有序对,记为 < v , w > <v,w> <v,w>,其中, v , w v,w v,w 是顶点, v v v称为弧尾, w w w称为弧头, < v , w > <v,w> <v,w> 称为从 v v v w w w 的弧,也叫 v v v 邻接到 w w w

例如:

1
2
3

表示为:

G = ( V , E ) G=(V,E) G=(V,E)

V = { 1 , 2 , 3 } V=\{1,2,3\} V={1,2,3}

E = { < 1 , 2 > , < 2 , 3 > < 2 , 1 > } E=\{<1,2>,<2,3><2,1>\} E={<1,2>,<2,3><2,1>}

无向图

在图 G = ( V , E ) G=(V,E) G=(V,E) 中,若 E E E 为无向边(简称边)的集合,那么我们图 G G G称为无向图。

边是顶点的有序对,记为 ( v , w ) (v,w) (v,w) ( w , v ) (w,v) (w,v)。可以说 v 和 w 互为邻接点,也可以说 v 和 w 互相关联

例如:

1
2
3
4

表示为:

G = ( V , E ) G=(V,E) G=(V,E)

V = { 1 , 2 , 3 , 4 } V=\{1,2,3,4\} V={1,2,3,4}

E = { ( 1 , 2 ) , ( 1 , 3 ) ( 1 , 4 ) , ( 2 , 3 ) ( 2 , 4 ) , ( 3 , 4 ) } E=\{(1,2),(1,3)(1,4),(2,3)(2,4),(3,4)\} E={(1,2),(1,3)(1,4),(2,3)(2,4),(3,4)}

简单图、多重图

图 G 若满足:

  1. 不存在重复边
  2. 不存在顶点到自身的边

则称图 G 为 简单图

反之,若图 G 满足:

  1. 存在重复边
  2. 存在顶点到自身的边

则称图 G G G多重图

由于多重图太过复杂,因此在无特殊标注的情况下,我们讨论的图均为简单图。

完全图(简单完全图)

对于存在n个顶点的无向图来说,E集合中边的个数的取值范围为 0 0 0 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2

我们把恰好拥有 n ( n − 1 ) / 2 n(n-1)/2 n(n1)/2 条边(即每两个顶点之间都存在一条边)的无向图称为无向完全图

例如

1
2
3
4

该图为无向完全图。


对于存在n个顶点的有向图来说,E集合中元素个数的取值范围为 0 0 0 n ( n − 1 ) n(n-1) n(n1)

我们把恰好拥有 n ( n − 1 ) n(n-1) n(n1) 条弧的有向图称为有向完全图

例如:

1
2

该图为有向完全图。

子图

设存在图 G 1 = ( V 1 , E 1 ) G_1=(V_1,E_1) G1=(V1,E1) G 2 = ( V 2 , E 2 ) G_2=(V_2,E_2) G2=(V2,E2),若 V 2 V_2 V2 V 1 V_1 V1 的子集,且 E 2 E_2 E2 E 1 E_1 E1 的子集,则称 G 2 G_2 G2 G 1 G_1 G1 的子图。

连通、连通图和连通分量

在无向图中,若存在从 v 到 w 的路径,则称 v 和 w 是连通的。

注意:这里说的是路径,并不是边。路径至少包含一条边。

若图G中任意两个顶点都是连通的,则称图G为连通图,否则称为非连通图

无向图中的极大连通子图称为连通分量

极大连通子图指,子图中任意两个顶点是连通的,且包含尽可能多的顶点和边。

例如:

图G有两个极大连通子图,G1、G2。

G2
G1
5
6
1
2
3
4

现在有一个子图 G3,G3 相较于 G1 少了 (1,4),没有包含尽可能多的边和顶点,因此不是极大连通子图。

G3
1
2
3
4

强连通图、强连通分量

在有向图中,对顶点 v,w ,若存在从v到w的路径,也存在从w到v的路径,那么称这两个顶点是强连通的。

若对任意的两个顶点 v,w都是强连通的,那么我们称这个有向图为强连通图

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

例如:

G2
G1
3
1
2

如果G1去掉一条有向边

1
2

显然,该图也是图G的子图,但是由于没有尽可能多地包含有向边,因此,该图不是连通分量。

### 顶点的度、入度和出度

无向图中,顶点v的度是指依附于顶点v的边的条数,记为 TD(v)。无向图中的顶点的度之和等于边数的两倍,因为每条边和两个顶点相关联。

例如:

1
2
3
4

该图中,任意一个顶点的度均为3,各顶点的度数之和=3*4=12,边数为6。

有向图中,顶点v的度分为入度和出度。入度以v为终点的有向边的个数,记为ID(v);出度是以v为起点的有向边的个数,记为OD(v)。顶点v的度TD(v) = ID(v) + OD(v)。有向图全部顶点的入度之和与出度之和相等,并且等于边数,因为每一条有向边都有一个起点和终点。

例如:

1
2
3
4

1的入度 = 0 出度 = 3

2的入度 = 1 出度 = 2

3的入度 = 2 出度 = 1

4的入度 = 3 出度 = 0

各个顶点的度数均为3. 入度之和 = 出度之和 = 边数。

边的权和网

在一个图中,每条边都可以标上具有某种特殊含义的数值,该数值称为该边的

边上带权的图称为带权图,也叫网。

稠密图、稀疏图

边数很少的图称为稀疏图,反之称为稠密图

一般情况下,当图 G 满足 ∣ E ∣ < ∣ V ∣ log ⁡ ∣ V ∣ |E|< |V|\log|V| E<VlogV时,可以将图 G视为稀疏图。

路径、路径长度和回路

路径是指从一个顶点到另一个顶点经过的顶点序列。

路径长度是指路径经过的顶点的个数。

第一个顶点和最后一个顶点相同的路径称为回路,也可称为

若一个图有n个顶点,且有大于n-1条边,则该图一定存在回路

简单路径、简单回路

在路径序列中,顶点不重复出现的路径称为简单路径

除第一个顶点和最后一个顶点外,其余顶点不重复出现的回路称为简单回路

距离

如果存在从v到w的路径,则称v到w的路径长度,为v到w的距离

若v到w不存在路径,则称v到w的距离为无穷。

有向树

一个顶点的入度为0,其余顶点的入度均为1的有向图,又叫有向树。


至此,全篇结束,感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/852568.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【收藏】Web 前端知识体系精简【文末福利!】赠2024Web 前端/安全工程师资料视频教程+源码+课件

目录 JAVASCRIPT 篇 0、基础语法 1、函数原型链 2、函数作用域 3、函数指针 this 4、构造函数 new 5、闭包 6、单线程和异步队列 7、异步通讯 Ajax技术 8、DOM对象 document 9、事件系统 Event 10、全局对象 window CSS 篇 1、选择器 2、定位 3、浮动 4、盒子…

人脸识别系统---人脸对比

一、人脸对比 1.定义全局变量来存储选择的图片路径和标签 save_image1 None save_image2 None image_label1 None image_label2 None2.定义了一个名为compare_faces的函数&#xff0c;用于比较两张图片中的人脸是否相似 def compare_faces():if save_image1 and save_im…

linux环境打包QML程序

第一次打包linux下的QML程序&#xff0c;一路磕磕绊绊&#xff0c;如果有更好的方式&#xff0c;欢迎留言。 1、使用release编译出可执行文件&#xff0c;这一步大家都知道吧&#xff1b; 2、将可执行文件放入新建文件夹project中&#xff0c;同时创建copylib.sh文件&#xf…

魔众文库系统v6.7.0版本用户注册登录优化,已知问题修复

2024-06-14 更新日志 用户注册登录优化&#xff0c;已知问题修复 [新功能] Hidden 组件支持序列化类型&#xff0c;避免入库异常 [新功能] 增加命令执行函数和数组多键值排序方法 [新功能] 后台安全提醒修改密码链接不存在问题 [新功能] 优化 Nav 组件&#xff0c;支持链式…

远程开发端口转发

应用推荐场景&#xff1a; 1.服务器跑后台&#xff0c;本地出前端应用。 比如Stable Diffusion的大模型打标应用。 2.Docker容器服务器。 对于本地服务想要转出去&#xff0c;跑出来前端。该项能克服虚拟机的端口与ip访问问题。 正文&#xff1a; 涉及的软件&#xff1a; …

电压kV为什么k要小写,原因你知道吗?

国际标准的计量单位一般用小写。仅在涉及以名字命名的单位&#xff0c;比如伏特V、安培A、开尔文K、瓦特W等&#xff0c;为了表示对科学家前辈的尊重&#xff0c;就用大写&#xff0c;其余的非以人名命名的单位一般用小写。这里解释了为何V是大写。 其次&#xff0c;对于量词&…

二级造价师精选基础知识题库(含答案)

一.单项选择题: 1.大中型建设工程项目立项批准后&#xff0c;在工程开工前&#xff0c;应当由( )按照有关规定申请领取施工许可证。A.建设单位 B.施工单位 C.总承包单位 D.监理单位 2.建设单位申领建筑工程施工许可证后&#xff0c;既不开工又不申请延期或者超过延期时限的&a…

YOLOv10改进|采用ADown降采样模块有效融合

📚 专栏地址:《YOLOv10算法改进实战》 👉 独家改进,对现有YOLOv10进行二次创新,提升检测精度,适合科研创新度十足,强烈推荐 🌟 统一使用 YOLOv10 代码框架,结合不同模块来构建不同的YOLO目标检测模型。 💥 本博客包含大量的改进方式,降低改进难度,改进点包含【B…

14,15-EET/DHET Hypertension ELISA Kit--Detroit RD

用于14,15-EET/DHET测量的DH2与用于14,15-DHET测量的DH1相同。与DH2相比&#xff0c;与DH1的唯一区别是样品制备步骤&#xff08;而不是Elisa试剂盒&#xff09;&#xff0c;其中EET被化学改为DHET。 货号&#xff1a;DH2 名称&#xff1a;14,15-EET/DHET Hypertension ELISA…

C#——值类型和引用类型的区别详情

值类型和引用类型的区别 值类型 值类型&#xff1a; 常用的基本数据类型都是值类型&#xff1a;bool 、char、int、 double、 float、long 、 byte 、ulong、uint、枚举类型、 结构体类型等特点: 在赋值的过程当中&#xff0c;把值的本身赋值给另一个变量&#xff0c;再修改…

使用 PNPM 从零搭建 Monorepo,测试组件并发布

1 目标 通过 PNPM 创建一个 monorepo&#xff08;多个项目在一个代码仓库&#xff09;项目&#xff0c;形成一个通用的仓库模板。 这里以在该 monorepo 项目中搭建 web components 类型的组件库为例&#xff0c;介绍从仓库搭建、组件测试到组件发布的整个流程。 这个仓库既可…

gpt、llama大模型模型结构细节探索

参考&#xff1a; https://github.com/naklecha/llama3-from-scratch&#xff08;一定要看看&#xff09; https://github.com/karpathy/build-nanogpt/blob/master/play.ipynb 视频&#xff1a; https://www.youtube.com/watch?vl8pRSuU81PU https://tiktokenizer.vercel…

SiLM59xx系列SiLM5932SHOCG-DG 一款支持主动短路保护功能(ASC)单通道隔离驱动器

SiLM59xx系列SiLM5932SHOCG-DG是一款单通道隔离驱动器&#xff0c;提供12A源电流和12A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 4A 米勒钳位。输入侧电源的工作电压为3V至5.5V&#xff0c;输出侧电源的工作电压范围为13V至30V。所有电源电压引脚都有欠压…

Java面向对象之static关键字,可变参数,递归,数组常见算法,对象数组,方法参数

第一章.static关键字 1.static的介绍以及基本使用 1.概述:static是一个静态关键字 2.使用:a.修饰一个成员变量:static 数据类型 变量名b.修饰一个方法:修饰符 static 返回值类型 方法名(形参){方法体return 结果}3.调用静态成员:类名直接调用(不用new对象)4.静态成员特点:a.静…

go grpc安装protobuf

1. https://github.com/protocolbuffers/protobuf/releases -> assets 下载 protoc-27.1-win64.zip window*64位 找个位置解压&#xff0c; 并将解压文件的bin目录复制加入环境变量&#xff0c;cmd输入protoc查看安装是否成功 https://github.com/protocolbuffe…

后端返回前端时间格式化

时间格式化的方法总共包含以下 5 种。 1.前端时间格式化 JS 版时间格式化 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 function dateFormat(fmt, date) { let ret; const opt { "Y": date.getFullYear().toString(), // 年 …

Python学习从0开始——Kaggle深度学习002

Python学习从0开始——Kaggle深度学习002 一、单个神经元1.深度学习2.线性单元示例 - 线性单元作为模型多个输入 3.Keras中的线性单元 二、深度神经网络1.层多种类型的层 2.激活函数3.堆叠密集层4.构建Sequential模型 三、随机梯度下降1.介绍2.损失函数3.梯度下降法1.梯度下降法…

掌握.gitignore与标签(Tag)的高效使用

前言 在软件开发过程中&#xff0c;版本控制是不可或缺的一环&#xff0c;而Git作为当前最流行的分布式版本控制系统&#xff0c;以其高效、灵活的特点被广泛应用于项目管理中。本文将深入探讨Git中的两个重要概念&#xff1a;.gitignore文件和标签&#xff08;Tag&#xff09…

计算机组成原理历年考研真题对应知识点(计算机的性能指标)

目录 1.3计算机的性能指标 1.3.1计算机的主要性能指标 【命题追踪——与机器字长位数相同的部件(2020、2021)】 【命题追踪——提高系统性能的综合措施(2010)】 【命题追踪——时钟脉冲信号和时钟周期的相关概念(2019)】 【命题追踪——主频和时钟周期的转换计算(2013)】 …

FL Studio(FL 21)软件下载-详细安装教程视频

​fl studio 编曲软件即,简称FL,是音乐人熟知的水果编曲软件.可以完成完整的音乐制作环境或数字音频工作站(DAW)就是大家熟悉的水果 编曲软件&#xff0c;一个全能的音乐制作软件&#xff0c;包括编曲、录音、剪辑和混音等诸多功能&#xff0c;让你的电脑编程一个全能的录音室。…