数据结构(c语言 第二版 严蔚敏)第六章 图 期末速成版

图的基本概念

子图:假设有两个图G = (v, E)和G′ = (v′, E′),如果v′⊆v且E′⊆ E,则称G′为G的子图。 例如,图6.2所示为图6.1中G1和G2的子图示例。

无向完全图和有向完全图:对于无向图,若具有n(n − 1)/2条边,则称为无向完全图。 对于有向图,若具有n(n − 1)条弧,则称为有向完全图。

稀疏图和稠密图:有很少条边或弧(如e<nlog2n)的图称为稀疏图,反之称为稠密图。

回路或环:第一个顶点和最后一个顶点相同的路径称为回路或环

简单路径、简单回路或简单环:序列中顶点不重复出现的路径称为简单路径除了第 一个顶点和最后一个顶点之外,其余顶点不重复出现的回路,称为简单回路或简单环

图的表示方法

邻接矩阵法

//-----图的邻接矩阵存储表示-----

#define MaxInt 32767//表示极大值,即

#define MVNum 100//最大顶点数

typedef char VerTexType;//假设顶点的数据类型为字符型

typedef int ArcType;//假设边的权值类型为整型

typedef struct

{

 VerTexType vexs[MVNum];//顶点表

 ArcType arcs[MVNum][MVNum]; //邻接矩阵

 int vexnum,arcnum;//图的当前点数和边数 }AMGraph;

}AMGraph;

邻接矩阵表示法的优缺点

便于判断两个顶点之间是否有边,即根据A[i][j] = 0或1来判断。

便于计算各个顶点的度。对于无向图,邻接矩阵第i行元素之和就是顶点vi 的度;对于有 向图,第i行元素之和就是顶点vi 的出度,第i列元素之和就是顶点i的入度。

缺点:

不便于增加和删除顶点

不便于统计边的数目,需要查找邻接矩阵所有元素才能统计完毕,时间复杂度为O(n2 )。

空间复杂度高。

邻接表

一般来说知道怎么画就行,考试不会考代码的。

邻接表表示法的优缺点

优点

便于增加和删除顶点

便于统计边的数目,按顶点表顺序查找所有边表可得到边的数目,时间复杂度为 O(n + e)。适合表示稀疏图

缺点

不便于判断顶点之间是否有边,要判定vi和vj之间是否有边,就需查找第i个边表,最坏 情况下时间复杂度为O(n)。

有向图的十字链表法,知道怎么画,且知道是用于有向图的

【十字链表进阶版画法 三步秒杀 数据结构】 十字链表进阶版画法 三步秒杀 数据结构_哔哩哔哩_bilibili

前面相同的连横线,后面相同的连接竖线,还是一样先进行组队。

顶点的结点为三个数据,一个是存放顶点,一个存放横向关系,一个存放竖向关系的链表。边结点为四个,前两个存放有关系的两个结点第三个连接横向的,第四个连接纵向的链表。

无向图的连接多重表,知道怎么画就行,知道他是用于无向图的

【邻接多重表进阶版画法 三步秒杀 数据结构】 邻接多重表进阶版画法 三步秒杀 数据结构_哔哩哔哩_bilibili

临界多重表的顶点结点有两个数据,一个是顶点的编号一个是指针,边结点有四个数据,一条边两边的结点和他们连的下一个相同的结点

图的遍历

深度优先和广度优先的遍历会写就行了,代码大概不考

【【数据结构】04 图的两种遍历方式 深度优先遍历 广度优先遍历】 【数据结构】04 图的两种遍历方式 深度优先遍历 广度优先遍历_哔哩哔哩_bilibili

图的应用

最小生成树

prim算法和kruskal

关于迪杰斯特拉算法

我觉得还是用两个数组来实现比较简单,第一个数组是一个bool类型的数组,判断是否达到最短路径,第二个数组到达任意一点的距离

具体的视频就如上所示,讲解的很清楚了

【Dijkstra(迪杰斯特拉)算法理解】 Dijkstra(迪杰斯特拉)算法理解_哔哩哔哩_bilibili

迪杰斯特拉算法的时间复杂度为O(N^2)

弗洛伊德算法

AOV网

DAG图:有向无环图

AOV网:用顶点表示活动弧表示活动的优先关系

AOV网中是没有环的

检测办法:对有向图进行拓扑排序,若网中所有的点进行拓扑排序,若顶点都在序列中,则无环

AOV网的拓扑排序的过程

1.选择图中一个无前驱的结点并且输出

2.删除该结点以及所有以它为尾的弧

3.重复1,2,直到没有点为止

 AOE网

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值