数据结构学习笔记(四)——图

五、 图

1. 图的基本概念

1. 图的定义

顶点集V和边集E

  1. 有向图
  2. 无向图
  3. 简单图
  4. 多重图
  5. 完全图(也称简单完全图)
    在无向图中,若任意两个顶点之间都存在边,则称该图为无向完全图。
    在有向图中,若任意两个顶点之间都存在方向相反的两条弧,则称该图为有向完全图。
  6. 子图
  7. 连通、连通图和连通分量
    在无向图中,若从顶点v到顶点w有路径存在,则称v和w是连通的。若图G中任意两个顶点都是连通的,则称图G为连通图,否则称为非连通图。无向图中的极大连通子图称为连通分量。
  8. 强连通图、强连通分量
  9. 生成树、生成森林
  10. 顶点的读、入度和出度
  11. 边的权和网
  12. 稠密图、稀疏图
  13. 路径、路径长度和回路
  14. 简单路径、简单回路
  15. 距离
  16. 有向树

2. 图的存储及基本操作

1. 邻接矩阵法

对于任一有向图,如果他的邻接矩阵中对角线以下(或以上)的元素均为零,则存在拓扑序列(但可能不唯一) 。

2. 邻接表法

3. ★十字链表法

4. ★邻接多重表

5. 图的基本操作

3. 图的遍历

1. 广度优先搜索

  1. BFS算法的性能分析
    无论是邻接表还是邻接矩阵的存储方式,BFS算法都需要借助一个辅助队列Q,n个顶点均需入队一次,在最坏情况下,空间复杂度为O(|V|)。
    采用邻接表存储方式时,每个顶点均需搜索一次(或入队一次),故时间复杂度为O(|V|),在搜索任一顶点的邻接点时,每条边至少访问一次,故时间复杂度为O(|E|),算法总的世界复杂度为O(|V|+|E|) 。采用邻接矩阵存储方式时,查找每个结点的邻接结点所需的时间为O(|V|),故算法总的时间复杂度为O(|V|2)。
  2. BFS算法求解单源最短路径问题
  3. 广度优先生成树

2. 深度优先搜索

  1. DFS算法的性能分析
  2. 深度优先的生成树和生成森林
  3. 图的遍历与图的连通性

4. 图的应用

1. 最小生成树

  1. Prim算法
  2. Kruskal算法

2. 最短路径

求解最短路径的算法通常都依赖于一种性质,即两点之间的最短路径也包含了路径上其他顶点间的最短路径。带权有向图G的最短路径问题一般可分为两类:一是单源最短路径,即求图中某一顶点到其他各顶点的最短路径,可通过经典的Dijkstra算法求解;而是求每对顶点间的最短路径,可通过Floyd-Warshall算法来求解。

  1. Dijkstra算法求单源最短路径问题

  2. Floyd算法求各顶点之间最短路径问题

3. 拓扑排序

4. 关键路径

  1. 事件Vk的最早发生时间Ve(k)
  2. 事件Vk的最迟发生时间Vl(k)
  3. 活动a¬i的最早开始时间e(i)
  4. 活动ai的最迟开始时间l(i)
  5. 一个活动ai的最迟开始时间l(i)和其最早开始时间e(i)的差额d(i)=l(i)-e(i)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值