王道数据结构总结笔记--图

树本身就是一个特殊的图。

6.1图的基本概念

定义

王道数据结构总结笔记--图_第1张图片

逻辑结构的应用

王道数据结构总结笔记--图_第2张图片

几个概念

图的类型

王道数据结构总结笔记--图_第3张图片

顶点相关

王道数据结构总结笔记--图_第4张图片

(强)连通图

王道数据结构总结笔记--图_第5张图片

子图

王道数据结构总结笔记--图_第6张图片

王道数据结构总结笔记--图_第7张图片

(强)连通分量

王道数据结构总结笔记--图_第8张图片

生成树和生成森林

连通图的生成树是包含图中全部顶点的一个极小连通子图。若图中顶点数为n,则它的生成树含有 n-1 条边。对生成树而言,若砍去它的一条边,则会变成非连通,若加上一条边则会形成一个回路。
王道数据结构总结笔记--图_第9张图片

在非连通图中,连通分量的生成树构成了非连通图的生成森林
王道数据结构总结笔记--图_第10张图片

边的权、带权图/网

王道数据结构总结笔记--图_第11张图片

几种特殊形态的图

王道数据结构总结笔记--图_第12张图片

总结

王道数据结构总结笔记--图_第13张图片

6.2图的存储和基本操作

6.2.1邻接矩阵法

王道数据结构总结笔记--图_第14张图片

带权图(网)的存储

王道数据结构总结笔记--图_第15张图片

性能分析:适合用于存储稠密图

王道数据结构总结笔记--图_第16张图片

性质

设图G的邻接矩阵为A(矩阵元素为0/1),则An
的元素An[i][j]等于由顶点i到顶点j的长度为n的路径的数目

王道数据结构总结笔记--图_第17张图片

总结

王道数据结构总结笔记--图_第18张图片

6.2.2邻接表法(顺序+链式存储)

王道数据结构总结笔记--图_第19张图片
王道数据结构总结笔记--图_第20张图片

总结

在这里插入图片描述
王道数据结构总结笔记--图_第21张图片

王道数据结构总结笔记--图_第22张图片

6.2.3十字链表、邻接多重表

十字链表(只能)存储有向图

王道数据结构总结笔记--图_第23张图片

邻接多重表(只能)存储无向图

王道数据结构总结笔记--图_第24张图片

总结

王道数据结构总结笔记--图_第25张图片

6.2.4图的基本操作

判断图G是否存在边

王道数据结构总结笔记--图_第26张图片

列出图G中与结点x邻接的边

王道数据结构总结笔记--图_第27张图片

在图G中插入顶点x

王道数据结构总结笔记--图_第28张图片

从图G中删除顶点x

王道数据结构总结笔记--图_第29张图片

若无向边(x, y)或有向边不存在,则向图G中添加该边

王道数据结构总结笔记--图_第30张图片

若无向边(x, y)或有向边存在,则从图G中删除该边

王道数据结构总结笔记--图_第31张图片

求图G中顶点x的第一个邻接点,若有则返回顶点号。若x没有邻接点或图中不存在x,则返回-1

王道数据结构总结笔记--图_第32张图片

假设图G中顶点y是顶点x的一个邻接点,返回除y之外顶点x的下一个邻接点的顶点号,若y是x的最后一个邻接点,则返回-1

王道数据结构总结笔记--图_第33张图片

获取/设置图G中边(x, y)或对应的权值

王道数据结构总结笔记--图_第34张图片

总结

王道数据结构总结笔记--图_第35张图片

6.3图的遍历

6.3.1图的广度优先遍历(BFS)

王道数据结构总结笔记--图_第36张图片

代码实现

如果是⾮连通图,则⽆法遍历完所有结点
王道数据结构总结笔记--图_第37张图片
王道数据结构总结笔记--图_第38张图片
王道数据结构总结笔记--图_第39张图片

BFS算法(Final版)

对于无向图,调⽤BFS函数的次数=连通分量数
王道数据结构总结笔记--图_第40张图片

复杂度分析

王道数据结构总结笔记--图_第41张图片

广度优先生成树

王道数据结构总结笔记--图_第42张图片

广度优先生成森林

对⾮连通图的⼴度优先遍历,可得到⼴度优先⽣成森林
王道数据结构总结笔记--图_第43张图片

练习

王道数据结构总结笔记--图_第44张图片

总结

王道数据结构总结笔记--图_第45张图片

6.3.2图的深度优先遍历DFS

王道数据结构总结笔记--图_第46张图片

复杂度分析

王道数据结构总结笔记--图_第47张图片

深度优先遍历序列

王道数据结构总结笔记--图_第48张图片

深度优先生成树(森林)

同⼀个图的邻接矩阵表示⽅式唯⼀,因此深度优先遍历序列唯⼀,深度优先⽣成树也唯⼀;
同⼀个图邻接表表示⽅式不唯⼀,因此深度优先遍历序列不唯⼀,深度优先⽣成树也不唯⼀。

王道数据结构总结笔记--图_第49张图片

图的遍历与图的连通性

王道数据结构总结笔记--图_第50张图片

总结

王道数据结构总结笔记--图_第51张图片

6.4

6.4.1最小生成树

定义

王道数据结构总结笔记--图_第52张图片
王道数据结构总结笔记--图_第53张图片

Prim 算法(普里姆)

Prim 算法(普⾥姆):从某⼀个顶点开始构建⽣成树;每次将代价最⼩的新顶点纳⼊⽣成树,直到所有顶点都纳⼊为⽌。
王道数据结构总结笔记--图_第54张图片

Kruskal 算法(克鲁斯卡尔)

Kruskal 算法(克鲁斯卡尔):每次选择⼀条权值最⼩的边,使这条边的两头连通(原本已经连通的就不选)直到所有结点都连通。
王道数据结构总结笔记--图_第55张图片

对比

王道数据结构总结笔记--图_第56张图片

Prim 算法的实现思想

王道数据结构总结笔记--图_第57张图片

Kruskal 算法的实现思想

王道数据结构总结笔记--图_第58张图片

总结

王道数据结构总结笔记--图_第59张图片

6.4.2最短路径问题–BFS算法

王道数据结构总结笔记--图_第60张图片

总结

王道数据结构总结笔记--图_第61张图片
王道数据结构总结笔记--图_第62张图片

6.4.3最短路径问题–Dijkstra算法

王道数据结构总结笔记--图_第63张图片

具体实现

王道数据结构总结笔记--图_第64张图片
王道数据结构总结笔记--图_第65张图片
王道数据结构总结笔记--图_第66张图片

Dijkstra算法的时间复杂度

王道数据结构总结笔记--图_第67张图片

对⽐:Prim 算法的实现思想

王道数据结构总结笔记--图_第68张图片

Dijkstra 算法不适⽤于有负权值的带权图

王道数据结构总结笔记--图_第69张图片

6.4.4最短路径问题–Floyd算法

王道数据结构总结笔记--图_第70张图片
王道数据结构总结笔记--图_第71张图片
王道数据结构总结笔记--图_第72张图片
王道数据结构总结笔记--图_第73张图片

核心代码

王道数据结构总结笔记--图_第74张图片

升级版

王道数据结构总结笔记--图_第75张图片
王道数据结构总结笔记--图_第76张图片

不能解决的问题

Floyd算法可以⽤于负权值带权图;Floyd 算法不能解决带有“负权回路”的图(有负权值的边组成回路),这种图有可能没有最短路径
在这里插入图片描述

总结

王道数据结构总结笔记--图_第77张图片

6.4.5有向无环图描述表达式

有向⽆环图:若⼀个有向图中不存在环,则称为有向⽆环图,简称DAG图(Directed Acyclic Graph)
王道数据结构总结笔记--图_第78张图片

栗子

王道数据结构总结笔记--图_第79张图片
最终变成
王道数据结构总结笔记--图_第80张图片
王道数据结构总结笔记--图_第81张图片

解题方法(最好跟着视频走一遍)王道数据结构总结笔记--图_第82张图片

王道数据结构总结笔记--图_第83张图片
王道数据结构总结笔记--图_第84张图片

6.4.6拓扑排序

AOV网

王道数据结构总结笔记--图_第85张图片

拓扑排序

拓扑排序:找到做事的先后顺序
王道数据结构总结笔记--图_第86张图片

实现方法:
① 从AOV⽹中选择⼀个没有前驱(⼊度为0)的顶点并输出。
② 从⽹中删除该顶点和所有以它为起点的有向边。
③ 重复①和②直到当前的AOV⽹为空当前⽹中不存在⽆前驱的顶点为⽌。(说明有回路)
王道数据结构总结笔记--图_第87张图片

代码实现??

王道数据结构总结笔记--图_第88张图片
王道数据结构总结笔记--图_第89张图片
王道数据结构总结笔记--图_第90张图片

逆拓扑排序

对⼀个AOV⽹,如果采⽤下列步骤进⾏排序,则称之为逆拓扑排序:
① 从AOV⽹中选择⼀个没有后继(出度为0)的顶点并输出。
② 从⽹中删除该顶点和所有以它为终点的有向边。
③ 重复①和②直到当前的AOV⽹为空。

代码实现??

王道数据结构总结笔记--图_第91张图片
王道数据结构总结笔记--图_第92张图片

总结

王道数据结构总结笔记--图_第93张图片

6.4.7关键路径

王道数据结构总结笔记--图_第94张图片

定义

王道数据结构总结笔记--图_第95张图片
王道数据结构总结笔记--图_第96张图片
王道数据结构总结笔记--图_第97张图片

求关键路径的步骤

① 求所有事件的最早发⽣时间 ve( )

王道数据结构总结笔记--图_第98张图片

② 求所有事件的最迟发⽣时间 vl( )

王道数据结构总结笔记--图_第99张图片

③ 求所有活动的最早发⽣时间 e( )

王道数据结构总结笔记--图_第100张图片

④ 求所有活动的最迟发⽣时间 l( )

王道数据结构总结笔记--图_第101张图片

⑤ 求所有活动的时间余量 d( ) — d(i)=0的活动就是关键活动, 由关键活动可得关键路径

王道数据结构总结笔记--图_第102张图片

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

王道数据结构总结笔记--图_第103张图片

总结

王道数据结构总结笔记--图_第104张图片

你可能感兴趣的:(数据结构,数据结构)