数据结构二轮(图)

图的基本概念

在这里插入图片描述

  1. 无向图的全部顶点的度的和等于边数的2倍
  2. 顶点v的度等于其入度和出度之和,即TD(v) = ID(v) + OD(v)。
  3. <v, w>,其中v、w是顶点,v称为弧尾,w称为弧头
  4. 一个图中不可能一个顶点都没有,图的顶点集V一定非空,而边集可以为空
  5. 在这里插入图片描述
  6. 连通分量和强联通分量区别在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  1. 若有满足V(G’) = V(G)的子图G’,则称其为G的生成子图
  2. 生成子图:顶点数不变,边是子集
  3. 有向图和无向图都有子图和生成子图,定义是类似的
  4. 生成树和生成森林的概念
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  1. 带权路径长度——当图是带权图时,一条路径上所有边的权值之和,称为该路径的带权路径长度
  2. 路径长度——路径上边的数目
  3. n个顶点的树,必有n-1条边。
  4. 常见考点:n个顶点的图,若 |E|>n-1,则一定有回路

常考考点
在这里插入图片描述

图的存储

在这里插入图片描述

  1. 无向图的邻接矩阵是对称矩阵,可以压缩存储(只存储上三角区/下三角区)

  2. 无权图:主对角线元素为0,其余位置,有边则是1,无边则为0

  3. 有权图:主对角线元素为0,其余位置,有边则是权值,无边则为无穷

  4. 邻接矩阵法性能分析
    空间复杂度:O(|V| 2 ) ——只和顶点数相关,和实际的边数无关
    适合用于存储稠密图

压缩存储

在这里插入图片描述

邻接矩阵法的性质An的含义

在这里插入图片描述

邻接表

在这里插入图片描述
在这里插入图片描述

  1. 注意:
    无向图中,边结点的数量是2|E|,整体空间复杂度为O(|V| + 2|E|)
    有向图中,边结点的数量是|E|,整体空间复杂度为O(|V| + |E|)

十字链表(存储有向图)

在这里插入图片描述
在这里插入图片描述

邻接多重表(无向图)

在这里插入图片描述
在这里插入图片描述

图的遍历

BFS广度优先遍历

在这里插入图片描述

  1. 同⼀个图的邻接矩阵表示⽅式唯⼀,因此⼴度优先遍历序列唯⼀
  2. 同⼀个图邻接表表示⽅式不唯⼀,因此⼴度优先遍历序列不唯⼀
  3. 对于⽆向图,调⽤BFS函数的次数=连通分量数
  4. 算法思路:

性能分析

在这里插入图片描述

  1. 空间复杂度:最坏情况,辅助队列⼤⼩为 O(|V|)

广度优先生成树和生成森林

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

DFS深度优先遍历

在这里插入图片描述

1.算法性能分析
在这里插入图片描述2. 对⽆向图进⾏BFS/DFS遍历
调⽤BFS/DFS函数的次数=连通分量数
3. 无向图中,对于连通图,只需调⽤1次 BFS/DFS
4. 有向图中,对于强连通图,从任⼀结点出发都只需调⽤1次 BFS/DFS
在这里插入图片描述

BFS类似于树的层序遍历
DFS类似于树的先序遍历

图的应用

最小生成树(PK)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Prim

从某⼀个顶点开始构建⽣成树;每次将代价最⼩的新顶点纳⼊⽣成树,直到所有顶点都纳⼊为⽌。

在这里插入图片描述

Kruskal

每次选择⼀条权值最⼩的边,使这条边的两头连通(原本已经连通的就不选)
直到所有结点都连通

在这里插入图片描述

最小生成树的性质

在这里插入图片描述

在这里插入图片描述

最短路径(德芙DF)

在这里插入图片描述

在这里插入图片描述

BFS求无权图的最短路径

在这里插入图片描述
在这里插入图片描述

  1. ⽆权图可以视为⼀种特殊的带权图,只是每条边的权值都为1
  2. BFS解决的是无权图的单源点最短路径问题
  3. BFS算法求单源最短路径也可以解决所有边的权值都相同的图

Dijkstra算法(电源点-时:O(|V| 2 ))看视频理解!!!一定要会!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Floyd算法(每对顶点,时: O(|V| 3 ))

在这里插入图片描述
在这里插入图片描述

有向无环图(DAG)描述表达式

有向⽆环图:若⼀个有向图中不存在环,则称为有向⽆环图,简称DAG图(Directed Acyclic Graph)

在这里插入图片描述

在这里插入图片描述

拓扑排序(AOV网)

AOV⽹(Activity On Vertex NetWork,⽤顶点表示活动的⽹):

在这里插入图片描述

  1. 入度为0表示这个顶点所表示的活动在他之前不需要任何的准备活动
  2. 每个AOV⽹都有⼀个或多个 拓扑排序序列
  3. DAG(有向无环图)才能进行拓扑排序
  4. 在这里插入图片描述
    上面一个是使用邻接表法的时间复杂度度

逆拓扑排序
在这里插入图片描述

注意:

  1. 拓扑排序和逆拓扑排序序列可能是不唯一的
  2. 若图中有环,则不存在拓扑or逆拓扑排序序列

关键路径(AOE网)

从前往后去较大的,从后往前去较小的!!

  1. AOE⽹ (Activity On Edge NetWork)
  2. 在带权有向图中,以顶点表示事件,以有向边表示活动,以边上的权值表示完成该活动的开销(如
    完成活动所需的时间),称之为⽤边表示活动的⽹络,简称AOE⽹ (Activity On Edge NetWork)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

求关键路径的步骤

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:汇点的最早最迟发生时间是相同的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键活动、关键路径的特性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

快速求解关键路径

从前往后去较大的,从后往前去较小的!!
只看事件的最早发生事件
快速求解的关键:从前往后取到较大的路径之后,划掉小的路径

B站视频讲解

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sparky*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值