数据结构——图的定义和实现
这里写目录标题
- 图的定义
- 各种图的定义
- 无向边
- 有向边
- 图的顶点与边的关系
- 连通图生成树
- 图的各种实现
在引入邻接矩阵之前先介绍一下图的相关概念(概念比前树啥的面稍微复杂一点)
图的定义
之前学了线性表、串、树,他们都是1对1、或1对多的关系——适用于父母to孩子
但除此之外 生活中有着网状结构 即 朋友对朋友,它们之间是多对多的关系
这样就引出了图
用G(V,E) 表示
G 表示一个图
V表示顶点的集合(用来存储数据)
E表示边(路径)的集合。边可以有方向 也可以没有方向 其还可以带有权值
各种图的定义
无向边
顾名思义 是指两个顶点之间的没有方向的边(Edge)
用**无序偶对(V1,V2)**表示具体的边
一个图的边全是无向边 称为无向图
如上图 图 G1=(V,{E}) 顶点V的集合为V={V0,V1,V2,V3}
边的集合E={(V0,V1),(V0,V2),(V0,V3),(V1,V2),(V3,V2)}
有向边
有向图边用**有序偶对<V1,V2>**表示 V1表示弧尾 V2表示弧头
有向图 G2=(V,{E}) 表示
顶点V的集合为V={V1,V2,V3,V4}
弧的集合 E={<V1,V2>,<V1,V4>,<V2,V3>,<V3,V4>}
有向图和无向图表示区别之处在于边 弧 还有括号表示
————
如果图里 没有边的重复 和走向本身的边 那么都是简单图
下图就指向了自己 是自循环
在无向图中任意两个顶点的边都存在 称为无向完全图
在有向图中,任意两个顶点 都存在方向相反的两条弧 称为有向完全图
有很少的边或弧称为稀疏图,反之称为稠密图
边上或弧上可带有权值 weight 带了权值的图就称为网
当然 一个大图还有子图 (相当于集合的意思) 只要图存在 必定有子图 一个顶点也可以是子图
图的顶点与边的关系
1.对于无向图来说 如果两个顶点之间存在边那么对于这两个顶点来说互称为称为邻接顶点,二者的边则依附在这两个顶点上
顶点的度是指某顶点其边的数目
对于无向图来说 顶点的度数之和 为 边数的两倍
因为边没有方向 每次都算了两次。
对于有向图来说 弧<V1,V2>存在 那么顶点V1邻接到顶点V2
顶点V2接自顶点V1
一个顶点的度分为 出度和入度 顾名思义咯
度=出度+入度
整体来说 出度=入度
3.路径的长度就是一个顶点到另外一个顶点要走的边数(弧)数量
第一个顶点到最后一个顶点相同的路径称为回路或环路
两个顶点之间的路径,其中间任一顶点不重复出现,称为简单回路或简单环
4.在无向图中,如果任意顶点V1到另外一个顶点V2之间有路径,则称连通图
无向图中的极大连通子图称为无向图的连通分量
5.在有向图中任意一对顶点都存在路径 则称为 强连通图
有向图中的极大强连通子图称为有向图的连通分量
连通图生成树
连通图的生成树是一个极小的连通子树,它含有图中全部n个顶点,但只有足以构成一颗树的n-1条边。
对于有向图来说 恰有一个顶点的入度为0,其他顶点入度均为1 则是一颗有向树
图的各种实现
数据结构——图的邻接矩阵实现
数据结构——图的邻接表实现
数据结构——图的十字链表实现
数据结构——图的邻接多重表实现
数据结构——邻接矩阵的深度优先遍历(DFS)和广度优先遍历(BFS)的理解和实现
数据结构——图的最小生成树和最大生成树之Prim算法理解和实现
数据结构——图的最小生成树和最大生成树之Kruskal算法理解和实现
数据结构——图的最短路径之迪杰斯特拉Dijkstra算法的理解和实现
数据结构——图的最短路径之弗洛伊德FLOYD算法的理解和实现
数据结构——拓扑排序算法理解和实现
数据结构——关键路径AOV(图)
数据结构——图的定义和实现相关推荐
- 数据结构 图的定义
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 图的定义 ...
- 图的定义与术语 - 数据结构和算法54
图的定义与术语 让编程改变世界 Change the world by program 在前边讲解的线性表中,每个元素之间只有一个直接前驱和一个直接后继,在树形结构中,数据元素之间是层次关系,并且 ...
- 【数据结构笔记20】图的定义,图的表示:邻接矩阵与邻接表
本次笔记内容: 6.1.1 什么是图 - 定义 6.1.2 什么是图 - 邻接矩阵表示法 6.1.3 什么是图 - 邻接表表示法 文章目录 图的定义 线性表与树可看做图的特殊实例 图包含 抽象数据类型 ...
- 数据结构-图(图的定义、分类、基本术语和存储结构)
图 图(Graph)是由莱昂哈德·欧拉1在1736年首先引进的一类很重要的非线性结构,可称为图形结构或网状结构.图的应用领域非常广泛,例如:电路分析.工程规划.化合物分类.统计力学.自动化.语言学等. ...
- 图(1)——图的定义和基本概念
2019独角兽企业重金招聘Python工程师标准>>> 概述 图(Graph)是一种比线性表和树更为复杂的数据结构. 线性结构:是研究数据元素之间的一对一关系.在这种结构中,除第一个 ...
- 图的定义存储和遍历(一级)
图:是一种多对多的关系,图这一块我们不进行过多的说明我们这里又一个高德地图搜索路径的截图,我们要搜索起点北京大学的总校区,重点是清华大学,我现在选择的是驾车而不是公交,如果是公交可能有其他的路径,如果 ...
- 数据结构--图(Graph)详解(四)
数据结构–图(Graph)详解(四) 文章目录 数据结构--图(Graph)详解(四) 一.图中几个NB的算法 1.普里姆算法(Prim算法)求最小生成树 2.克鲁斯卡尔算法(Kruskal算法)求最 ...
- 数据结构--图(Graph)详解(三)
数据结构–图(Graph)详解(三) 文章目录 数据结构--图(Graph)详解(三) 一.深度优先生成树和广度优先生成树 1.铺垫 2.非连通图的生成森林 3.深度优先生成森林 4.广度优先生成森林 ...
- 数据结构--图(Graph)详解(二)
数据结构–图(Graph)详解(二) 文章目录 数据结构--图(Graph)详解(二) 一.图的存储结构 1.图的顺序存储法 2.图的邻接表存储法 3.图的十字链表存储法 4.图的邻接多重表存储法 二 ...
最新文章
- linux下find命令的使用和总结
- java单元测试总结
- Log4cpp 使用手册
- IDEA MySql之增删改查
- 转:DotNET企业架构应用实践-架构师成长之路-如何成为优秀架构师
- windows server 2008 DC 活动目录备份还原
- 面试官:你背了几道面试题就敢说熟悉Java源码?对不起,我们不招连源码都不会看的人
- JAVA-幂等性(一):http幂等性
- linux 大黄蜂怎么安装视频教程,使用神舟K680E-G6D1在Deepin Linux系统下安装大黄蜂驱动的方法...
- win10默认壁纸_win10主题软件哪个好用 win10主题软件排行
- Verilog HDL实现智能药盒
- MyBatis注册映射文件(resource、class、package 三者区别)
- 实际BCI应用:异步EEG/EOG BCI手抓取和释放的可行性
- vsftp创建虚拟账户
- Openerp部分学习资料
- oracle数据投毒,Oracle Database Server 'TNS Listener'远程数据投毒漏洞
- Tableau仪表板制作
- 微信小程序设置页面全局背景色
- 食品巨头布勒宣布部署区块链以对抗沙门氏菌和大肠杆菌
- c语言求最大公约数(辗转相除法)