869数据结构C语言版第7章图.ppt
《869数据结构C语言版第7章图.ppt》由会员分享,可在线阅读,更多相关《869数据结构C语言版第7章图.ppt(52页珍藏版)》请在三一办公上搜索。
1、数据结构(C语言版)第7章图,第7章图,内容7.1 图的概念7.2 图的存贮结构7.3 图的遍历7.4 图的最小生成树7.5 拓扑排序7.6 关键路径7.7 最短路径,7.1 图的概念,7.1.1图的定义 每个结点有任意多个前驱和后继结点.图也可以二元组表示:定义Graph=(v,E)v:表示元素集合 E:元素之间的关系现举两个例子,如下图:例一例二无向图中(1,2)和(2,1)代表同一边有向图中和表示两个不同的方向边以为例,在中:1称为此边的起点或尾(弧尾)2称为此边的终点或头(弧头)边的方向规定为弧尾弧头,V(G1)=1,2,3,4顶点集合;E(G1)=,边的集合(顶点关系)V(G2)=1
2、,2,3,4,5顶点集合;E(G2)=(1,2),(1,4),(2,3),(2,5),(3,4),(3,5)边的集合,7.1.2图的基本术语 1、完全图:在一个有N个顶点的图中,若每个顶点到其它(N-1)顶点都有一条边,则 图中有N个顶点且有(N*(N-1)/2)条边的图称为完全图。2、邻接点:对无向图G=(V,E),若有(V1,V2)属于E则称V1和V2互为邻接点。3、相关边:两个相邻接的点连成的边叫做这两个结点的相关边。,4、度:与每个顶点相连的边的数叫该点的度。5、入度:对有向图中某结点的弧头数(边的终点)称为该结点的入度。6、出度:对有向图中某结点的弧尾数(边的终点)称为该结点的出度。
3、7、路径:在一图中若从某个顶点VP出发,沿着一些边经过顶点V1,V2,,VM到达VG则称路径8、回路:从一顶点出发又回到该顶点,则所经过的路径称为回路。,9、子图 若G和G是两个图,且存在着V(G)V(G)和E(G)E(G)的关系,则称G是G的子图10、有关连通的概念连通:在无向图中,若从顶点VI到顶点VJ之间有路径则称此二顶点是连通的。连通图:如果图中任意一对顶点之间都是连通的,则称此图为连通图。强连通:对于有向图,若从顶点VI到顶点VJ到顶点VI之间都有路径,则称这两点是强连通的。强连通图:图中任何一对顶点都是强连通的,则此图叫强连通图。,连通分量:非连通图中的每一个连通部分叫连通分量。强
4、连通分量:有向图中极大强连通子图称为有向图的强连通分量。11、生成树一个连通的生成树,它含有图中全部顶点,但只有足以构成树的N-1条边(N顶点个数)如图P159,12.权、网权:有些图对应每条边有一相应的数值。这个数值叫该边的权。网:这种带权的图叫网。注:不同网络的权有不同的意义:电网络权可以是阻抗,运输网络中的权可以是路程长度,运费等。,7.1.3 图的几种基本操作(1)LOC_VERTEX(G,v)顶点定位函数顶点函数:确定顶点在图G中的位置.若图中无此顶点,则函数值为零.(2)GET_VERTEX(G,i)取顶点函数取点函数:求图G中第i个顶点.若i图G中顶点数则函数值为零.(3)FIR
5、ST_ADJ(G,v)求第一个邻接点函数求第一个邻接点函数:求图G中顶点V的第一个邻接点.若v没有邻接点或图G中无顶点v,则函数值为零.P156,7.2 图的存贮结构,7.2.1 邻接矩阵表示法(数组表示法)邻接矩阵表示法-表示各顶点之间的邻接关系 可以借助二维数组作为存贮结构,故又称为数组表示法.,7.2.2 邻接表 邻接表是由邻接矩阵改造而来的一种链接结构,它只考虑非零元素,因而节省了零元素所占的存贮空间.逆邻接表 链表中每个结点表示邻接矩阵中该顶点的列中每个非零元素,图的存贮结构说明,邻接矩阵是一个n*n的方阵 n为图的顶点数矩阵每一行分别对应图的各个顶点矩阵的每一列分别对应图的各个顶点
6、 1 规定矩阵元素aij=0,几点说明:1.如果图的各边是带权的,也可以用邻接矩阵来表示,只需将矩阵中1元素换成相应边的权值.2.邻接矩阵表示法对于以图的顶点为主的运算比较适用.3.除完全图外,其他图的邻接矩阵有许多零元素,特别是当n值较大,而边数又少是,则此矩阵称为稀疏矩阵.浪费存储空间.,邻接表与邻接矩阵的关系:1.与邻接矩阵的每一行有一个线形链接表.2.链接表的表头对应着邻接矩阵该行的顶点.3.链接表中的每个结点对应着邻接矩阵正中该行的一个非零元素无向图:一个非零元素表示与该行顶点相邻接的另一个顶点有向图:非零元素则表示该行顶点为起点的一条边的终点,几点说明:1.在邻接表中的每个线性链接
7、表中各结点的的顺序是任意的.2.邻接表中的各个线性链接表不说明它们顶点之间的邻接关系.3.对于无向图:某顶点的度数=该顶点对应的线性链表的结点数对于有向图:某顶点的出度数=该顶点对应的线性链表的结点数,逆邻接表 链表中每个结点表示邻接矩阵中该顶点的列中每个非零元素,7.3 图的遍历,什么叫图的遍历 从图的任意点出发沿着一些边访问图中的所有顶点,且使每个顶点仅被访问一次,这就叫图的遍历.,图的遍历的两种方法,深度优先搜索dfs 广度优先搜索bfs,1.深度优先搜索dfs,方法:从图中指定的起点v0出发(先访问v)访问它的任意相邻接的顶点w1,再访问w1的任一个未访问的相邻接顶点w2,如此下去,直
8、到某顶点已无被访问过的顶点,则返回一步找前一个顶点的其他沿未被访问的邻接顶点,重复以上过程直到所有的顶点都被访问,例:,顶点的访问序列:V1V2V4V8V5V3V6V7,2.广度优先搜索bfs,方法:从图指定的起点v0出发,访问与它相邻的所有顶点w1,w2,.然后再依次访问w1,w2.邻接的尚未被访问的所有顶点,再从这些顶点出发访问与它们相邻接的尚未被访问的顶点,直到所有顶点均被访问过为止.,例:,顶点的访问序列:V1V2V3V4V5V6V7V8,7.4 图的最小生成树,7.4.1 无向图的连通分量和生成树 1.连通分量 非连通图的每一个连通部分叫连通分量.,P159 G3 图7.3(a)邻接
9、表,说明:该图中包括三个连通分量,若按dfs分别从三个顶点(I,D,B)出发可得到三个连通分量的顶点序列:I,G,K,HD,EB,M,L,J,A,F,C,2.图的生成树 图中全部顶点和搜索过程所经过的边,构成该连通图的生成树.例如上图搜索遍历后得到的三棵树,由此可以总结生成树的特点:任意两个顶点之间有且仅有一条路径如再增加一条边,就会出现一条回路,如果去掉一条边此子图就会变成非连通图.,7.4.2 最小生成树 1 什么叫最小生成树 给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.2.求最小生成树的算法 克鲁斯卡尔算法 普里姆算法,例:,克鲁斯卡尔算法
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 869 数据结构 语言版 章图
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5632978.html