数据结构与算法 第四章 图


重点

基本概念- 连通图、生成树

图的存储
①邻接矩阵
②邻接表
在这里插入图片描述

图的遍历 各自的时间复杂度分析、领接矩阵与领接表是否一样

  • DFS
  • BFS

应用

  • 最小生成树
  • 最短路径(单目标、单顶点之间、所有顶点之间)

学习目标

  • 图结构是一种非线性结构,反映了数据对象之间的任意关系,在计算机科学、数学和工程中有着非常广泛的应用。
  • 了解图的定义及相关的术语,掌握图的逻辑结构及其特点
  • 了解图的存储方法,重点掌握图的邻接矩阵和邻接表存储结构;
  • 掌握图的遍历方法,重点掌握图的遍历算法的实现
  • 了解图的应用,重点掌握最小生成树、最短路径基本思想、算法原理和实现过程

1 图的基本概念

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

连通图与连通分量

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

强连通图与强连通分量

在这里插入图片描述

生成树

在这里插入图片描述

2 图的存储结构

2.1 领接矩阵

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

2.2 领接表

空间需求:O(n+2e)
在这里插入图片描述
空间需求:O(n+e)
在这里插入图片描述
空间需求:O(n+e)
在这里插入图片描述
存储结构
在这里插入图片描述
创建的时间复杂度:O(n+2e)

在这里插入图片描述
图的存储结构的比较——邻接矩阵和邻接表
在这里插入图片描述

其他

没讲

十字链表
邻接多重表
边集数组

3 图的遍历

在这里插入图片描述

DFS(深度优先搜索)

在这里插入图片描述
DFS可以用栈实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
算法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间复杂度分析
在这里插入图片描述
空间复杂度分析
在这里插入图片描述

BFS(广度度优先搜索)

原理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
算法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

时间复杂度分析
在这里插入图片描述
空间复杂度分析
在这里插入图片描述

4 最小生成树算法

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

Prim

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

Kruskal

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

5 最短路径算法

在这里插入图片描述

Dijkstra(单源最短路径问题)

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

迪杰斯特拉算法与Prim算法的相似之处
思想相似:都是使用贪婪和线性规划,每一步都是选择权值/花费最小的边。
贪婪:一个局部最有解也是全局最优解;
线性规划:主问题包含n个子问题,而且其中有重叠的子问题。

Dijkstra算法通过线性规划缓存了最优子路径的解,每一步也通过贪婪算法来选择最小的边。
Prim算法通过贪婪来选择最小的边,而Prim的每个子树都是最小生成树说明满足线性规划的两个条件。

Floyd(任意两个顶点之间的最短路径问题)

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


传送门

上一章:数据结构与算法 第三章 树
下一章:数据结构与算法 第五章 查找

猜你喜欢

转载自blog.csdn.net/RTyinying/article/details/111935139