图图类-遍历-应用ppt课件.ppt
《图图类-遍历-应用ppt课件.ppt》由会员分享,可在线阅读,更多相关《图图类-遍历-应用ppt课件.ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LOGOChapter12 图中国地质大学信息工程学院中国地质大学信息工程学院中国地质大学信息工程学院中国地质大学信息工程学院2023/1/182023/1/181LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能n12.1 图的基本概念和基本术语图的基本概念和基本术语n12.2 图的应用示例图的应用示例n12.4 抽象数据类型抽象数据类型Graph和和Diagraphn12.5 无向图无向图、有向图及网络的描述、有向图及网络的描述n12.7 图的类定义图的类定义n12.8 图的遍历图的遍历n12.10 图的搜索算法图的搜索算
2、法n12.11 图的应用图的应用内容提要内容提要2LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能12.7 12.7 类定义类定义v无权有向图和无向图可以看作每条边的权是无权有向图和无向图可以看作每条边的权是无权有向图和无向图可以看作每条边的权是无权有向图和无向图可以看作每条边的权是1 1的加的加的加的加权有向图和无向图。权有向图和无向图。权有向图和无向图。权有向图和无向图。v无向图可以看作:无向图可以看作:无向图可以看作:无向图可以看作:可以看作边可以看作边可以看作边可以看作边(i i,j j)和边和边和边和边(j j,i
3、 i)都存在的有向图;都存在的有向图;都存在的有向图;都存在的有向图;也可以看作所有边的权均为也可以看作所有边的权均为也可以看作所有边的权均为也可以看作所有边的权均为1 1 的加权图;的加权图;的加权图;的加权图;或者看作所有边的权为或者看作所有边的权为或者看作所有边的权为或者看作所有边的权为1 1,若边,若边,若边,若边(i i,j j)存在,则边存在,则边存在,则边存在,则边(j j,i i)也存在的加权有向图。也存在的加权有向图。也存在的加权有向图。也存在的加权有向图。3LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能
4、邻接矩阵邻接矩阵描述的图类关系描述的图类关系AdjacencyWDigraphAdjacencyWDigraphAdjacencyWGraphAdjacencyWGraphAdjacencyDigraphAdjacencyDigraphAdjacencyGraphAdjacencyGraph AdjacencyWDigraphAdjacencyWDigraph(加权有向图(加权有向图(加权有向图(加权有向图的耗费邻接矩阵)的耗费邻接矩阵)的耗费邻接矩阵)的耗费邻接矩阵)AdjacencyWGraphAdjacencyWGraph(加权图)(加权图)(加权图)(加权图)AdjacencyDigr
5、aphAdjacencyDigraph(有向图)(有向图)(有向图)(有向图)AdjacencyGraphAdjacencyGraph(无向图)(无向图)(无向图)(无向图)4LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能12.7.2 12.7.2 邻接矩阵类邻接矩阵类加权有向图的耗费邻接矩阵(程序加权有向图的耗费邻接矩阵(程序加权有向图的耗费邻接矩阵(程序加权有向图的耗费邻接矩阵(程序12-112-112-112-1)templatetemplateclass class AdjacencyWDigraph Adjace
6、ncyWDigraph friend AdjacencyWGraph;friend AdjacencyWGraph;public:public:AdjacencyWDigraph(int Vertices=10,T noEdge=0);AdjacencyWDigraph(int Vertices=10,T noEdge=0);AdjacencyWDigraph()Delete2DArray(a,n+1);AdjacencyWDigraph()Delete2DArray(a,n+1);bool Exist(int i,int j)const;bool Exist(int i,int j)cons
7、t;int Edges()const return e;int Edges()const return e;int Vertices()const return n;int Vertices()const return n;AdjacencyWDigraph&Add(int i,int j,const T&w);AdjacencyWDigraph&Add(int i,int j,const T&w);5LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能AdjacencyWDigraph&Delete(int i,int j);
8、AdjacencyWDigraph&Delete(int i,int j);int OutDegree(int i)const;int OutDegree(int i)const;int InDegree(int i)const;int InDegree(int i)const;private:private:T NoEdge;/T NoEdge;/用于没有边存在的情形用于没有边存在的情形用于没有边存在的情形用于没有边存在的情形int n;/int n;/顶点数目顶点数目顶点数目顶点数目int e;/int e;/边数边数边数边数T*a;/T*a;/二维数组二维数组二维数组二维数组;6LOGO
9、为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能AdjacencyWDigraphAdjacencyWDigraph构造函数构造函数templateAdjacencyWDigraph:templateAdjacencyWDigraph:AdjacencyWDigraphAdjacencyWDigraph(int Vertices,T noEdge)(int Vertices,T noEdge)/构造函数构造函数构造函数构造函数n=Vertices;n=Vertices;e=0;e=0;NoEdge=noEdge;NoEdge=noE
10、dge;Make2DArray(a,n+1,n+1);Make2DArray(a,n+1,n+1);/初始化为没有边的图初始化为没有边的图初始化为没有边的图初始化为没有边的图for(int i=1;i=n;i+)for(int i=1;i=n;i+)for(int j=1;j=n;j+)for(int j=1;j=n;j+)aij=aij=NoEdgeNoEdge;(n(n2 2)7LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能判断边是否存在判断边是否存在Exist(int i,int j)Exist(int i,int
11、j)templatetemplatebool AdjacencyWDigraph:bool AdjacencyWDigraph:ExistExist(int i,int j)const(int i,int j)const /边边边边(i,j)(i,j)存在吗存在吗存在吗存在吗?if(i 1|j n|j n|aij=NoEdge)if(i 1|j n|j n|aij=NoEdge)return false;return false;return true;return true;函数函数函数函数Exist Exist 的代码不能区分下面两种情况:的代码不能区分下面两种情况:的代码不能区分下面两种
12、情况:的代码不能区分下面两种情况:i i 或或或或j j 是否为有效顶点;是否为有效顶点;是否为有效顶点;是否为有效顶点;边边边边(i,j)(i,j)是否存在。是否存在。是否存在。是否存在。8LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能添加边添加边:Add:AddtemplateAdjacencyWDigraph&templateAdjacencyWDigraph&AdjacencyWDigraph:AdjacencyWDigraph:AddAdd(int i,int j,const T&w)(int i,int j,c
13、onst T&w)/如果边如果边如果边如果边(i,j)(i,j)不存在,则将该边加入有向图中不存在,则将该边加入有向图中不存在,则将该边加入有向图中不存在,则将该边加入有向图中if(i 1|j n|j n|i=j|aij!=NoEdge)if(i 1|j n|j n|i=j|aij!=NoEdge)throw BadInput();throw BadInput();aij=w;aij=w;e+;e+;return*this;return*this;(1)(1)9LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能删除边删除边:D
14、elete:Deletetemplate AdjacencyWDigraph&template AdjacencyWDigraph&AdjacencyWDigraph:AdjacencyWDigraph:DeleteDelete(int i,int j)(int i,int j)/删除边删除边删除边删除边(i,j).(i,j).if(i 1|j n|j n|aij=NoEdge)if(i 1|j n|j n|aij=NoEdge)throw BadInput();throw BadInput();aij=NoEdge;aij=NoEdge;e-;e-;return*this;return*th
15、is;(1)(1)10LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能求顶点出度求顶点出度:OutDegree:OutDegreetemplatetemplateint AdjacencyWDigraph:int AdjacencyWDigraph:OutDegreeOutDegree(int i)const(int i)const/返回顶点返回顶点返回顶点返回顶点i i的出度的出度的出度的出度if(i n)throw BadInput();if(i n)throw BadInput();/计算顶点计算顶点计算顶点计算顶点i
16、 i的出度的出度的出度的出度int sum=0;int sum=0;for(int j=1;j=n;j+)for(int j=1;j=n;j+)if(if(aijaij!=NoEdge)sum+;!=NoEdge)sum+;return sum;return sum;(n)(n)遍历第遍历第i行中行中有效边的条数有效边的条数11LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能求顶点入度求顶点入度:InDegree:InDegreetemplatetemplateint AdjacencyWDigraph:int Adjace
17、ncyWDigraph:InDegreeInDegree(int i)const(int i)const/返回顶点返回顶点返回顶点返回顶点i i的入度的入度的入度的入度if(i n)throw BadInput();if(i n)throw BadInput();/计算顶点计算顶点计算顶点计算顶点i i的入度的入度的入度的入度int sum=0;int sum=0;for(int j=1;j=n;j+)for(int j=1;j=n;j+)if(if(ajiaji!=NoEdge)sum+;!=NoEdge)sum+;return sum;return sum;(n)(n)遍历第遍历第i列中列
18、中有效边的条数有效边的条数12LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能无向加权图的定义(程序无向加权图的定义(程序12-212-2)templatetemplateclass class AdjacencyWGraphAdjacencyWGraph:public AdjacencyWDigraph :public AdjacencyWDigraph public:public:AdjacencyWGraph(int Vertices=10,T noEdge=0):AdjacencyWGraph(int Vertice
19、s=10,T noEdge=0):AdjacencyWDigraph(Vertices,noEdge)AdjacencyWDigraph(Vertices,noEdge)AdjacencyWGraph&Add(int i,int j,const T&w)AdjacencyWGraph&Add(int i,int j,const T&w)AdjacencyWDigraph:AdjacencyWDigraph:Add(i,j,w)Add(i,j,w);aji=waji=w;return*this;return*this;AdjacencyWGraph&Delete(int i,int j)Adja
20、cencyWGraph&Delete(int i,int j)AdjacencyWDigraph:Delete(i,j);AdjacencyWDigraph:Delete(i,j);aji=NoEdgeaji=NoEdge;return*this;return*this;int Degree(int i)const return int Degree(int i)const return OutDegree(i);OutDegree(i);1)无向图的邻接矩阵)无向图的邻接矩阵是对称的是对称的2)派生类中如何解决)派生类中如何解决同名函数的屏蔽问题同名函数的屏蔽问题13LOGO为深入学习习近平
21、新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能无向图的定义(程序无向图的定义(程序12-412-4)class class AdjacencyGraphAdjacencyGraph:public AdjacencyWGraph:public AdjacencyWGraph public:public:AdjacencyGraph(int Vertices=10):AdjacencyGraph(int Vertices=10):AdjacencyWGraph(Vertices,AdjacencyWGraph(Vertices,0 0)Adjacen
22、cyGraph&Add(int i,int j)AdjacencyGraph&Add(int i,int j)AdjacencyWGraph AdjacencyWGraph:Add(i,j,1):Add(i,j,1);return*this;return*this;AdjacencyGraph&Delete(int i,int j)AdjacencyGraph&Delete(int i,int j)AdjacencyWGraphAdjacencyWGraph:Delete(i,j):Delete(i,j);return*this;return*this;14LOGO为深入学习习近平新时代中国特
23、色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能有向图的定义(程序有向图的定义(程序12-312-3)class class AdjacencyDigraphAdjacencyDigraph:public AdjacencyWDigraph:public AdjacencyWDigraph public:public:AdjacencyDigraph(int Vertices=10):AdjacencyDigraph(int Vertices=10):AdjacencyWDigraph(Vertices,0)AdjacencyWDigraph(Vertices
24、,0)AdjacencyDigraph&Add(int i,int j)AdjacencyDigraph&Add(int i,int j)AdjacencyWDigraph:AdjacencyWDigraph:Add(i,j,1)Add(i,j,1);return*this;return*this;AdjacencyDigraph&Delete(int i,int j)AdjacencyDigraph&Delete(int i,int j)AdjacencyWDigraph:Delete(i,j);AdjacencyWDigraph:Delete(i,j);return*this;return
25、*this;15LOGO为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能templatetemplateChain&Chain:Delete(T&x)Chain&Chain:Delete(T&x)/删除与删除与删除与删除与x x匹配的元素匹配的元素匹配的元素匹配的元素/如果不存在相匹配的元素,则引发异常如果不存在相匹配的元素,则引发异常如果不存在相匹配的元素,则引发异常如果不存在相匹配的元素,则引发异常BadInputBadInputChainNode*current=first,ChainNode*current=first,*t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图图类 遍历 应用 ppt 课件
限制150内