栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构-图

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构-图

一、图的基本概念

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网:用边表示活动的有向图。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/702991.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号