数据结构 - 图

参考链接:数据结构:图(Graph)【详解】_图数据结构-CSDN博客

 

图的定义

图(Graph)是由顶点的有穷非空集合 V ( G ) 和顶点之间边的集合 E ( G ) 组成,通常表示为: G = ( V , E ) ,其中, G 表示个图, V 是图 G 中顶点的集合, E是图 G 中边的集合。 V={v1​,v2​,...,vn​},则用∣V∣表示图 G 中顶点的个数,也称图 G的阶,E={(u,v)∣u∈V,v∈V},用 ∣E∣表示图 G中边的条数。

图不可以是空图,就是说不能一个顶点没有。图的顶点集V一定非空,边集可以为空,次是图中只有顶点没有边

图的基本概念和术语

有向图

若E是有向边(也称弧)的有限集合时,则图G为有向图。弧是顶点的有序对,记为<v, w>,其中v,w是顶点,v称为弧尾,w称为弧头(被指向的称为头),<v,w>称为从顶点v到顶点w的弧,也称v邻接到w,或w邻接自v。

无向图

若E是无向边(简称边)的有限集合时,则图G为无向图。边是顶点的无序对,记为(v, w)或(w,v),因为(v,w)=(w,v), 其中v,w是顶点。可以说顶点w和顶点v互为邻接点。边(v, w)依附于顶点w和v,或者说边(v, w)和顶点v, w相关联。

简单图

一个图满足 1.不存在重复边 2,不存在顶点到自身的边 则称为简单图

完全图(也称简单完全图)

对于无向图,∣E∣的取值范围是 0 到n(n−1)/2,有n(n−1)/2条边的无向图称为完全图,在完全图中任意两个顶点之间都存在边。对于有向图,∣E∣的取值范围是0到n(n−1), n(n−1)条弧的有向图称为有向完全图,在有向完全图中任意两个顶点之间都存在方向相反的两条弧。G2​为无向完全图,而 G3​为有向完全图。

子图

设有两个图 G=(V,E)和G′=(V′,E′), 若 V′是  V的子集,且E′是E的子集,则称 G′是 G 的子图。若有满足V(G′)=V(G)的子图G′,则称其为G的生成子图

注意:并非V和E的任何子集都能构成G的子图,因为这样的子集可能不是图,即E的子集中的某些边关联的顶点可能并不在V的子集中

连通,连通图和连通分量

在无向图中,若从顶点V到顶点w有路径存在,则称v和w是连通的。若图中G中任意两个顶点是连通的,则称图G是连通图,否则称为非连通图。无向图中的极大连通子图称为连通分量。若一个图有 n 个顶点,并且边数小于 n - 1,则此图必是非连通图

注意:弄清连通、连通图、连通分量的概念非常重要。首先要区分极大连通子图和极小连通子图,极大连通子图是无向图的连通分量,极大即要求该连通子图包含其所有的边;极小连通子图是既要保持图连通又要使得边数最少的子图。

强连通图 ,强连通分量

在有向图中,若从顶点 v 到顶点 w 和从顶点 w 到顶点 v 之间都有路径,则称这两个顶点是强连通的。若入中任何一对顶点都是强连通的,则称此图为强连通图。有向图中的极大强连通子图称为有向图的强连通分量

强连通分量 -- >

注意:强连通图、强连通分量只是针对有向图而言的。一般在无向图中讨论连通性,在有向图中考虑强连通性。

生成树,生成森林

连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为 n,则它的生成树含有n−1条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路。在非连通图中,连通分量的生成树构成了非连通图的生成森林。图G2​的一个生成树如下图所示。

注意:包含无向图中全部顶点的极小连通子图,只有生成树满足条件,因为砍去生成树的任一条边,图将不再连通。

顶点的入度和出度

图中每个顶点的度定义为以该点为一个端点的边的数目

对于无向边,全部顶点的度的和等于边数的 2 倍,因为每条边和两个顶点相关联

对于有向图,顶点 v 的度分为 入度 和 出度 ,入度是以顶点 v 为终点的度,出度是以这个顶点为起点的度。在有向图中全部顶点入度和出度的和等于边数

边的权和网

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

稠密图,稀疏图

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

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

相关文章

QT中的文件操作QFile、QDataStream、QTextStream、QBuffer

文件操作概述 1、Qt中IO操作的处理方式 &#xff08;1&#xff09;、Qt通过统一的接口简化了文件与外部设备的操作方式 &#xff08;2&#xff09;、Qt中的文件被看做是一种特殊的外部设备 &#xff08;3&#xff09;、Qt中的文件操作与外部设备操作相同 2、IO操作中的关键…

设计模式9--单例模式

定义 案例一 案例二 优缺点

新网站秒收录技术,新网站百度收录时间

在建立新网站后&#xff0c;让它尽快被搜索引擎收录是网站主最为关注的事情之一。百度作为中国最大的搜索引擎&#xff0c;网站被其快速收录对于增加曝光和流量至关重要。本文将介绍一些新网站秒收录技术&#xff0c;以及一般情况下新网站被百度收录需要的时间。 新网站秒收录技…

酷柚易讯无人空间小程序注册后需开通的部分接口权限

注意&#xff1a;无人共享小程序注册认证与备案后&#xff0c;需要开通以下接口系统才能正常使用&#xff01; 登录小程序后&#xff0c;找到开发管理->接口设置&#xff08;申请对应的接口权限&#xff09;

【vue】一个小bug和key的引入

点击master Vue!删除后该list后输入框中的Jerry消失了 原因&#xff1a;vue当你更改元素时会在真实的dom中渲染并更新list。这两个goal是两个dom元素,触发点击事件后,vue并不会删除第一个dom元素,而是把第二个dom元素的动态内容({{ goal }} - {{ index }})复制到第一个dom元素…

B096-docker版jenkins环境搭建

目录 Jenkins持续集成工具的介绍Jenkins安装过程案例 tips&#xff1a;ssm项目需要放到tomcat中运行&#xff0c;springboot项目不需要&#xff0c;内置有tomcat&#xff0c;可直接命令行运行 Jenkins持续集成工具的介绍 Jenkins安装过程 docker版Jenkins需要先安装docker环境…

Redis实战篇-利用逻辑过期解决缓存击穿问题

实战篇Redis 3.0 、利用逻辑过期解决缓存击穿问题 需求&#xff1a;修改根据id查询商铺的业务&#xff0c;基于逻辑过期方式来解决缓存击穿问题 思路分析&#xff1a;当用户开始查询redis时&#xff0c;判断是否命中&#xff0c;如果没有命中则直接返回空数据&#xff0c;不…

深度学习pytorch——经典卷积网络之ResNet(持续更新)

错误率前五的神经网络&#xff08;图-1&#xff09;&#xff1a; 图-1 可以很直观的看到&#xff0c;随着层数的增加Error也在逐渐降低&#xff0c;因此深度是非常重要的&#xff0c;但是学习更好的网络模型和堆叠层数一样简单吗&#xff1f;通过实现表明&#xff08;图-2&…

嵌入式硬件中常见的面试问题与实现

1 01 请列举您知道的电阻、电容、电感品牌(最好包括国内、国外品牌) ▶电阻 美国:AVX、VISHAY威世 日本:KOA兴亚、Kyocera京瓷、muRata村田、Panasonic松下、ROHM罗姆、susumu、TDK 台湾:LIZ丽智、PHYCOM飞元、RALEC旺诠、ROYALOHM厚生、SUPEROHM美隆、TA-I大毅、TMT…

使用Node.js常用命令提高开发效率

Node.js是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;广泛用于构建服务器端应用程序和命令行工具。Node.js提供了丰富的命令和工具&#xff0c;可以帮助开发者更高效地开发应用程序。在日常开发中&#xff0c;除了Node.js本身的核心功能外&#xff0c;npm&#x…

IPv6-重定向,PMTU,GRE隧道

IPv6-重定向&#xff0c;PMTU&#xff08;路径最大传输单元&#xff09;&#xff0c;GRE隧道&#xff08;Generic Routing Encapsulation&#xff0c;通用路由封装协议&#xff09; 重定向过程 触发重定向的条件&#xff1a; 1、报文的入接口&#xff0c;等于自身路由之后的…

设计模式12--组合模式

定义 案例一 案例二 优缺点

websocket 局域网 webrtc 一对一 视频通话的实例

基本介绍 使用websocket来 WebRTC 建立连接时的 数据的传递和交换。 WebRTC 建立连接时&#xff0c;通常需要按照以下顺序执行一些步骤&#xff1a; 1.创建本地 PeerConnection 对象&#xff1a;使用 RTCPeerConnection 构造函数创建本地的 PeerConnection 对象&#xff0c;该…

pytest--python的一种测试框架--pytest初阶

前言 使用pytest去做测试时我们对文件名的命名其实是有规范的&#xff0c;要用test_开头&#xff01;&#xff01;&#xff01; 一、pytest初阶 def test_one():expect1actual1assert expectactual#测试专用语句&#xff1a;assert&#xff0c;识别期望与实际值是否相等这个…

EXCEL 通过FILES函数获取指定路径中的所有文件名

FILES函数 用途 获取指定文件路径中的所有文件名。 语法 FILES(“路径\*.*”)指定从哪个路径下返回一个文件名。 *.*是通配符&#xff0c;代表所有类型的文件&#xff0c;第一个*是文件名的通配符&#xff0c;第二个* 是文件的后缀名&#xff0c;表示文件类型&#xff0c;如…

最新Java面试题1【2024中级】

互联网大厂面试题 1&#xff1a;阿里巴巴Java面试题 2&#xff1a;阿里云Java面试题-实习生岗 3&#xff1a;腾讯Java面试题-高级 4&#xff1a;字节跳动Java面试题 5&#xff1a;字节跳动Java面试题-大数据方向 6&#xff1a;百度Java面试题 7&#xff1a;蚂蚁金服Java…

swift中的autoreleasepool(自动释放池)有用么?

想到一个问题 swift中的autoreleasepool(自动释放池)有用么? 我们进行验证一下 首先我们写一个加载图片的方法,保证会真正用到真实的IMP内存func loadBigData(string: String?) {if let path Bundle.main.path(forResource: "big", ofType: "png") {for…

百度资源平台链接提交

百度资源平台是百度搜索引擎提供的一个重要工具&#xff0c;用于帮助网站主将自己的网站链接提交给百度搜索引擎&#xff0c;以便更快地被收录和展示在搜索结果中。以下将就百度资源平台链接提交的概念、操作方法以及其对网站收录和曝光的影响进行探讨&#xff1a; 什么是百度资…

【GPT5进展】GPT-5将于今年年中发布

OpenAI即将发布的GPT-5代表了人工智能技术的一个重大进步&#xff0c;这一新一代模型预计将进一步扩大OpenAI在AI应用领域的影响力。以下是关于GPT-5的几个关键点&#xff0c;旨在清晰、简洁地向读者传达这一重要更新&#xff1a; 1. 性能和功能的实质性提升 GPT-5在性能上做…

ssm008医院门诊挂号系统+jsp

医院门诊挂号系统 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;医院门诊挂号系统当然也不能排除在外。医院门诊挂号系统是以实际运用为开发背景&#xff0c;运用软件…