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

序言
1对1的线性结构,一对多的树二叉树以及森林,第3种就是多对多的结构,也就是我们所要讲到的图的结构,图形结构是数据结构当中最复杂的一种结构,图形结构的特点就是在这个图当中任意两点之间都会有关系,这里的关系指的是可能会有关系,因为不是一对多也不是1对1,所以没有办法区分层次和顺序了,图上的顶点与顶点之间,我们可以认作是平等的,那我们如何去描述图形结构?
在这里我们会提到两个概念,一个是顶点集,一个是弧集,在这里要区分弧跟边儿的概念,
对于前面1对1和一对多的关系,我们是可以用数据来进行描述它们之间的关系的,也很方便找到他们的前驱和后继,1对1或者是一对多的关系,他们之间的数据与数据之间都有一定的关系,找到某一个数据之后,另外的数据就可以根据前一个数据进行推导出来,和我们现在所提到的图的结构是有区别的,图的结构在描述数据与数据之间的关系时,所采用的描述方式包括了边儿,边儿的方向决定了数据与数据之间存在怎样的关系,那为什么说描述不了图形之间的关系?因为图形当中点和点之间的关系是不确定的,他们没有一个确定的关系,并不像树形结构一样,可以看作是一个家族家族之间存在血缘关系,但是对于图来说点和点之间是没有血缘关系的,
【1】根据图形结构,我们能够想到哪些个东西?
图形结构就是把没有关系的点和点之间通过一些个辅助条件转化成为一种有关系的结构,只有当辅助条件相当多的时候,我们才能够描述出图形之间点和点之间各种数据关系
【2】图的概念?
图是有一个顶点及V和一个弧集R构成的数据结构
在这里插入图片描述弧描述了点与点之间的关系,是一条有效线段,起点为弧尾,终点为弧头
有向图在这里插入图片描述此时a和b之间的关系是不相等的,是对于有象图来说的,因为有象图包含弧,也就是包含一条有向线段
无向图
先提出的弧的概念,有弧推广得到的边的概念,若一根弧正向属于弧,反过来也属于弧,那么我们就概括为边的概念
【1】相等:如果两个点之间存在边,那么我们就认为这两个点之间的关系是平级的在这里插入图片描述
相关术语在这里插入图片描述在这里插入图片描述
nlogn是我们人为规定的,我们根据需要来进行规定,拿些我们可以认为是稀疏图,哪些我们认为是稠密的图都是我们自己决定的在这里插入图片描述我们注意:关联是三者之间的一种关系,而不是点与点之间的一种关系,要包括他们之间的边
我们在讲哈弗曼树的时候提到过路径的概念,在这里插入图片描述简单回路是由简单路径组成的,不能出现重复的点----简单回路是在简单路径中提出来的,具有基础性质在这里插入图片描述判断联通图的方法?
点与点之间是有一条或多条边连接在一起的,不能够单独拆开,如果拆开了,那就是联通分量
对于有向图来说,若任意两个顶点之间都存在一条有向路径,那么称此有向图为强连通图简单的来说就是有出度和入度

图的生成树

先说一种思想:
复杂的东西我们要往简单的方向考虑,这样我们的编码生活才会更加的简单-----复杂的东西简单化但是我们解决复杂的东西我们要找到对应的关系,就像是我们想要马拉松比赛,那么我们可以找到每一段对应的终点,将复杂的问题简单化
生成树是什么?
首先我们要知道生成树是原图的一个子图,此图的特性是包含原图的所有顶点,以及其中的n-1条边,这n-1条边是从原来的一条边开始进行寻找,通过n-1条边能够将原来的所有顶点连接到一起,形成一个连通子图,所谓的联通就是没有孤立的点
问题:用到哪些特性了?
如果我们将n个顶点用n-1条边连接起来,要把它作为联通的图,就一定不会出现回路,基本可以肯定的是他是一个树形结构,不会存在圈儿,到每一个点有唯一一条线与它连接,因此引出了树形结构,我们的树形结构从下向上看,除了根节点,每一个顶点都有唯一一个指针指向他,我们试想一下,我们有5个点,如果我们用4条边将5个点连接在一起,那么就不会出现回路的情况,三角形是有三个顶点,三条边,正方形是有4个顶点,4条边,当边与顶点的数值相同的时候才会出现回路,
联通图才可以得到生成树,
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

图的存储表示

我们知道存储结构有两大类,一类是顺序结构,一类是链式结构,但是对于简单的顺序结构以及链式结构是不能够满足图的存储使用的,需要在此基础上做出一些改变,在这里插入图片描述图的邻接矩阵表示在这里插入图片描述总结以下特点:
【1】:对于无向图来说,邻接矩阵就是对称的,因为我们的线段是从两个方向同时指出来的,那么我们就需要记录两个1,因此我们应该想到的是前面提到的三角矩阵
计算
有向图的邻接矩阵不一定是对称矩阵在这里插入图片描述我们如何计算顶点的出度以及入度?
首先我们应该找到节点所在的行,行上面的1代表的就是出度,列代表的是入度,总的度我们用出度加上入度来进行表示就可以了
图上的矩阵数据表示的是边或者弧,而不是表示的节点问题,因此我们在进行结点的删除以及添加的时候,我们还是不方便的,原因是我们使用的是线性结构,而不是链式结构,因此下面我们将要介绍的就是链式结构在这里插入图片描述有向图是分为两种的,一种是正向的,后面的连接是从小到大的,另外一种是反向的,对应的链接表时从大到小进行连接的在这里插入图片描述

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

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

相关文章

图的遍历算法【数据结构F】

图的遍历算法有哪两种? 深度优先调度算法---------将图结构看成是树形结构,树形结构的子图直接是没有交叉的,但是对于图结构的树形结构之间是有交叉的,类比于树形结构的二叉树,左指数和右指数都会相应的经历三次&#…

最小生成树【数据结构】

前提 【1】网的最小生成树,涉及到生成树了那么就会有最小的权值在里面了 【2】对于一个图来说生成树是由多个的,并不是唯一的 【3】:广度优先算法的遍历是可以得到生成树的,深度优先算法也是可以得到生成树的 任意的一个联通网&am…

广义表的基本概念【数据结构】

实名广义表与匿名广义表的区别:对于匿名的广义表的表示方法我们认为一对括号就是一个广义表,里面的数据可以是广义表也可以是 原子,对于有名字的广义表,也就是大写的字母我们可以直接认为大写的就是广义表的表示方法小练习----广义…

树和二叉树【数据结构】

基本概念 ADT的定义 基本操作 对比树形结构和线性结构 基本术语以及注意事项-不能错误简单的我以为 二叉树是度数小于等于2的树,而不是度为2的树,一定要记住这个概念 小知识:二进制转换成为十进制的方法名称叫做位权求和法,用到…

数据库2.1.1mysql的特点

在mysql5.1当中,mysqlab公司引入了新的插件式存储引擎体系结构,也许将存储引擎加载到正在运行的mysql服务器当中,使用mysql插件是存储引擎体系结构允许数据库用户为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用…

MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇

一 MyISAM 1.1 MyISAM简介 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的 ISAM (Indexed Sequential Access Method:有索引的顺序访问方法)所改良。虽然性能极佳,而且提供了大量的特性&a…

互联网30年,泡沫如梦

人人都说互联网改变世界,这话没错。 但我认为互联网改变的方式,是泡沫。 资金,资源,人才因为一堆概念聚在一起,形成一个又一个的泡沫,然后泡沫破裂,大部分人失败,少数能够留下来的&a…

cpp知识汇总(1) 指针vs引用、static、const

引用和指针的区别? 指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。(…

《三天给你聊清楚redis》第1天先唠唠redis是个啥(18629字)

后端需要知道的关于redis的事,基本都在这里了。 此文后续会改为粉丝可见,所以喜欢的请提前关注。 你的点赞和评论是我创作的最大动力,谢谢。 1、入门 Redis是一款基于键值对的NoSQL数据库,它的值支持多种数据结构:…

使用github+jsdelivr作为视频床

感谢JefferyIF大佬提供的神奇方法。 1. 配置FFmpeg 注:IOS因为不支持HLS,所以对IOS上无法正常播放视频,其他端都可以正常播放。 因为脚本要使用到FFmeg对源视频文件切分成m3u8格式,所以在使用脚本之前,请配置好 FFm…

使用PicGo+github+jsdelivr作为图床

1.什么是图床? 所谓图床工具,就是自动把本地图片转换成链接的一款工具,网络上有很多图床工具,就目前使用种类而言,PicGo 算得上一款比较优秀的图床工具。它是一款用 Electron-vue 开发的软件,可以支持微博…

万字干货:教新手从0到1搭建完整的增长数据体系

在实际的业务中,大多数人可能只会遇到以下一种或几种常见的场景,并且对于各个细分场景,所需要解决的问题和关注重点都是不一样的。 场景一:你刚加入一个成熟产品的用户增长部门,会发现业务当前有非常全面详实的用户和业…

《三天给你聊清楚redis》第2天看看redis怎么被搞出来的(22036字)

后端需要知道的关于redis的事,基本都在这里了。 此文后续会改为粉丝可见,所以喜欢的请提前关注。 你的点赞和评论是我创作的最大动力,谢谢。 3、单机实现 3.1、数据库概述 redis服务器将所有数据库都保存在redis/redisServer中&#xff…

leetcode559. N叉树的最大深度

给定一个 N 叉树,找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 例如,给定一个 3叉树 : 我们应返回其最大深度,3。 说明: 树的深度不会超过 1000。 树的节点总不会超过 5000。 思路见代码 /* // De…

SpringMVC+Spring3.2+Hibernate4整合实例

近日抽时间学习了一下SpringMVC,总体感觉还不错,相对于Struts2来说,感觉SpringMVC更加的灵活,由于现在很多公司都在用SpringMVC,所以也学习一下,希望接下来的项目可以使用,闲话不说了&#xff0…

《剑指offer》全解(图文结合,通俗易懂,一篇看爽)

3. 数组中重复的数字 题目链接 牛客网 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 Input: {2, 3, 1, 0…

《不改变的CSDN,没有未来》,前50的专家实名发文

三十年河东,三十年河西,这句话在互联网战场上,应该改为十年。很多上个时代的王,掉队了。 CSDN的历史和中国互联网产品的发展历史有一点像,更确切的说,是和某些互联网企业更像。历史歪歪斜斜的写着几个字&am…

Redis 多线程网络模型全面揭秘

导语 一文带你完全吃透 Redis 整个核心网络模型的原理和源码。 目录 导言 Redis 有多快? Redis 为什么快? Redis 为何选择单线程? 避免过多的上下文切换开销 避免同步机制的开销 简单可维护 Redis 真的是单线程? 单线程事…

leetcode867. 转置矩阵

给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]] 示…

正则表达式必知必会

一、概述 正则表达式用于文本内容的查找和替换。 正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。 正则表达式在线工具 二、匹配单个字符 . 可以用来匹配任何的单个字符,但是在绝大多数实现里面,不能匹配换行符&a…