6.1 图的基本概念
1.无向图&有向图
2. 简单图&多重图
3. 完全图
4. 子图
5. 连通 & 连通图
6. 连通分量
7.极小连通子图
8. 生成树&生成森林
9. 顶点的度
10. 网
11. 稠密图&稀疏图
12. 有向树
13. 路径&路径长度
14. 回路
6.2 图的存储及操作
6.2.1 邻接矩阵表示法
1. 图
2. ·网
3. 程序定义
4. 性质
6.2.2 邻接表法
1. 有向图
2. 无向图
3. 程序语言
4. 性质
5. 邻接矩阵 vs 邻接表
6.2.3 十字链表
6.2.4 邻接多重表
6.2.5 图的基本操作
1. Adjacent
- 无向图
- 有向图
2. Neighbors
- 无向图
- 有向图
- 入边需要搜索整个邻接表
3. 插入
4. 删除
5. 添加边
6. 删除边
7. 其他
6.3 图的遍历
6.3.1 广度优先搜索
1. 定义
2. 复杂度分析
3. 广度优先生成树
4. 应用
- 无权图单源最短路径问题
6.3.2 深度优先搜索
1. 定义
2. 复杂度分析
3. 深度优先树
4. 遍历与连通性问题
- 有向图没有类似结论
6.3.3 总结
6.4 图的应用
6.4.1 最小生成树
1. 定义
2. 性质
3. 算法
- Prim 算法
- Kruskal 算法
6.4.2 最短路径
- Dijkstra
- Floyd
6.4.3 拓扑排序
1. 定义
2. 算法
3. 拓扑排序的存在性
6.4.4 关键路径
1. 定义
- 源点 和 汇点 有且只有一个
2. 算法思想
(1)使用拓扑排序计算各事件的 最早发生时间 (顺推)(利用入边)
(2)最迟发生时间(不推迟整个工程的前提下,各事件最迟发生的时间)(逆推)(利用出边)
(3)活动的最早开始时间
(4)活动的最晚开始时间
(5)活动的差额--关键活动
- 特殊情况