数据结构-图-思维导图
1 数据结构-第六章-图-思维导图
数据结构-第六章-图-思维导图缩略图展示如下图1所示:
2 知识点小结
1、邻接矩阵、邻接表、十字链表、邻接多重表。
邻接矩阵 | 邻接表 | 十字链表 | 邻接多重表 | |
---|---|---|---|---|
空间复杂度 | O( ∣ V ∣ | V \vert ∣V∣ 2) | 无向图O(
∣
V
∣
| V \vert
∣V∣ + 2
∣
E
∣
| E \vert
∣E∣) 有向图O( ∣ V ∣ | V \vert ∣V∣ + ∣ E ∣ | E \vert ∣E∣) | O( ∣ V ∣ | V \vert ∣V∣ + ∣ E ∣ | E \vert ∣E∣) | O( ∣ V ∣ | V \vert ∣V∣ + ∣ E ∣ | E \vert ∣E∣) |
适用于 | 稠密图 | 稀疏图 | 有向图 | 无向图 |
表达方式 | 唯一 | 不唯一 | 不唯一 | 不唯一 |
存储方式 | 顺序存储 | 顺序+链式存储 | 链式存储 | 链式存储 |
2、BFS(广度优先遍历)、DFS(深度优先遍历)。
BFS(广度优先遍历) | DFS (深度优先遍历) | |
---|---|---|
空间复杂度 | 辅助队列大小为O( ∣ V ∣ | V \vert ∣V∣) | 递归工作栈大小为O( ∣ V ∣ | V \vert ∣V∣) |
时间复杂度(邻接矩阵存储) | O( ∣ V ∣ | V \vert ∣V∣ 2) | O( ∣ V ∣ | V \vert ∣V∣ 2) |
时间复杂度(邻接表存储) | O( ∣ V ∣ | V \vert ∣V∣ + ∣ E ∣ | E \vert ∣E∣) | O( ∣ V ∣ | V \vert ∣V∣ + ∣ E ∣ | E \vert ∣E∣) |
与二叉树遍历关系 | 类似二叉树的层序遍历 | 类似二叉树的先序遍历 |
3、最小生成树(Prim算法、Kruskal算法)。
Prim算法 | Kruskal算法 | |
---|---|---|
时间复杂度 | O( ∣ V ∣ | V \vert ∣V∣ 2) | O( ∣ E ∣ | E \vert ∣E∣log ∣ E ∣ | E\vert ∣E∣ ) |
适用于 | 适于边稠密的图 | 适于边稀疏而顶点多的图 |
4、最短路径(BFS算法、Dijkstra算法、Floyd算法)。
BFS算法 | Dijkstra算法 | Floyd算法 | |
---|---|---|---|
无权图 | √ | √ | √ |
带权图 | × | √ | √ |
带负权值的图 | × | × | √ |
带负权回路的图 | × | × | × |
时间复杂度 | O( ∣ V ∣ | V \vert ∣V∣ 2)或O( ∣ V ∣ | V \vert ∣V∣ + ∣ E ∣ | E \vert ∣E∣) | O( ∣ V ∣ | V \vert ∣V∣ 2) | O( ∣ V ∣ | V \vert ∣V∣ 3) |
适用于 | 无权图的单源最短路径 | 带权图的单源最短路径 | 带权图中各顶点间的最短路径 |
局限性 | 只适用于无权图,或者权值都相同的图 | 不适用于有负权值的带权图 | 不能解决带有“负权回路”的图 |
5、唯一、不唯一。
①图的邻接矩阵表示方式唯一;
②图的邻接表表示方式不唯一;
③图的十字链表表示是不唯一的,但一个十字链表表示确定一个图;
④同一个图的邻接矩阵表示方式唯一,因此广度(深度)优先遍历序列唯一,基于邻接矩阵的广度(深度)优先生成树唯一;
⑤同一个图的邻接表表示方式不唯一,因此广度(深度)优先遍历序列不唯一,基于邻接表的广度(深度)优先生成树不唯一;
⑥最小生成树可能有多个,但边的权值之和总是唯一且最小的;
⑦拓扑排序、逆拓扑排序序列可能不唯一;
⑧拓扑序列唯一,对应的图不一定唯一。
6、关键路径特性。
①若关键活动耗时增加,则整个工程的工期将增长;
②缩短关键活动的时间,可以缩短整个工程的工期,但是当缩短到一定程度时,关键活动可能会变成非关键活动;
③可能有多条关键路径,只提高一条关键路径上的关键活动并不能缩短整个工程的工期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短工期的目的。
7、连通图、子图、连通分量、极小连通分量、生成树之间的关系。
①连通分量:极大连通分量;
②极小连通子图:保证了连通,又有最少边数;
③生成树:在极小连通子图基础上,保证了包含图的全部顶点。之间的关系如下图2所示: