图的定义和术语–逻辑结构
数据元素:顶点和边
边:无方向
弧:有方向
无向图
有向图
带权图
简单图:无重边和自环
完全图:任意两个点都有一条边相连
邻接,关联
子图
生成子图
导出子图
连通图(强连通图)
图的类型定义和存储结构
顺序存储
数组表示法:邻接矩阵
存储空间只与顶点个数有关 7
存储的信息
- 所有顶点的数据信息
- 顶点之间关系
- 权的信息
多重链表
邻接表,邻接多重表,十字链表
邻接表表示法(出边表)
头结点:
数据域:顶点V的信息
链域:
表结点:
邻接点域:表示V一个邻接点的位置
数据域:与边有关信息(比如权值)
链域:表示下一个邻接点的位置
逆邻接表(出边表)
图的存储结构:(十字链表)
顶点表结点结构
边表结点结构
多重邻接表(无向图):
图的遍历
***深度优先搜索***需辅助数组
确定访问起始点
访问第一个邻接点,若未访问过深度遍历此邻接点,若访问过,则访问第二个
***广度优先搜索***需辅助数组,辅助队列
基本思想:仿树的层次遍历过程
无权图从出发点到其他点的最短路径
图的应用
图的连通性问题
图的连通分量
生成树
- 包含原图所有n个顶点
- 包含其中n-1条边
- 保证连通
最小生成树
-
最小生成树
各边权重之和最小
性质:存在一颗最小生成树包含权值最小的边
普利姆算法
克鲁斯卡尔算法
破圈法 -
最短路径
与最小生成树不同,最小生成树有n个顶点
单源最短路径:迪杰斯特拉算法
所有顶点间最短路径:弗洛伊德算法
不可出现负回路 -
拓扑排序
-
关键路径