数据结构——图

简介:

一:图形简介

二:图的存储结构

三:图的遍历

四:最小生成树

五:最短路径

六:拓扑排序

七:关键路径计算

一:图形简介

图的定义:图是由“顶点 和“边“所组成的集合,通常用G=(V,E)来表示,其中V是所有顶点所组成的集合,而E代表所有边所组成的集合。图的种类有两种;一种是无向图,一种是有向图,无向图以(V1,V2)表示其边,而有向图则以<V1,V2>表示其边。

二:图的存储结构

图的存储结构:邻接矩阵、邻接表、邻接复合链表法、索引表格法等

2.1邻接矩阵

定义:以n*n的二维矩阵列表来表示

特性:对无向图而言,邻接矩阵一定是对称的,而且对角线一定是0。有向图则不一定如此。

缺点:空间浪费

2.2邻接表

定义:将一个n行的邻接矩阵,用n个链表表示

优点:相比较邻接矩阵,节省空间

缺点:增删改比较麻烦

 

三、图的遍历

图遍历的方法有两种:”深度优先搜索“和”广度优先遍历“

3.1深度优先遍历

深度优先遍历的方式类似于前序遍历;方法结合了递归堆栈两种数据结构的技巧。

3.2广度优先搜索

广度优先遍历类似树的层序遍历;利用队列递归技巧遍历

四、最小生成树

两种常用的构造最小生成树的方法——普利姆(prim)算法和克鲁斯卡尔(kruskal)算法

4.1Kruskal算法

Kruskal算法是将各边按权值大小从小到大排列,接着从权值最低的边开始建立最小成本生成的树,如果加入的边会造成回路则舍弃不用,直到加入了n-1个边为止。

4.2Prim算法

Prim算法,对一个加权图形G=(V,E),设V={1,2...n},假设U={1},也就是说,U和V是两个顶点的集合中找出一个顶点x,加入U集合中,反复执行同样的步骤,一直到U集合等于V集合(即U=V)为止。

五、最短路径

常见的方向有两种:单源最短路径、所有顶点对两两之间的最短路径

5.1单源最短路径

单源最短路径通常实用地接斯特拉(Dijkstra)算法

5.2所有顶点对两两之间的最短路径

两种方法:①重复执行Dijkstra算法n次;②采用弗洛伊德(Floyd)算法

Floyd图例:《图解数据结构》p241

六、拓扑排序

功能:将AOV网络中部分次序关系转换成线性次序的关系

排序步骤:

(1)寻找图中任何一个没有先行者的顶点。

(2)输出此顶点,并将此顶点的所有边全部删除。

(3)重复以上两个步骤处理所有的顶点。

七、关键路径

定义:AOE有向图从源头顶点到目的顶点之间,所需花费时间最长的一条有方向性的路径。

作用:关键路径乃是用来决定一个项目至少需要多少时间才可以完成。即在AOE中从源头顶点到目的顶点间最长的路径长度。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值