数据结构-第6章-图课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据结构-第6章-图课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课件
- 资源描述:
-
1、 Office:西配楼西配楼304(软件教研室)(软件教研室)Email:北京林业大学信息学院北京林业大学信息学院北京林业大学信息学院北京林业大学信息学院线性结构一个对一个,如线性表、栈、队列树形结构一个对多个,如树集合数据元素间除“同属于一个集合”外,无其它关系图形结构多个对多个,如图逻辑结构逻辑结构北京林业大学信息学院北京林业大学信息学院6.16.1图的定义和基本术语图的定义和基本术语6.26.2案例引入案例引入6.36.3图的类型定义图的类型定义6.46.4图的存储结构图的存储结构6.56.5图的遍历图的遍历6.66.6图的应用图的应用6.76.7案例分析与实现案例分析与实现教学内容教学
2、内容北京林业大学信息学院北京林业大学信息学院1.1.掌握:图的基本掌握:图的基本概念及相关术语和性质概念及相关术语和性质2.2.熟练掌握:图的熟练掌握:图的邻接矩阵和邻接表邻接矩阵和邻接表两种存储表示方法两种存储表示方法3.3.熟练掌握:图的两种遍历方法熟练掌握:图的两种遍历方法DFSDFS和和BFSBFS4.4.熟练掌握:最短路算法(熟练掌握:最短路算法(DijkstraDijkstra算法算法)5.5.掌握:掌握:最小生成树最小生成树的两种算法及的两种算法及拓扑排序拓扑排序算法的思想算法的思想教学目标教学目标北京林业大学信息学院北京林业大学信息学院6.1 6.1 图的定义和术语图的定义和术
3、语V1V2V3V4G1V1V2V4V5G2V3图:图:Graph=(V,E)V:顶点:顶点(数据元素数据元素)的的有穷非空有穷非空集合;集合;E:边的:边的有穷有穷集合。集合。无向图:无向图:有向图:有向图:每条边都是无方向的每条边都是无方向的每条边都是有方向的每条边都是有方向的北京林业大学信息学院北京林业大学信息学院完全图:完全图:任意两个点都有一条边相连任意两个点都有一条边相连无向完全图无向完全图有向完全图有向完全图北京林业大学信息学院北京林业大学信息学院稀疏图稀疏图:有很少边或弧的图。:有很少边或弧的图。稠密图稠密图:有较多边或弧的图。:有较多边或弧的图。网网:边:边/弧带权的图。弧带权
4、的图。邻接邻接:有边:有边/弧相连的两个顶点之间的关系。弧相连的两个顶点之间的关系。存在存在(vi,vj),则称,则称vi和和vj互为互为邻接点邻接点;存在存在,则称,则称vi邻接到邻接到vj,vj邻接于邻接于vi 关联关联(依附依附):边边/弧与顶点之间的关系。弧与顶点之间的关系。存在存在(vi,vj)/,则称该边则称该边/弧关联于弧关联于vi和和vj北京林业大学信息学院北京林业大学信息学院顶点的度顶点的度:与该顶点相关联的边的数目,记为:与该顶点相关联的边的数目,记为TD(v)在在有向图有向图中中,顶点的度等于该顶点的顶点的度等于该顶点的入度入度与与出度出度之和。之和。顶点顶点 v 的入度
5、的入度是以是以 v 为终点的有向边的条数为终点的有向边的条数,记作记作 ID(v)顶点顶点 v 的出度的出度是以是以 v 为始点的有向边的条数为始点的有向边的条数,记作记作OD(v)问:问:当有向图中仅当有向图中仅1 1个顶点的入度为个顶点的入度为0,0,其其余顶点的入度均为余顶点的入度均为1 1,此时是何形状?,此时是何形状?答:答:是树!而且是一棵有向树!是树!而且是一棵有向树!北京林业大学信息学院北京林业大学信息学院路径路径:接续的边构成的顶点序列。:接续的边构成的顶点序列。路径长度路径长度:路径上边或弧的数目:路径上边或弧的数目/权值之和。权值之和。回路回路(环环):第一个顶点和最后一
6、个顶点相同的路径。第一个顶点和最后一个顶点相同的路径。简单路径:简单路径:除路径起点和终点可以相同外,其余顶点均不相同除路径起点和终点可以相同外,其余顶点均不相同的路径。的路径。简单回路简单回路(简单环简单环):除路径起点和终点相同外,其余顶点均不除路径起点和终点相同外,其余顶点均不相同的路径。相同的路径。北京林业大学信息学院北京林业大学信息学院 非连通图非连通图 连通图连通图 强连通图强连通图 非强连通图非强连通图 V0V0 V1V1 V2V2 V3V3 V0V0 V4V4 V3V3 V1V1 V2V2 V0V0 V1V1 V2V2 V3V3 V0V0 V2V2 V3V3 V1V1 V5V5
7、 V4V4在无(有)向图在无(有)向图G=(V,E)G=(V,E)中,若对任何两个顶中,若对任何两个顶点点 v v、u u 都存在从都存在从v v 到到 u u 的路径,则称的路径,则称G G是连通图是连通图(强连通图)。(强连通图)。北京林业大学信息学院北京林业大学信息学院(a)(a)(b)(b)(c)(c)V0V0 V4V4 V3V3 V1V1 V2V2 V0V0 V4V4 V3V3 V1V1 V2V2 V0V0 V4V4 V3V3 V1V1 V2V2设有两个图设有两个图G=G=(V V,EE)、)、G1=G1=(V1V1,E1E1),),若若V1V1 V V,E1 E1 E E,则称,则
8、称 G1G1是是G G的子图。的子图。例例:(b):(b)、(c)(c)是是 (a)(a)的子图的子图图中边或弧所具有的相关数称为权。表明从一个顶图中边或弧所具有的相关数称为权。表明从一个顶点到另一个顶点的距离或耗费。点到另一个顶点的距离或耗费。带权的图称为带权的图称为。北京林业大学信息学院北京林业大学信息学院非连通图非连通图 V0V0 V2V2 V3V3 V1V1 V5V5 V4V4无向图无向图G G 的极大连通子图称为的极大连通子图称为G G的连通分量。的连通分量。极大连通子图意思是:该子图是极大连通子图意思是:该子图是 G G 连通子图,将连通子图,将G G 的任何不在该子图中的顶点加入
9、,子图不再连通。的任何不在该子图中的顶点加入,子图不再连通。V0V0 V2V2 V3V3 V1V1 V5V5 V4V4连通分量连通分量北京林业大学信息学院北京林业大学信息学院有向图有向图G G 的极大强连通子图称为的极大强连通子图称为G G的强连通分量。的强连通分量。极大强连通子图意思是:该子图是极大强连通子图意思是:该子图是G G的强连通子图的强连通子图,将,将D D的任何不在该子图中的顶点加入,子图不再的任何不在该子图中的顶点加入,子图不再是强连通的。是强连通的。强连通分量强连通分量 V0V0 V1V1 V2V2 V3V3 V0V0 V2V2 V3V3 V1V1北京林业大学信息学院北京林业
10、大学信息学院:该子图是:该子图是G G 的连通子图,在该子图的连通子图,在该子图中删除任何一条边,子图不再连通。中删除任何一条边,子图不再连通。包含无向图包含无向图G G 所有顶点的极小连通子图。所有顶点的极小连通子图。对非连通图,由各个连通分量的生成树对非连通图,由各个连通分量的生成树的集合。的集合。连通图连通图 G1G1G1G1的生成树的生成树 V0V0 V4V4 V3V3 V1V1 V2V2 V0V0 V4V4 V3V3 V1V1 V2V2 V0V0 V4V4 V3V3 V1V1 V2V2北京林业大学信息学院北京林业大学信息学院6.2 6.2 案例引入案例引入案例案例6.1 6.1:六度
11、空间理论:六度空间理论你和任何一个陌生人之你和任何一个陌生人之间所间隔的人不会超过间所间隔的人不会超过6 6个,也就是说,最多通个,也就是说,最多通过过6 6个中间人你就能够认个中间人你就能够认识任何一个陌生人。识任何一个陌生人。北京林业大学信息学院北京林业大学信息学院6.3 6.3 图的类型定义图的类型定义CreateGraph(&G,V,VR)CreateGraph(&G,V,VR)初始条件:初始条件:V V是图的顶点集,是图的顶点集,VRVR是图中弧的集合。是图中弧的集合。操作结果:按操作结果:按V V和和VRVR的定义的定义构造图构造图G G。DFSTraverse(G)DFSTrav
12、erse(G)初始条件:图初始条件:图G G存在。存在。操作结果:对图进行操作结果:对图进行深度深度优先遍历。优先遍历。BFSTraverse(G)BFSTraverse(G)初始条件:图初始条件:图G G存在。存在。操作结果:对图进行操作结果:对图进行广度广度优先遍历。优先遍历。北京林业大学信息学院北京林业大学信息学院6.4 6.4 图的存储结构图的存储结构邻接表邻接表邻接多重表邻接多重表十字链表十字链表链式存储结构:链式存储结构:顺序存储结构:顺序存储结构:数组表示法(邻接矩阵)数组表示法(邻接矩阵)多重链表多重链表重点介绍:重点介绍:北京林业大学信息学院北京林业大学信息学院 ,),(,.
13、否否则则或或者者如如果果01AEjiEjijiEdgev建立一个建立一个顶点表顶点表(记录各个顶点信息)(记录各个顶点信息)和一个和一个邻接矩邻接矩阵阵(表示各个顶点之间关系)(表示各个顶点之间关系)。v设图设图 A=(A=(V V,E E)有有 n n 个顶点,则图的邻接矩阵是个顶点,则图的邻接矩阵是一个二维数组一个二维数组 A.EdgennA.Edgenn,定义为:,定义为:数组(邻接矩阵)表示法数组(邻接矩阵)表示法北京林业大学信息学院北京林业大学信息学院邻接矩阵:A.Edge=(v1 v2 v3 v4 v5 )v1v2v3v4v50 0 0 0 00 0 0 0 00 0 0 0 00
14、 0 0 0 00 0 0 0 0分析分析1 1:无向图的邻接矩阵是无向图的邻接矩阵是对称对称的;的;分析分析2 2:顶点顶点i i 的的度度第第 i i 行行(列列)中中1 1 的个数的个数;特别:特别:完全图完全图的邻接矩阵中,对角元素为的邻接矩阵中,对角元素为0 0,其余,其余1 1。0 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 10 1 1 1 00 1 0 1 01 0 1 0 10 1 0 1 11 0 1 0 10 1 1 1 0顶点表:无向图的邻接矩阵表示法无向图的邻接矩阵表示法v1v2v3v5v4v4北京林业大学信息学院北京林业大学信息学院有向图的邻接
15、矩阵有向图的邻接矩阵可能是不对称可能是不对称的。的。顶点的顶点的出度出度=第第i i行元素之和行元素之和 顶点的顶点的入度入度=第第i i列元素之和列元素之和 顶点的顶点的度度=第第i i行元素之和行元素之和+第第i i列元素之和列元素之和 v1v2v3v4邻接矩阵:A.Edge=(v1 v2 v3 v4)v1v2v3v40 0 0 00 0 0 0 0 0 0 0 0 0 0 0 注:注:在有向图的邻接矩阵中,在有向图的邻接矩阵中,第第i i行含义:以结点行含义:以结点v vi i为尾的弧为尾的弧(即出度边);即出度边);第第i i列含义:以结点列含义:以结点v vi i为头的弧为头的弧(即
16、入度边)。即入度边)。顶点表:0 1 1 00 0 0 0 0 0 0 1 1 0 0 0 0 1 1 00 0 0 0 0 0 0 1 1 0 0 0 有向图的邻接矩阵表示法有向图的邻接矩阵表示法北京林业大学信息学院北京林业大学信息学院定义为:定义为:A.Edge i j=Wij 或(或(vi,vj)VR 无边(弧)无边(弧)v1v2v3v4Nv5v65489755613邻接矩阵:N.Edge=(v1 v2 v3 v4 v5 v6 )顶点表:5 7 4 8 9 5 6 5 3 1 5 7 4 8 9 5 6 5 3 1 网(即有权图)的邻接矩阵表示法网(即有权图)的邻接矩阵表示法北京林业大学
17、信息学院北京林业大学信息学院优点:优点:容易实现图的操作,如:求某顶点的度、判容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边、找顶点的邻接点等等。断顶点之间是否有边、找顶点的邻接点等等。缺点:缺点:n n个顶点需要个顶点需要n n*n n个单元存储边个单元存储边;空间效率为空间效率为O(nO(n2 2)。对稀疏图而言尤其浪费空间。对稀疏图而言尤其浪费空间。邻接矩阵表示法的特点邻接矩阵表示法的特点北京林业大学信息学院北京林业大学信息学院/用两个数组分别存储顶点表和邻接矩阵用两个数组分别存储顶点表和邻接矩阵#define MaxInt 32767 /表示极大值,即表示极大值,即#defi
18、ne MVNum 100 /最大顶点数最大顶点数 typedef char VerTexType;/假设顶点的数据类型为字符型假设顶点的数据类型为字符型 typedef int ArcType;/假设边的权值类型为整型假设边的权值类型为整型 typedef struct VerTexType vexsMVNum;/顶点表顶点表 ArcType arcsMVNumMVNum;/邻接矩阵邻接矩阵 int vexnum,arcnum;/图的当前点数和边数图的当前点数和边数 AMGraph;邻接矩阵的存储表示邻接矩阵的存储表示北京林业大学信息学院北京林业大学信息学院(1 1)输入)输入总顶点数和总边数
19、总顶点数和总边数。(2 2)依次输入)依次输入点的信息存入顶点表点的信息存入顶点表中。中。(3 3)初始化邻接矩阵初始化邻接矩阵,使每个权值初始化为极大值。,使每个权值初始化为极大值。(4 4)构造邻接矩阵构造邻接矩阵。【算法思想算法思想】采用邻接矩阵表示法创建无向网采用邻接矩阵表示法创建无向网4 5A B C DA B 500A C 200A D 150B C 400C D 600 北京林业大学信息学院北京林业大学信息学院Status CreateUDN(AMGraph&G)/采用邻接矩阵表示法,创建无向网采用邻接矩阵表示法,创建无向网G cinG.vexnumG.arcnum;/输入总顶点
20、数,总边数输入总顶点数,总边数 for(i=0;iG.vexsi;/依次输入点的信息依次输入点的信息 for(i=0;iG.vexnum;+i)/初始化邻接矩阵,边的权值均置为极大值初始化邻接矩阵,边的权值均置为极大值 for(j=0;jG.vexnum;+j)G.arcsij=MaxInt;for(k=0;kv1v2w;/输入一条边依附的顶点及权值输入一条边依附的顶点及权值 i=LocateVex(G,v1);j=LocateVex(G,v2);/确定确定v1和和v2在在G中的位置中的位置 G.arcsij=w;/边边的权值置为的权值置为w G.arcsji=G.arcsij;/置置的对称边
21、的对称边的权值为的权值为w /for return OK;/CreateUDN【算法描述算法描述】4 5A B C DA B 500A C 200A D 150B C 400C D 600北京林业大学信息学院北京林业大学信息学院 int LocateVex(MGraph G,VertexType u)/存在则返回存在则返回u在顶点表中的下标在顶点表中的下标;否则返回否则返回-1 int i;for(i=0;iG.vexnum;+i)if(u=G.vexsi)return i;return-1;4 5A B C DA B 500A C 200A D 150B C 400C D 600北京林业大学
22、信息学院北京林业大学信息学院v 对每个顶点对每个顶点vi 建立一个建立一个单链表单链表,把与,把与vi有关联的有关联的边的信息链接边的信息链接起来,每个结点设为起来,每个结点设为3个域;个域;adjvex nextarcinfodatafirstarc邻接点域邻接点域,表表示示vi一个邻接一个邻接点的位置点的位置链域链域,指向指向vi下一个边下一个边或弧的结点或弧的结点数据域数据域,与与边有关信息边有关信息(如权值)(如权值)数据域数据域,存存储顶点储顶点vi 信信息息链域链域,指向,指向单链表的第单链表的第一个结点一个结点邻接表(链式)表示法邻接表(链式)表示法北京林业大学信息学院北京林业大
23、学信息学院0123413341420注:注:邻接表不唯一邻接表不唯一,因各个边结点的链入顺序是任意的,因各个边结点的链入顺序是任意的v1v2v3v4v5231420无向图的邻接表表示无向图的邻接表表示空间效率为空间效率为O(n+2e)O(n+2e)。若是稀疏图若是稀疏图(en(eG.vexnumG.arcnum;/输入总顶点数,总边数输入总顶点数,总边数 for(i=0;i G.verticesi.data;/输入顶点值输入顶点值 G.verticesi.firstarc=NULL;/初始化表头结点的指针域为初始化表头结点的指针域为NULL /for for(k=0;kv1v2;/输入一条边依
24、附的两个顶点输入一条边依附的两个顶点 i=LocateVex(G,v1);j=LocateVex(G,v2);p1=new ArcNode;/生成一个新的边结点生成一个新的边结点*p1 p1-adjvex=j;/邻接点序号为邻接点序号为j p1-nextarc=G.verticesi.firstarc;G.verticesi.firstarc=p1;/将新结点将新结点*p1插入顶点插入顶点vi的边表头部的边表头部 p2=new ArcNode;/生成另一个对称的新的边结点生成另一个对称的新的边结点*p2 p2-adjvex=i;/邻接点序号为邻接点序号为i p2-nextarc=G.verti
25、cesj.firstarc;G.verticesj.firstarc=p2;/将新结点将新结点*p2插入顶点插入顶点vj的边表头部的边表头部 /for return OK;/CreateUDG【算法描述算法描述】北京林业大学信息学院北京林业大学信息学院优点:优点:空间效率高,容易寻找顶点的邻接点;空间效率高,容易寻找顶点的邻接点;缺点:缺点:判断两顶点间是否有边或弧,需搜索两结判断两顶点间是否有边或弧,需搜索两结点对应的单链表,没有邻接矩阵方便。点对应的单链表,没有邻接矩阵方便。邻接表表示法的特点邻接表表示法的特点北京林业大学信息学院北京林业大学信息学院v1v2v3v5v4v443210133
展开阅读全文