【数据结构理论】图

定义

图由顶点集V和边集E组成

线性表和树都可以是空的,但图不可为空,但图的边集可以是空集

E是有向边/无向边决定图是有向图/无向图

AB为两端点。E的集合若是无向边,则E{(A,B)};若E的集合是有向边,则E{<A,B>}

度:无向图就是依附于顶点的边的条数(TD(V));有向图就是入度和出度和(TD(v)=ID(v)+OD(v))

在具有n个顶点,e条边的有向图中。ID和=OD和=e

路径、回路

简单路径:再路径序列中,顶点不重复出现的路径

简单回路、路径长度

点到点的距离:顶点间最短路径,若不存在该路径,则距离记为∞

无向图中,若顶点v和顶点w有路径存在,则称v和w是连通

有向图中,若顶点v到w和顶点w到v之间都有路径,则称这两个顶点是强连通

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

若G中两两顶点强连通,就是强连通图

对于n个顶点的有向图G,若G是强连通图,则最少有n条边

子图:顶点和边都是原图子集的图

生成子图:包含原图所有顶点,可以去掉部分边

无向图极大连通子图称作连通分量

有向图极大强连通子图乘坐强连通分量

生成树:连通图的生成树是包含图中全部顶点的一个极小连通子图

生成森林:非连通图

边的权、带权图/

特殊图

无向完全图、有向完全图、稀疏图、稠密图、树、森林

图的存储

邻接矩阵法:int型二维数组。1代表有边,0代表无边(注意区分有向和无向,有向1个1,无向2个1)

求度的时间复杂度O(|v|)。存储边的空间复杂度O(|v|)适合存储稠密图

带权图(网):0和∞代表无边,有边存边的值

𝐴n𝑖𝑗等于由顶点i到顶点j的长度为n的路径的数目

邻接表法:存顶点和这个顶点的指针。无向图空间复杂度O(|v|+2|E|)有向图O(|v|+|E|)

找出度很简单,找入度很麻烦

十字链表法(存储有向图)(空间复杂度O(|v|+|E|

邻接多重表(存储无向图)(空间复杂度O(|v|+|E|

图的基本操作

列出G中与结点x邻接的边:邻接矩阵O(|v|);邻接表出边O(1)-O(|v|)入边O(|E|)

图G中插入新的顶点x:邻接矩阵O(1);邻接表O(1)

删除顶点x:邻接矩阵O(|V|);邻接表O(1)-O(E)。

增加一条边:都是O(1)

图的广度优先遍历

无向图BFS调用函数次数=连通分量数

邻接矩阵存储的图:时间复杂度O(|v|2)

邻接表存储的图:时间复杂度O(|v|+|E|),若是无向图时间复杂度O(|E|)

图的深度优先遍历

空间复杂度:最坏Ov最好O1

时间复杂度O(|v|2)

最小生成树

prim算法:从某一个顶点开始构建生成树,每次纳入代价最小的顶点,直到纳入所有顶点

时间复杂度O(|v|2)。适合边稠密

kruskal算法:每次选择一条权值最小的边,使这条边的两头连通

时间复杂度O(|E|log2𝐸)。适合边稀疏

最短路径

单源最短路径:1、BFS算法(无权图);2、dijistra算法(带权图、无权图)

各顶点间的最短路径:Floyd算法(带权图、无权图)

先不学,如果刷到题再看,有点复杂

有向无环图(DAG图)

AOV

拓扑排序

拟拓扑排序

从源点到汇点的多条有向路径,所有路径中,最大路径长度为关键路径

时间余量:最早开始时间和最迟开始时间的差值

代码构建图的一些助记

邻接矩阵:typedef struct{存顶点的数组,存边的二维数组,图的顶点和弧数}Mgraph;

插入点时直接插入;插入边/判定连通时,获取两点分别对应点数组的下标,把下标I,j带到边数组讨论

邻接表

struct ArcNode{ajvex(弧指向顶点位置),ArcNode *next指向下一个弧的指针,(边权)}ArcNode

//边表结点结构体

Struct Vnode{data(数据),ArcNode *first指向第一条依附于该顶点的弧}Vnode,adjlist[]

//顶点表结点,也可看做数组

Struct{adjlist vertex邻接表,图的顶点和弧数}ALGraph

//总的存储类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值