第08章 图精选文档.ppt
《第08章 图精选文档.ppt》由会员分享,可在线阅读,更多相关《第08章 图精选文档.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第08章 图本讲稿第一页,共五十五页 图论图论歌尼斯堡七桥问题:在图中找一条经过每边一次且仅一次的路欧拉回路。货郎担问题:在图中找一条经过每个点一次且仅一次的最短路。描述问题的重要工具描述问题的重要工具状态图关键路径问题:整个工程完成的时间为:从有向图的源点到汇点的最长路径。引ABCDADBCabcdefghk64521187244源点源点6174汇点汇点本讲稿第二页,共五十五页地理信息领域的应用地理信息领域的应用四色问题:任何一张地图只用四种颜色就能使具有共同边界的国家着上不同的颜色。最短路径问题:vi到vj使总费用最小的旅行路线。数字地面模型构网课外书目:课外书目:离散数学基础离散数学基础
2、 耿素云耿素云 清华大学出版社清华大学出版社 (图论基础)(图论基础)算法设计与分析算法设计与分析 吕国英吕国英 清华大学出版社清华大学出版社 (算法策略的基本思想)(算法策略的基本思想)计算几何计算几何 周培德周培德 清华大学出版社清华大学出版社 (图论问题的解法)(图论问题的解法)数据结构数据结构 Pascal&C+Pascal&C+薛超英薛超英 华中理工大学出版社华中理工大学出版社 (算法实现)(算法实现)本讲稿第三页,共五十五页图的基本概念和抽象数据类型图的基本概念和抽象数据类型图的存储结构图的存储结构邻接矩阵图的实现邻接矩阵图的实现图的遍历图的遍历最小生成树最小生成树最短路径最短路径
3、主主要要知知识识点点本讲稿第四页,共五十五页8.1 8.1 图的基本概念和抽象数据类型图的基本概念和抽象数据类型1.1.图的基本概念图的基本概念 图图是是由由顶顶点点集集合合及及顶顶点点间间的的关关系系集集合合组组成成的的一一种种数数据据结结构构。图图G的定义是:的定义是:G=(V,E)其中,其中,V=x|x某个数据元素集合某个数据元素集合E=(x,y)|x,yV或或E=x,y|x,yV并且并且Path(x,y)其其中中,(x,y)表表示示从从x到到y的的一一条条双双向向通通路路,即即(x,y)是是无无方方向向的的;Path(x,y)表表示示从从x到到y的的一一条条单单向向通通路路,即即Pat
4、h(x,y)是是有有方向的。方向的。本讲稿第五页,共五十五页基本术语:基本术语:(1)顶顶点点和和边边(Vertex,Edge):图图中中的的结结点点称称作作顶顶点点,图图中中的的第第i个个顶顶点点记记做做vi。两两个个顶顶点点vi和和vj相相关关联联称称作作顶顶点点vi和和vj之之间间有有一一条条边边,图图中中的的第第k条条边边记记做做ek,ek=(vi,vj)或)或vi,vj。(2)有有向向图图和和无无向向图图:在在有有向向图图中中,顶顶点点对对x,y是是有有序序的的,顶顶点点对对x,y称称为为从从顶顶点点x到到顶顶点点y的的一一条条有有向向边边,有有向向图图中中的的边边也也称称作作弧弧(
5、Arc);在在无无向向图图中中,顶点对(顶点对(x,y)是无序的,顶点对()是无序的,顶点对(x,y)称为与顶点)称为与顶点x和顶点和顶点y相关联的一条边。相关联的一条边。(3)完完全全图图:在在有有n个个顶顶点点的的无无向向图图中中,若若有有n(n-1)/2条条边边,即即任任意意两两个个顶顶点点之之间间有有且且只只有有一一条条边边,则则称称此此图图为为无无向向完完全全图图;在在有有n个个顶顶点点的的有有向向图图中中,若若有有n(n-1)条条边,即任意两个顶点之间有且只有方向相反的两条边,则称此图为边,即任意两个顶点之间有且只有方向相反的两条边,则称此图为有向完全图有向完全图。0 01 13
6、32 20 01 12 23 34 45 56 60 01 12 20 01 12 23 3(a)a)无向完全图无向完全图(b)b)无向图无向图(c)c)有向图有向图(d)d)有向完全图有向完全图本讲稿第六页,共五十五页(4)邻接顶点:)邻接顶点:在无向图在无向图G中,若(中,若(u,v)是)是E(G)中的一条边,则中的一条边,则称称u和和v互为邻接顶点,并称边(互为邻接顶点,并称边(u,v)依附于顶点)依附于顶点u和和v;在有向图;在有向图G中,若中,若u,v是是E(G)中的一条边,则称顶点中的一条边,则称顶点u邻接到顶点邻接到顶点v,顶点,顶点v邻邻接自顶点接自顶点u,并称边,并称边u,v
7、和顶点和顶点u和顶点和顶点v相相关联关联。(5)顶点的度()顶点的度(Degree):):顶点顶点v的度是与它相关联的边的条数,记的度是与它相关联的边的条数,记作作TD(v)。(6)路径()路径(Path/Route):):在图在图G=(V,E)中,若从顶点中,若从顶点vi出发有一出发有一组边使可到达顶点组边使可到达顶点vj,则称顶点,则称顶点vi到顶点到顶点vj的顶点序列为从顶点的顶点序列为从顶点vi到顶到顶点点vj的路径。的路径。0 01 13 32 20 01 12 23 34 45 56 60 01 12 20 01 12 23 3(a)a)无向完全图无向完全图(b)b)无向图无向图(
8、c)c)有向图有向图(d)d)有向完全图有向完全图本讲稿第七页,共五十五页(7)权()权(Weight):):有些图的边附带有数据信息,这些附带的数据信有些图的边附带有数据信息,这些附带的数据信息称为权。带权的图也称作息称为权。带权的图也称作网络或网网络或网。2135467879610612715163BACDE60304575804035施工进度图施工进度图交通网络图交通网络图(8)路路径径长长度度:对对于于不不带带权权的的图图,一一条条路路径径的的路路径径长长度度是是指指该该路路径径上上的的边边的的条条数数;对对于于带带权权的的图图,一一条条路路径径的的路路径径长长度度是是指指该该路路径径
9、上上各各个个边边权权值值的总和。的总和。(9)子子图图:设设有有图图G1=V1,E1和和图图G2=V2,E2,若若V2 V1且且E2 E1,则称图,则称图G2是图是图G1的子图。的子图。本讲稿第八页,共五十五页(10)连通图和强连通图:)连通图和强连通图:在无向图中,若从顶点在无向图中,若从顶点vi到顶点到顶点vj有路径,有路径,则称顶点则称顶点vi和顶点和顶点vj是连通的。如果图中任意一对顶点都是连通的,是连通的。如果图中任意一对顶点都是连通的,则称该图是连通图。图中的无向图则称该图是连通图。图中的无向图a和和b都是连通图。都是连通图。在有向图中,若对于任意一对顶点在有向图中,若对于任意一对
10、顶点vi和顶点和顶点vj(vivj)都存在路径,)都存在路径,则称图则称图G是是强连通图强连通图。图。图8-2中的有向图中的有向图d是强连通图。是强连通图。(11)生成树:)生成树:一个连通图的最小连通子图称作该图的生成树。一个连通图的最小连通子图称作该图的生成树。有有n个顶点的连通图的生成树有个顶点的连通图的生成树有n个顶点和个顶点和n-1条边。条边。(12)简单路径和回路:)简单路径和回路:若路径上各顶点若路径上各顶点v1,v2,vm,互不重复,则称互不重复,则称这样的路径为简单路径;若路径上第一个顶点这样的路径为简单路径;若路径上第一个顶点v1与最后一个顶点与最后一个顶点vm重合,重合,
11、则称这样的路径为回路或环则称这样的路径为回路或环。BACDFEACDFEB本讲稿第九页,共五十五页数据集合:数据集合:由一组顶点集合由一组顶点集合vi和一组边集合和一组边集合ej组成。当为带权组成。当为带权图时每条边上权图时每条边上权wj构成权集合构成权集合wi。操作集合:操作集合:(1)初始化初始化Initiate(G,n)(2)插入顶点插入顶点InsertVertex(G,vertex)(3)插入边插入边InsertEdge(G,v1,v2,weight)(4)删除边删除边DeleteEdge(G,v1,v2)(5)删除顶点删除顶点DeleteVertex(G,vertex)(6)第一个邻
12、接结点第一个邻接结点GetFirstVex(G,v)(7)下一个邻接结点下一个邻接结点GetNextVex(G,intv1,v2)(8)遍历遍历DepthFirstSearch(G)2.2.图的抽象数据类型图的抽象数据类型 BACDE60304575804035本讲稿第十页,共五十五页假假设设图图G=(V,E)有有n个个顶顶点点,即即V=v0,v1,vn-1,E可可用用如如下下形形式式的矩阵的矩阵A描述,对于描述,对于A中的每一个元素中的每一个元素aij,满足:,满足:由于矩阵由于矩阵A中的元素中的元素aij表示了顶点表示了顶点vi和顶点和顶点vj之间边的关系,或者之间边的关系,或者说,说,A
13、中的元素中的元素aij表示了顶点表示了顶点vi和顶点和顶点vj(0jn-1)的邻接关系,)的邻接关系,所以矩阵所以矩阵A称作邻接矩阵。称作邻接矩阵。8.2 8.2 图的存储结构图的存储结构图的存储结构主要有图的存储结构主要有邻接矩阵和邻接表邻接矩阵和邻接表两种。两种。1.1.图的邻接矩阵存储结构图的邻接矩阵存储结构 本讲稿第十一页,共五十五页无向图的邻接矩阵一定是对称矩阵无向图的邻接矩阵一定是对称矩阵 有向图的邻接矩阵一般是非对称矩阵有向图的邻接矩阵一般是非对称矩阵 其中其中V表示了图的顶点集合,表示了图的顶点集合,A表示了图的邻接矩阵表示了图的邻接矩阵 本讲稿第十二页,共五十五页带权图及其邻
14、接矩阵带权图及其邻接矩阵 其其中中V表表示示了了图图的的顶顶点点集集合合,A表表示示了了图图的的邻邻接接矩矩阵阵。对对于于带带权权图图,邻邻接接矩矩阵阵第第i行行中中所所有有0aij的的元元素素个个数数等等于于第第i个个顶顶点点的的出出度度,邻接矩阵第邻接矩阵第j列中所有列中所有0aij的元素个数等于第的元素个数等于第j个顶点的入度。个顶点的入度。本讲稿第十三页,共五十五页2.2.图的邻接表存储结构图的邻接表存储结构 当当图图的的边边数数少少于于顶顶点点个个数数且且顶顶点点个个数数值值较较大大时时,图图的的邻邻接接nnnn矩矩阵阵的的存存储储问问题题就就变变成成了了稀稀疏疏矩矩阵阵的的存存储储
15、问问题题,此此时时,邻邻接接表表就就是是一一种种较邻接矩阵更为有效的存储结构。较邻接矩阵更为有效的存储结构。BADCE(a)01234ABCDE0datasorce1432adjdest next23411 (b)4 数数组组的的data域域存存储储图图的的顶顶点点信信息息,sorce域域存存储储该该顶顶点点在在数数组组中中的的下下标标序序号号,adj域域为为该该顶顶点点的的邻邻接接顶顶点点单单链链表表的的头头指指针针。第第i行行单单链链表表中中的的dest域域存存储储所所有有起起始始顶顶点点为为vi的的邻邻接接顶顶点点vj在在数数组组中中的的下下标标序序号号,next域域为为单单链链表表中中
16、下下一一个个邻邻接接顶顶点点的的指指针针域域。如如果果是是带带权权图图,单单链链表表中中需再增加需再增加cost域,用来存储边域,用来存储边的权值的权值wij。本讲稿第十四页,共五十五页8.3 8.3 邻接矩阵图类邻接矩阵图类 1.1.邻接矩阵图类的设计和实现邻接矩阵图类的设计和实现 邻接矩阵图类实现如下:邻接矩阵图类实现如下:#includeSeqList.h/包含动态数组结构的顺序表类包含动态数组结构的顺序表类classAdjMWGraphprivate:SeqListVertices;/顶点顺序表顶点顺序表intEdgeMaxVerticesMaxVertices;/边权值数组边权值数组
17、intnumOfEdges;/边的个数边的个数voidDepthFirstSearch(constintv,intvisited,voidVisit(VerTitem);voidBroadFirstSearch(constintv,intvisited,voidVisit(VerTitem);本讲稿第十五页,共五十五页public:AdjMWGraph(constintsz=MaxVertices);/构造函数构造函数AdjMWGraph(void);/析构函数析构函数intNumOfVertices(void)/取顶点个数取顶点个数returnVertices.Size();intNumOf
18、Edges(void)/取边的个数取边的个数returnnumOfEdges;VerTGetValue(constintv);/取顶点数值取顶点数值intGetWeight(constintv1,constintv2);/取边的权值取边的权值voidInsertVertex(constVerT&vertex);/插入顶点插入顶点voidInsertEdge(constintv1,constintv2,intweight);/插入边插入边voidDeleteVertex(constintv);/删除顶点删除顶点voidDeleteEdge(constintv1,constintv2);/删除边删
19、除边本讲稿第十六页,共五十五页intGetFirstNeighbor(constintv);/取第一个邻接顶点取第一个邻接顶点intGetNextNeighbor(constintv1,constintv2);/取下一个邻接顶点取下一个邻接顶点voidDepthFirstSearch(voidVisit(VerTitem);/深度优先遍历深度优先遍历voidBroadFirstSearch(voidVisit(VerTitem);/广度优先遍历广度优先遍历;本讲稿第十七页,共五十五页AdjMWGraph:AdjMWGraph(constintsz):Vertices(sz)/构造函数构造函数f
20、or(inti=0;isz;i+)for(intj=0;jsz;j+)if(i=j)Edgeij=0;elseEdgeij=MaxWeight;numOfEdges=0;VerTAdjMWGraph:GetValue(constintv)/取顶点取顶点v的数值的数值if(vVertices.Size()cout参数参数v越界出错越界出错!endl;exit(0);returnVertices.GetData(v);本讲稿第十八页,共五十五页intAdjMWGraph:GetWeight(constintv1,constintv2)/取起始顶点为取起始顶点为v1、终止顶点为、终止顶点为v2的边的
21、权值的边的权值if(v1Vertices.Size()|v2Vertices.Size()cout参数参数v1或或v2越界出错越界出错!endl;exit(0);returnEdgev1v2;voidAdjMWGraph:InsertVertex(constVerT&vertex)/插入顶点插入顶点vertex/把顶点把顶点vertex插入到顺序表的当前表尾位置插入到顺序表的当前表尾位置Vertices.Insert(vertex,Vertices.Size();本讲稿第十九页,共五十五页voidAdjMWGraph:InsertEdge(constintv1,constintv2,intwe
22、ight)/插入一条起始顶点为插入一条起始顶点为v1、终止顶点为、终止顶点为v2、权值为、权值为weight的边的边if(v1Vertices.Size()|v2Vertices.Size()cout参数参数v1或或v2越界出错越界出错!endl;exit(0);Edgev1v2=weight;/插入边插入边numOfEdges+;/边的个数加边的个数加1本讲稿第二十页,共五十五页voidAdjMWGraph:DeleteVertex(constintv)/删除顶点删除顶点v/删除所有包含顶点删除所有包含顶点v的边的边for(inti=0;iVertices.Size();i+)for(int
23、j=0;j0&EdgeijMaxWeight)Edgeij=MaxWeight;/把该边的权值置为无穷大把该边的权值置为无穷大numOfEdges-;/边的个数减边的个数减1Vertices.Delete(v);/删除顶点删除顶点v本讲稿第二十一页,共五十五页voidAdjMWGraph:DeleteEdge(constintv1,constintv2)/删除一条起始顶点为删除一条起始顶点为v1、终止顶点为、终止顶点为v2的边的边if(v1Vertices.Size()|v2Vertices.Size()|v1=v2)cout参数参数v1或或v2出错出错!endl;exit(0);if(Edg
24、ev1v2=MaxWeight|v1=v2)cout该边不存在该边不存在!endl;exit(0);Edgev1v2=MaxWeight;/把该边的权值置为无穷大把该边的权值置为无穷大numOfEdges-;/边的个数减边的个数减1本讲稿第二十二页,共五十五页intAdjMWGraph:GetFirstNeighbor(constintv)/取顶点取顶点v的第一个邻接顶点。若存在返回该顶点的下标序号,否则返回的第一个邻接顶点。若存在返回该顶点的下标序号,否则返回-1if(vVertices.Size()cout参数参数v1越界出错越界出错!endl;exit(0);for(intcol=0;c
25、ol0&EdgevcolMaxWeight)returncol;return-1;本讲稿第二十三页,共五十五页intAdjMWGraph:GetNextNeighbor(constintv1,constintv2)/取顶点取顶点v1的邻接顶点的邻接顶点v2后的邻接顶点后的邻接顶点/若存在返回该顶点的下标序号,否则返回若存在返回该顶点的下标序号,否则返回-1if(v1Vertices.Size()|v2Vertices.Size()cout参数参数v1或或v2越界出错越界出错!endl;exit(0);for(intcol=v2+1;col0&Edgev1colMaxWeight)returnc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第08章 图精选文档 08 精选 文档
限制150内