第六章图-创新互联

免责声明:

在塔什库尔干塔吉克等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站制作、成都网站建设 网站设计制作定制制作,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销,成都外贸网站建设公司,塔什库尔干塔吉克网站建设费用合理。
  • 笔记来源:本系列所有笔记均整理自 B站·王道考研·数据结构 视频教程。
  • 参考书籍:《2021年数据结构考研复习指导》,王道论坛所著,电子工业出版社出版,ISBN :9787121379819。

目录

1 图的概念

图G,由顶点集V和边集E组成,记作G(V,E)

  • 顶点集V 不能为空,一个图至少得有一个顶点,图不可以是空图;图中的顶点个数称为图的阶。
  • 边集E可以为空

顶点就好比火车站,边就好比火车站间的铁路。

有向图与无向图

在这里插入图片描述

简单图与多重图

在这里插入图片描述

图的逻辑结构应用

在这里插入图片描述

顶点的度

在这里插入图片描述

顶点与钉钉之间的关系

在这里插入图片描述

连通图与强连通图

在这里插入图片描述

子图

在这里插入图片描述
在这里插入图片描述

无向图的连通分量

在这里插入图片描述

有向图的强连通分量

在这里插入图片描述

连通图的生成树

在这里插入图片描述

边的权值与带权图

在这里插入图片描述

完全图

在这里插入图片描述
顶点为 n 的无向完全图,边数为 n * (n-1) / 2
顶点为 n 的有向完全图,边数为 n * (n-1)

树与有向树

在这里插入图片描述

2 图的存储结构 2.1 领接矩阵

领接矩阵:使用一个一维数组存储顶点信息,使用一个二维数组存储边的信息(顶点间的邻接关系),这个二维数组称为邻接矩阵。
在这里插入图片描述

#define MAX_V_NUM 100
typedef char V; // 顶点的数据类型
typedef int E; // 边上权值的数据类型
// 邻接矩阵结构
struct MGraph{V vertex[MAX_V_NUM]; // 顶点
	E edge[MAX_V_NUM][MAX_V_NUM]; // 邻接矩阵,边表
	int v_num; // 图的当前定点数
	int arc_num; // 图的当前边数/弧数
};

当邻接矩阵中的元素只表示对应的边是否存在时,可以将其定义为0表示边不存在,1表示边存在。

无向图的邻接矩阵是一个对称矩阵,对于规模较大的对称矩阵可以采用压缩存储。

顶点数为n的图,邻接矩阵表示法的空间复杂度为O(n^2)

2.2 邻接表

邻接表:对每个顶点建立一个单链表,单链表中存储依附于这个顶点的边,结合顺序存储和链式存储。

#define MAX_V_NUM 100

typedef char V; // 顶点数据类型

// 边表结点
struct ArcNode{int adjvex; // 这条弧所指向的顶点位置
	ArcNode* next; // 指向下一条弧的指针
};

// 顶点表结点
struct VNode {V data; // 顶点信息
	ArcNode* first; // 指向依附于该顶点的第一条弧的指针
};
// 邻接表
typedef VNode AdjList[MAX_V_NUM] ;

struct ALGraph{AdjList vertices; // 邻接表
	int vexnum; // 顶点数
	int arcnum; // 弧数
};

邻接表中:

  • 对于无向图,所需的存储空间为|V| + 2*|E|,|V|为顶点数,|E|为边数,因为一条边的信息会存储两次
  • 对于有向图,所需的存储空间为|V| + |E|,|V|为顶点数,|E|为边数
  • 图的邻接表的表示方式并不唯一

在这里插入图片描述

2.3 十字链表(有向图)

在这里插入图片描述

在这里插入图片描述

2.4 邻接多重表(无向图)

在这里插入图片描述

3 图的基本操作

图的基本操作独立于图的存储结构,不同的存储结构,同一操作算法的不同实现会有不同的性能。下面针对邻接矩阵和邻接表两种存储结构进行分析:

判断图中是否存在边(x,y)或者弧

在这里插入图片描述
在这里插入图片描述

求图中与顶点x邻接的边

在这里插入图片描述
在这里插入图片描述

4 图的遍历

图的遍历是指,从图的某一个顶点出发,按某种搜索方式,沿着图中的边对其他顶点访问一次(仅仅访问一次)。为避免同一顶点被访问多次,在遍历的过程中,需记下每个已经访问过的顶点,可以使用一个数组来存储这些已经访问过的顶点。

图的遍历算法主要有两种:广度优先和深度优先。

4.1 广度优先遍历 算法思想

广度优先搜索(Breadth-First-Search,BFS)。类似于二叉树的层序遍历。

算法思想:找到与一个顶点相邻的所有顶点,标记哪些顶点被访问过,借助一个辅助数组,为了实现逐层访问,还需要借助一个辅助队列,用来存储正在访问的顶点的下一层顶点。

算法实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

算法性能分析

在这里插入图片描述

广度优先生成树

在这里插入图片描述
在这里插入图片描述

广度优先生成森林

在这里插入图片描述

4.2 深度优先遍历 算法思想

深度优先(Depth-First-Search,DFS),类似于树的先序遍历。

基本思想:从一个顶点v1开始,访问与其邻接且未被访问的任意顶点w1,再访问与w1邻接且未被访问的任意顶点,重复直到不能继续向下访问时,依次退回到最近被访问的顶点,若其还有未被访问过的顶点,以同样的搜索方式继续,直到所有的顶点都被访问过为止。

算法实现

在这里插入图片描述
在这里插入图片描述

算法性能分析

在这里插入图片描述

在这里插入图片描述

5 图的应用 5.1 最小生成树 5.2 最短路径问题 BFS算法 Dijkstra算法 Floyd算法 5.3 有向无环图描述表达式 5.4 拓扑排序 5.5 关键路径

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网站栏目:第六章图-创新互联
链接URL:https://www.cdcxhl.com/article30/dphppo.html

成都网站建设公司_创新互联,为您提供网站改版营销型网站建设云服务器网站建设网站设计公司标签优化

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作