数据结构-图

数据结构-图,第1张

数据结构-图

一、图的基本概念

1.图不可以是空图,图的顶点集V一定非空,但边集E可以为空。

2.简单图:不存在重复边且不存在顶点到自身的边,称图G为简单图。

3.并非V和E的任何子集都能构成G的子图,因为这样的子集可能不是图,即E的子集中的某些边关联的顶点可能不在这个V的子集中。

4.极大连通子图是无向图的连通分量,极大即要求该连通子图包含其所有的边;极小连通子图是既要保持图连通又要使得边数最少的子图。

5.生成树:连通图的生成树是包含图中全部顶点的一个极小连通图。

6.有向树:一个顶点的入度为0,其余顶点的入度均为1的有向图,称为有向树。

二、图的存储

1.图的存储结构:邻接矩阵、邻接表、十字链表、邻接多重表和边集数组。

2.稠密图适合使用邻接矩阵的存储表示。

3.稀疏图适合使用邻接表的存储表示。

4.十字链表是有向图的一种链式存储结构。

5.邻接多重表是无向图的一种链式存储结构。

6.边集数组:通过数组存储每条边的起点和终点。如果是网,则增加一个权值域。

三、图的遍历

1.在遍历图的过程中,需要设置一个辅助数组来标记顶点是否被访问过。

2.广度优先搜索:类似于二叉树的层序遍历算法,不是一个递归的算法。必须借助一个辅助队列,以记忆正在访问的顶点的下一层顶点。

3.深度优先搜索:类似于树的先序遍历,是一个递归算法,需要借助一个递归动作栈。

4.对于同样的一个图,基于邻接矩阵的遍历得到的DFS序列和BFS序列是唯一的,基于邻接表的遍历得到的DFS序列和BFS序列是不唯一的。

四、图的应用

1.求最小生成树算法:Prim算法和Kruskal算法。

2.图的最小生成树首先必须是带权连通图。

3.Prim(普里姆)算法:选择一个与当前T中顶点集合距离最近的顶点,适合于求解边稠密的图的最小生成树。

4.Kruskal(克鲁斯卡尔)算法:选取当前未被选取过且权值最小的边,适合于边稀疏而顶点较多的图。

5.最短路径:把带权路径长度最短的那条路径称为最短路径。

6.求最短路径的算法:Dijkstra算法和Floyd算法。

7.Dijkstra(迪杰斯特拉)算法:求单源最短路径问题,边的权值不能为负。

8.Floyd(弗洛伊德)算法:求各顶点之间最短路径问题,不允许图中有包含负权值的边组成的回路。

9.AOV网:顶点表示活动的有向图。

10.AOE网:用边表示活动的有向图。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5703097.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存