视频链接:
文章图片
数据结构与算法基础(青岛大学-王卓)–第六章图
本章知识框架:
文章图片
目录:
-
-
- 1.图的定义和基本术语
- 2.案例引入
- 3.图的类型定义(抽象数据类型)
- 4.图的存储结构
- 5.图的遍历
- 6.图的应用
-
1.图的定义和基本术语
- 图表示多对多关系
- 图是由顶点(V集合)和边(E集合)构成,G=(V,E)
- 无向图:每条边都是无方向的
- 有向图:每条边都是有方向的
文章图片
上图G1的顶点V集合={V1,V2,V3,V4}; E集合={V1->V3,V1->V2,V3->V4,V4->V5}
上图G2的顶点V集合={V1,V2,V3,V4}; E集合={E1,E2,E3,E4,E5,E6,E7}
文章图片
- 完全图:任意二个点都有一条边相连
文章图片
- 稀疏图,稠密图,网,邻接,关联(依附)
文章图片
弧:有向图中的边(为了区分有向图和无向图的边)
文章图片
稀疏图(e表示边,n表示顶点的数目):
文章图片
稠密图:
(e>=nlogn)
网:边/弧带权值
文章图片
邻接:
(V1,V2)表示V1,V2互为邻接点
文章图片
文章图片
- 有向图和无向图的度
文章图片
无向图V0的度为2(红色边的数量):
文章图片
有向图V0的入度为1:
文章图片
有向图V0的出度为2:
文章图片
- 有向树:在有向图中仅有一个顶点的入度为0其余顶点的入度为1的图
文章图片
- 路径,路径长度,回路(环),简单路径,简单回路(简单环)
文章图片
- 连通图
文章图片
无向图的连通图:
下图连通图:V0可以去到任意顶点V1,V2,V3,V4,同理V1,V2,V3,V4也可以
文章图片
下图非连通图:V0,V1,V2,V3无法去到V4,V5同理V4,V5无法去到V0~V3
文章图片
有向图的连通图:
下图强连通图:V0可以去到任意顶点V1,V2,V3,同理V1,V2,V3也可以
文章图片
下图非强连通图:V1无法去到V0,V2,V3
文章图片
- 权与网
文章图片
文章图片
- 子图
文章图片
- 无向图连通分量
文章图片
- 有向图强连通分量
文章图片
下图是一个非强连通图(V1无法到达V0,V2,V3),将V1去掉看成一个子图,这时候V1和(V0,V2,V3)分别为G的强连通分量
文章图片
- 极小连通子图,生成树,生成森林
文章图片
下图就是一个极小连通子图,删除任意一条边就不再连通
文章图片
连通图G1的生成树:包含G1中所有顶点的极小连通子图
文章图片
2.案例引入
- 六度空间理论
文章图片
- 六度空间理论的验证
文章图片
- 属性
文章图片
- 操作
文章图片
文章图片
4.图的存储结构
- 顺序存储结构,图是没有顺序存储结构的,但是可以通过二维数组来表示元素之间的关系,这种方式称为
数组表示法(邻接矩阵)
- 链式存储结构,链式存储结构的前驱和后驱不知道要定义多少(图是多对多关系)所以无法使用多重链表,但是可以通过
邻接表
,邻接多重表
,十字链表
来表示
文章图片
- 无向图的邻接矩阵表示法
文章图片
- 有向图的邻接矩阵表示法
文章图片
文章图片
- 网(即有全图)的邻接矩阵表示法
文章图片
- 【数据结构与算法|学习笔记--数据结构与算法基础(青岛大学-王卓)--第六章图】邻接矩阵利与弊
利:
文章图片
弊:
文章图片
邻接表表示法(链式)
文章图片
文章图片
- 无向图
文章图片
- 有向图
文章图片
V1对应上图的V1->V3(数组下标为2),V1->V2(数组下标为1)
文章图片
特点:
文章图片
逆邻接表(指针域指向入度方向发出顶点)
V1对应上图的V4->V1(数组下标为3)
文章图片
特点:
文章图片
- 邻接表的特点
文章图片
- 邻接矩阵与邻接表表示法的关系
文章图片
文章图片
文章图片
- 邻接表中存在的问题
文章图片
十字链表
- 什么是十字链表
文章图片
- 十字链表结构
文章图片
邻接多重表
文章图片
文章图片
上图V1指向V4和V2,(V1,V4)和(V1,V2)
文章图片
5.图的遍历
- 什么是图的遍历
文章图片
文章图片
如何避免重复访问
文章图片
- 图的遍历算法
深度优先遍历(DFS)
广度优先搜索( BFS)
文章图片
文章图片
文章图片
文章图片
- 邻接矩阵表示的无向图深度遍历实现
辅助数组用来避免重复访问
文章图片
文章图片
- 非连通图的遍历
文章图片
- 深度优先遍历(DFS)效率分析
文章图片
广度优先搜索( BFS)
文章图片
文章图片
文章图片
- 非连通图的广度遍历
文章图片
- 实现(通过队列实现)
文章图片
文章图片
- BFS算法效率分析
文章图片
- DFS并BFS算法效率比较
文章图片
文章图片
最小生成树
- 什么是最小生成树
文章图片
- 最小生成树的作用
文章图片
- 构造最小生成树
文章图片
- MST
文章图片
- 构造最小生成树方法一: 普里姆(Prim)算法
文章图片
- 构造最小生成树方法二:克鲁斯卡尔(Kruskal)算法。
文章图片
- 两种算法比较
文章图片
- 最短路径
文章图片
文章图片
- 问题抽象
文章图片
- 第一类问题:两点间最短路径
文章图片
- 第二类问题某源点到其他各点最短路径
文章图片
- 针对上述二个问题的算法
文章图片
- 艾兹格.W:迪杰斯特拉(Edsger Wybe Dijkstra)
文章图片
- Dijkstra算法
文章图片
文章图片
文章图片
文章图片
- 问题二的解决办法
文章图片
- Floyd算法
文章图片
拓扑排序 - 有向无环图
文章图片
- 有向无环图及其应用
- AOV网
文章图片
文章图片
- AOE网
文章图片
- 什么是拓扑排序
文章图片
- 拓扑排序例子
文章图片
- 拓扑排序的方法
文章图片
- 拓扑排序的一一个重要应用
文章图片
文章图片
文章图片
- 关键路径
文章图片
文章图片
- 对于AOE网,需要关心的二个问题
文章图片
- 通过4个描述量确定关键路径
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
推荐阅读
- 笔记|栈和队列常见oj题
- 数据结构|第一章.概论
- 计算机视觉算法工程师|算法工程师0——算法工程师学习进阶路线
- 算法系列|【算法基础1】舍友课间上了个厕所,回来就告诉我他掌握了二分查找【内附搜索模板】
- leetcode刷题实录|leetcode226 翻转二叉树
- 数组|二、数据结构与算法 稀疏数组
- 数据结构|Leetcode226翻转二叉树
- leetcode|LeetCode226翻转二叉树(递归)
- 算法学习|最近公共祖先之树上倍增求法