图及有向图的应用精品文稿.ppt

上传人:石*** 文档编号:52223400 上传时间:2022-10-22 格式:PPT 页数:13 大小:929.50KB
返回 下载 相关 举报
图及有向图的应用精品文稿.ppt_第1页
第1页 / 共13页
图及有向图的应用精品文稿.ppt_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《图及有向图的应用精品文稿.ppt》由会员分享,可在线阅读,更多相关《图及有向图的应用精品文稿.ppt(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、图及有向图的应用第1页,本讲稿共13页4.1 基本定义与术语基本定义与术语基本定义:基本定义:图的二元组定义:图图的二元组定义:图GG由两个集合由两个集合V V和和E E组成,记为:组成,记为:G=(V,E)G=(V,E)其中:其中:V V是顶点的有穷非空集合,是顶点的有穷非空集合,E E是是V V中顶点偶对(称为边)的有穷集中顶点偶对(称为边)的有穷集 有向图还是无向图,顶点数有向图还是无向图,顶点数n n、边数、边数e e和度数之间有如下关系:和度数之间有如下关系:其中:其中:n n为图中的顶点数,为图中的顶点数,e e为图中的边数,为图中的边数,D(Vi)D(Vi)为图中的第为图中的第i

2、 i顶点的度数顶点的度数 基本术语:基本术语:1.1.路路路路径径径径(PathPath)在在无无向向图图GG中中,如如果果存存在在一一个个顶顶点点序序列列vp,vp,vi1,vi1,vi2,vi2,vim,vim,vqvq,使使得得(vp,(vp,vi1)vi1),(vi1,(vi1,vi2)vi2),(vim,vq)(vim,vq)都属于都属于E(G)E(G),则称顶点,则称顶点vpvp到到vqvq存在一条路径(存在一条路径(PathPath)2.2.简简简简单单单单路路路路径径径径 如如如如果果果果一一一一条条条条路路路路径径径径上上上上除除除除vpvp和和和和vqvq外外外外,其其其其

3、余余余余顶顶顶顶点点点点均均均均不不不不相相相相同同同同,则则则则称称称称此此此此路路路路径径径径为为为为一一一一条条条条简简简简单单单单路路路路径径径径(这这这这里里里里vpvp和和和和vqvq可以相同也可以不同)可以相同也可以不同)可以相同也可以不同)可以相同也可以不同)第2页,本讲稿共13页3.3.简单回路简单回路 起点和终点都相同的简单路径称为简单回路(起点和终点都相同的简单路径称为简单回路(CycleCycle)。)。4.4.有根图和图的根有根图和图的根 在一个有向图中,如果存在一个顶点在一个有向图中,如果存在一个顶点v v,从,从v v可以到达图中其他所可以到达图中其他所有顶点,则

4、称此有向图为有根图,其中有顶点,则称此有向图为有根图,其中v v称作图的根。称作图的根。5.5.连通图和连通分量连通图和连通分量 在无向图中,如果从顶点在无向图中,如果从顶点V V到顶点到顶点VV有路径,则称有路径,则称V V和和VV是连通是连通的。如果对于图中的任意两个顶点的。如果对于图中的任意两个顶点ViVi和和VjVj都是连通的,则称都是连通的,则称GG为连通图为连通图 6.6.强连通图和强连通分量强连通图和强连通分量 在有向图在有向图GG中,若对于中,若对于V(G)V(G)中任意两个不同的顶点中任意两个不同的顶点vi vi和和vj vj,都存在从,都存在从vi vi到到vj vj以及从

5、以及从vj vj到到vi vi的路径,则称的路径,则称GG是强连通图。有向图的极大强连通子是强连通图。有向图的极大强连通子图称为图称为GG的强连通分量。的强连通分量。7.7.欧拉图欧拉图 如果图中存在一条通过图中每条边一次且仅一次的回路,则称此回如果图中存在一条通过图中每条边一次且仅一次的回路,则称此回路为欧拉回路,具有欧拉回路的图称为欧拉图路为欧拉回路,具有欧拉回路的图称为欧拉图 8.8.哈密顿图哈密顿图 若图若图GG中存在一条通过图中所有顶点一次且仅一次的回路,则称此中存在一条通过图中所有顶点一次且仅一次的回路,则称此回路为图的哈密顿回路;具有哈密顿回路的图称为哈密顿图回路为图的哈密顿回路

6、;具有哈密顿回路的图称为哈密顿图 第3页,本讲稿共13页4.2 图的存储结构图的存储结构4.2.1 4.2.1 图的邻接矩阵表示法图的邻接矩阵表示法图的邻接矩阵表示法图的邻接矩阵表示法1.1.图的邻接矩阵表示法图的邻接矩阵表示法图的邻接矩阵表示法图的邻接矩阵表示法在图的邻接矩阵表示法中,用一个顺序表来存储顶点信息,用邻接矩阵来表示顶点间的相邻关系。在图的邻接矩阵表示法中,用一个顺序表来存储顶点信息,用邻接矩阵来表示顶点间的相邻关系。2.2.邻接矩阵(邻接矩阵(邻接矩阵(邻接矩阵(Adacency MatrixAdacency Matrix)设设G=(V,E)G=(V,E)是具有是具有n n个顶

7、点的图,则个顶点的图,则GG的邻接矩阵是一个的邻接矩阵是一个n n阶方阵:阶方阵:4.2.2 邻接表表示法邻接表表示法第4页,本讲稿共13页4.2.2 邻接表表示法邻接表表示法图的邻接表表示法类似于树的孩子链表表示法图的邻接表表示法类似于树的孩子链表表示法 邻接表的类型定义如下:邻接表的类型定义如下:#define MaxVerNum 100#define MaxVerNum 100 /最大顶点数为最大顶点数为100100typedef struct nodetypedef struct node /边表结点边表结点 int adjvex;int adjvex;/邻接点域邻接点域 struct

8、 node*next;struct node*next;/链域链域 /若要表示边上的权,则应增加一个数据域若要表示边上的权,则应增加一个数据域EdgeNode;EdgeNode;typedef struct vnode typedef struct vnode /顶点表结点顶点表结点 VertexType vertex;VertexType vertex;/顶点域顶点域 EdgeNode*firstedge;EdgeNode*firstedge;/边表头指针边表头指针 VertexNode;VertexNode;typedef VertexNode AdjListMaxVertexNum;ty

9、pedef VertexNode AdjListMaxVertexNum;/AdjList/AdjList是邻接表类型是邻接表类型 typedef structtypedef struct AdjList adjlist;AdjList adjlist;/邻接表邻接表 int n,e;int n,e;图中当前顶点数和边数图中当前顶点数和边数 ALGraph;ALGraph;/对于简单的应用,无须定义此类型,可直接使用对于简单的应用,无须定义此类型,可直接使用AdjListAdjList类型类型第5页,本讲稿共13页4.3 图的遍历图的遍历 图的遍历基本方法有两种:深度优先搜索和广度优先搜索,这

10、两种方法都适用于有向图的遍历基本方法有两种:深度优先搜索和广度优先搜索,这两种方法都适用于有向图和无向图的遍历图和无向图的遍历 4.3.1 4.3.1 深度优先搜索深度优先搜索深度优先搜索深度优先搜索 特点:尽可能先对纵深方向进行搜索。特点:尽可能先对纵深方向进行搜索。基本思想是:以图中某个顶点基本思想是:以图中某个顶点v1v1为出发点,先访问为出发点,先访问v1v1,然后选一个,然后选一个v1v1的邻接点的邻接点v2v2,以,以v2v2为新的出发点继续进行深度优先搜索,直至图中所有顶点都被访问过。为新的出发点继续进行深度优先搜索,直至图中所有顶点都被访问过。搜索过程搜索过程:第6页,本讲稿共

11、13页4.3.2 4.3.2 广度优先搜索广度优先搜索广度优先搜索广度优先搜索特点:尽可能优先对横向搜索特点:尽可能优先对横向搜索 基本思想是:从图中某个顶点基本思想是:从图中某个顶点v1v1出发,访问了出发,访问了v1v1之后依次访问之后依次访问v1v1的所有邻接点;然后分别从的所有邻接点;然后分别从这些邻接点出发按深度优先搜索遍历图的其他顶点,直至所有顶点都被访问到这些邻接点出发按深度优先搜索遍历图的其他顶点,直至所有顶点都被访问到 广度优先搜索的过程广度优先搜索的过程:第7页,本讲稿共13页4.4 单源最短路径问题单源最短路径问题 单源最短路径问题是:给定带权有向图单源最短路径问题是:给

12、定带权有向图G=(V,E)G=(V,E)和源点和源点s s V V,找出从源点,找出从源点s s到到V V中其他各顶点的中其他各顶点的最短路径最短路径 迪杰斯特拉(迪杰斯特拉(DijkstraDijkstra)算法求单源最短路径)算法求单源最短路径 DijkstraDijkstra算法如下所示:算法如下所示:Dijkstra(G,D,s)Dijkstra(G,D,s)/用用DijkstraDijkstra算法求有向网算法求有向网GG的源点的源点s s到各顶点的最短路径长度到各顶点的最短路径长度 /以下是初始化操作以下是初始化操作 S=s;Ds=0;S=s;Ds=0;/设置初始的红点集及最短距离

13、设置初始的红点集及最短距离 for(all ifor(all i V-S)do V-S)do /对蓝点集中每个顶点对蓝点集中每个顶点i i Di=Gsi;Di=Gsi;/设置设置i i初始的估计距离为初始的估计距离为wswi /以下是扩充红点集以下是扩充红点集 for(i=0;in-1;i+)dofor(i=0;iDk+Gkj)if(DjDk+Gkj)/新红点新红点k k使原使原DjDj值变小时,用新路径的长度修改值变小时,用新路径的长度修改DjDj,使,使j j离离s s更近更近 Dj=Dk+Gkj;Dj=Dk+Gkj;第8页,本讲稿共13页4.5 顶点对之间最短路径顶点对之间最短路径 为了

14、求出每一对顶点之间的最短路径,可以应用为了求出每一对顶点之间的最短路径,可以应用dijkstradijkstra算法,分别以每个顶点为源点,求算法,分别以每个顶点为源点,求出从源点到各个顶点最短路径,除此之外,还可以应用另一种算法,称为出从源点到各个顶点最短路径,除此之外,还可以应用另一种算法,称为floydfloyd算法算法 floydfloyd算法的具体过程如下算法的具体过程如下 :void Floeyd(adjmatrix G,adjmatrix d,int n)void Floeyd(adjmatrix G,adjmatrix d,int n)/利用弗洛伊德算法求图利用弗洛伊德算法求图

15、GAGA每对顶点间的最短长度,对应存于二维数组每对顶点间的最短长度,对应存于二维数组A A中中 int i,j,k;int i,j,k;/给二维数组给二维数组d d赋初值,等于邻接矩阵赋初值,等于邻接矩阵GG for(i=0;in;i+)for(i=0;in;i+)for(j=0;jn;j+)for(j=0;jn;j+)dij=Gij;dij=Gij;/依次以每个顶点作为中间点,优化数组依次以每个顶点作为中间点,优化数组d d for(k=0;kn;k+)for(k=0;kn;k+)for(i=0;in;i+)for(i=0;in;i+)for(j=0;jn;j+)for(j=0;jn;j+)

16、if(i=k|j=k|i=j)if(i=k|j=k|i=j)continue;continue;if(dik+dkjdij)if(dik+dkjdij)dij=dik+dkj;dij=dik+dkj;第9页,本讲稿共13页4.6 拓扑排序拓扑排序 性序列称为满足拓扑次序(性序列称为满足拓扑次序(TopoiSical OrderTopoiSical Order)的序列,简称拓扑序列)的序列,简称拓扑序列 有向图拓扑排序算法的一般步骤如下:有向图拓扑排序算法的一般步骤如下:(1 1)从图中选择一个入度为)从图中选择一个入度为0 0的顶点,输出该顶点。的顶点,输出该顶点。(2 2)从图中删除该顶点及

17、其相关联的弧。)从图中删除该顶点及其相关联的弧。(3 3)重复执行()重复执行(1 1)、()、(2 2)直到所有顶点均被输出,或者图中再也没有入度为)直到所有顶点均被输出,或者图中再也没有入度为0 0的顶点(此种情况说的顶点(此种情况说明原有向图含有环)明原有向图含有环)第10页,本讲稿共13页拓扑排序算法如下拓扑排序算法如下:Status TopologicalSort(ALGraph G)Status TopologicalSort(ALGraph G)/有向图有向图GG采用邻接表存储结构采用邻接表存储结构 /若若GG无回路,则输出无回路,则输出GG的顶点的一个拓扑序列并返回的顶点的一个

18、拓扑序列并返回OKOK,否则,否则ERRORERROR FindInDegree(G,indegree);FindInDegree(G,indegree);InitStack(S);InitStack(S);for(i=0;iG.vexnum;i+)for(i=0;inextarc)for(p=G.verticesi.fristarc;p;p=p-nextarc)k=p-adjvex;k=p-adjvex;/对对i i号顶点的每个邻接点的入度减号顶点的每个邻接点的入度减1 1 if(!(-indegreek)Push(S,k);if(!(-indegreek)Push(S,k);/若入度减为若

19、入度减为0 0,则入栈,则入栈 if if(countG.vexnumcountG.vexnum)return ERROR;return ERROR;else return OK;else return OK;第11页,本讲稿共13页4.7 关键路径关键路径 在带权的有向图中,用顶点表示事件(在带权的有向图中,用顶点表示事件(eventevent),弧表示活动(),弧表示活动(activityactivity),权表示活动持),权表示活动持续的时间。于是,把这样的有向图称为关于边的活动网(续的时间。于是,把这样的有向图称为关于边的活动网(Activity On EdgeActivity On

20、Edge),简称),简称AOEAOE网,网,与此相对应,用顶点表示活动的先后顺序关系,这样的有向图称为关于顶点的活动网与此相对应,用顶点表示活动的先后顺序关系,这样的有向图称为关于顶点的活动网(Activity On Vertex NetworkActivity On Vertex Network),简称),简称AOVAOV网网 在在AOEAOE网中,由于有些活动可以并列进行,所以,完成工程最少时间是从起始点到结束点最长路网中,由于有些活动可以并列进行,所以,完成工程最少时间是从起始点到结束点最长路径的长度(路径的长度指的是这条路径的所有活动持续的时间之和)。把从起点到结束点具有最大长度径的长

21、度(路径的长度指的是这条路径的所有活动持续的时间之和)。把从起点到结束点具有最大长度的路称为关键路径(的路称为关键路径(critical pathcritical path)分析关键路径的目的是识别哪些活动是关键活动,以便提高关键活动的工效,缩短整个工程的完成分析关键路径的目的是识别哪些活动是关键活动,以便提高关键活动的工效,缩短整个工程的完成时间时间 第12页,本讲稿共13页小结小结 图结构是一种比树形结构更复杂的非线性结构。本章图结构是一种比树形结构更复杂的非线性结构。本章介绍了图的概念,图的存储结构,图的深度优先搜索和广介绍了图的概念,图的存储结构,图的深度优先搜索和广度优先搜索算法,以

22、及有向图的若干应用。度优先搜索算法,以及有向图的若干应用。本章首先介绍了图的基本概念及术语,然后介绍了图本章首先介绍了图的基本概念及术语,然后介绍了图的两种存储结构(邻接矩阵和邻接表)的表示方法;接着的两种存储结构(邻接矩阵和邻接表)的表示方法;接着引出图的两种遍历(深度优先搜索遍历和广度优先搜索遍引出图的两种遍历(深度优先搜索遍历和广度优先搜索遍历)的算法思想、步骤,并举了在两种存储结构上按上述历)的算法思想、步骤,并举了在两种存储结构上按上述两种遍历算法得到的序列;最后说明了几种有向图的应用两种遍历算法得到的序列;最后说明了几种有向图的应用实例。其中包括:最小生成树的概念和按构造最小生成树实例。其中包括:最小生成树的概念和按构造最小生成树的几种方法;拓扑排序的算法思想及可拓扑排序的基本条的几种方法;拓扑排序的算法思想及可拓扑排序的基本条件和关键路径的定义和构造算法等。件和关键路径的定义和构造算法等。第13页,本讲稿共13页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁