自考数据结构02142-第五章ppt课件.ppt
《自考数据结构02142-第五章ppt课件.ppt》由会员分享,可在线阅读,更多相关《自考数据结构02142-第五章ppt课件.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确第第五五章章 图图5 5.1.1 图的基本概念图的基本概念5 5.2.2 图的存储结构图的存储结构5 5.3.3 图的遍历图的遍历5 5.4.4 图的应用图的应用在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确一、图的定义一、图的定义图图G G 是由集合是由集合V V和和E E组成,记成组成,记成G=G=(V V,E E)其中:其中:V V 顶点集顶点集(非空);(非空);E E 边集边集(可空)。(可空)。边是顶点的有序对或无
2、序对。边是顶点的有序对或无序对。(边反映了两顶点之间的关系)(边反映了两顶点之间的关系)有向图有向图:边是顶点的有序对的图。:边是顶点的有序对的图。(图中每条边都用箭头指明了方向)(图中每条边都用箭头指明了方向)无向图无向图:边是顶点的无序对的图。:边是顶点的无序对的图。5.1 5.1 图的基本概念图的基本概念在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确例:例:V(G1)=1,2,3,4E(G1)=(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)(图(图G1)(无向图)(无向图)V(G2)=1,2,3,4,5
3、,6,7E(G2)=(1,2),(1,3),(2,4),(2,5),(3,6),(3,7)(图(图G2)V(G3)=1,2,3E(G3)=,(图(图G3)(有向图)(有向图)注:注:1 1)边集可空;)边集可空;2 2)边集中不允许出现相同的边。)边集中不允许出现相同的边。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确二、图的基本术语二、图的基本术语顶点顶点(Vertex)(Vertex)图中的数据元素;图中的数据元素;V有向图中有向图中,顶点顶点V Vi i到到 顶点顶点V Vj j的边的边,也称也称弧弧;弧弧头头(终端点):箭头
4、端;(终端点):箭头端;弧弧尾尾(初始点):无箭头端;(初始点):无箭头端;完全图完全图无向完全图:无向完全图:边数边数=n*(n-1)/2=n*(n-1)/2的无向图;的无向图;有向完全图:有向完全图:边数边数=n*(n-1)=n*(n-1)的有向图;的有向图;(顶点数顶点数n)n)权权图的边附带的数值图的边附带的数值(可表示从一个顶点到另一(可表示从一个顶点到另一 顶点的距离、代价等)顶点的距离、代价等)子图子图图图G G和和G,G,若有若有V(G)V(G)V(G)V(G)和和 E(G)E(G)E(G),(G),则称则称GG为图为图G G的子图。的子图。(图(图G1)(图(图G2)(图(图
5、G3)在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确邻接邻接若若(V(Vi i,V,Vj j)E(G)E(G),则称,则称V Vi i和和V Vj j互为邻接点互为邻接点;关联关联若若(V(Vi i,V,Vj j)E(G)E(G),则称边,则称边(V(Vi i,V,Vj j)关联于关联于顶顶 点点V Vi i和和V Vj j;注:注:1 1)邻接是指顶点之间的关系,而关联是指边)邻接是指顶点之间的关系,而关联是指边与与 顶点间的关系。顶点间的关系。2 2)若弧)若弧VE(G)E(G),则称,则称V Vj j是是V Vi i的邻接点的
6、邻接点度度无向图:顶点无向图:顶点V Vi i的度为与的度为与V Vi i相关联的边的个数;相关联的边的个数;D(VD(Vi i)有向图有向图出度出度:顶点顶点V Vi i的出度为以的出度为以V Vi i为尾的出边数;为尾的出边数;OD(VOD(Vi i)入度入度:顶点顶点V Vi i的入度为以的入度为以V Vi i为头的入边数;为头的入边数;ID(VID(Vi i)度度:有向图的度有向图的度=入度入度+出度;出度;D(VD(Vi i)D(V D(Vi i)=OD(V)=OD(Vi i)+ID(V)+ID(Vi i)在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,
7、由浅入深,所提出的问题也很明确注:注:图中边数图中边数e e与顶点的度的关系与顶点的度的关系 e=e=2 21 1ni=1i=1D(Vi)(一边带二度,两度组成一边)(一边带二度,两度组成一边)路径路径图中,顶点图中,顶点VpVp至顶点至顶点VqVq的路径是顶点序列的路径是顶点序列 Vp,V Vp,Vi1i1,V,Vi2i2,V,Vinin,Vq ,Vq 且且 对无向图,边对无向图,边(Vp,V(Vp,Vi1i1),(V),(Vi1i1,V,Vi2i2),(V),(Vinin,Vq)VR(G);,Vq)VR(G);对有向图,弧对有向图,弧Vp,V,VR(G);,VqVR(G);路径长度路径长度
8、路径上边或弧的数目;路径上边或弧的数目;简单简单路径路径序列中顶点不重复出现的路径;序列中顶点不重复出现的路径;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确回路回路第一个和最后一个顶点相同的路径,也称环;第一个和最后一个顶点相同的路径,也称环;简单回路简单回路除第一个和最后一个外,其余各顶除第一个和最后一个外,其余各顶 点均不相同的点均不相同的回路回路;注:回路中可以有多个圈,而简单回路只能有一个圈。注:回路中可以有多个圈,而简单回路只能有一个圈。连通连通无向图中,若从顶点无向图中,若从顶点V Vi i到到V Vj j顶点有路顶点
9、有路径,则称径,则称V Vi i和和V Vj j是连通的。是连通的。连通图连通图和和连通分量连通分量针对无向图而言针对无向图而言在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确l生成树生成树含有该连通图的全部顶点的一含有该连通图的全部顶点的一个极个极 小连通子图小连通子图 若连通图若连通图G G的顶点个数为的顶点个数为n n,则,则G G的生成的生成树的树的边边数为数为n-1n-1。G G的子图的子图GG边数大于边数大于n-1,
10、n-1,则则GG中一定中一定有环有环。G G的子图的子图GG边数小于边数小于n-1,n-1,则则GG中一定中一定不连通。不连通。l生成森林生成森林在非连通图中,每个连通分在非连通图中,每个连通分量都可得到一个极小连通子图,也就是生量都可得到一个极小连通子图,也就是生成树。这些生成树就组成了一个非连通图成树。这些生成树就组成了一个非连通图的生成森林。的生成森林。在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确图的基本运算图的基本运算建立图建立图GreateGraph(G,V,E)GreateGraph(G,V,E)取顶点信息取顶点信息G
11、etvex(G,u)Getvex(G,u)取边信息取边信息Getarc(G,u,v)Getarc(G,u,v)查询第一个邻接点查询第一个邻接点FirstVex(G,u)FirstVex(G,u)查询下一个邻接点查询下一个邻接点NextVex(G,u,v)NextVex(G,u,v)插入顶点插入顶点InsertVex(G,v)InsertVex(G,v)删除顶点删除顶点DeleteVex(G,v)DeleteVex(G,v)插入边插入边InsertArc(G,v,w)InsertArc(G,v,w)删除边删除边DeleteArc(G,v,w)DeleteArc(G,v,w)遍历图遍历图Trave
12、rs(G,tag)Travers(G,tag)在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确5.2.1 5.2.1 邻接矩阵表示法邻接矩阵表示法 5.2 5.2 图的存储结构图的存储结构1 1、图的邻接矩阵、图的邻接矩阵 表示图的各顶点之间关系的矩阵。表示图的各顶点之间关系的矩阵。定义定义 设设G=(V,E)G=(V,E)是是n n个顶点的图,则个顶点的图,则G G的的 邻接矩阵为下列邻接矩阵为下列n n阶方阵:阶方阵:Aij=1若若(V(Vi i,V,Vj j)或或 VE(G)E(G)0否则否则 在整堂课的教学中,刘教师总是让学生
13、带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确G1=0111101011011010(图(图G1)(图(图G2)010101000G2=例:例:结论:结论:(1 1)无向图的邻接矩阵是对称的;)无向图的邻接矩阵是对称的;((V(Vi i,V,Vj j)E(G)E(G),则,则(V(Vj j,V,Vi i)E(G)E(G))(2 2)从邻接矩阵容易判断任意两顶点间是否有边相联;)从邻接矩阵容易判断任意两顶点间是否有边相联;容易求出各顶点的度;容易求出各顶点的度;无向图:无向图:顶点顶点V Vi i的度的度D(VD(Vi i)=)=矩阵中第矩阵中第i i行的行的1 1总
14、和总和 有向图:有向图:OD(VOD(Vi i)=)=矩阵中第矩阵中第i i行的行的1 1总和总和 ID(VID(Vi i)=)=矩阵中第矩阵中第i i列的列的1 1总和总和在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确2 2、带权图带权图(网网)的邻接矩阵的邻接矩阵 Aij=Aij=w wijij 若若(V(Vi i,V,Vj j)或或 VE(G)E(G)V Vi i、V Vj j间无边或弧间无边或弧(W Wijij为边或弧的权为边或弧的权)3 3、邻接矩阵的类型定义、邻接矩阵的类型定义 c const int vnum=20;o
15、nst int vnum=20;const int MAX_INT=32767;const int MAX_INT=32767;Typedef struct gpTypedef struct gp VertexType vexsvnum;VertexType vexsvnum;/顶点信息顶点信息 WeightType WeightType arcsvnumvnum;arcsvnumvnum;/带权带权邻接邻接矩阵矩阵 int vexnum,arcnum;int vexnum,arcnum;/顶点数,边数顶点数,边数 W WGraph;Graph;在整堂课的教学中,刘教师总是让学生带着问题来学习
16、,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确将矩阵将矩阵A A的每个元素都初始化为最大值。的每个元素都初始化为最大值。然后读入边和权值(然后读入边和权值(i i,j j,w wijij),将),将A A的相应元素的相应元素设为设为w wijij。算法如下:。算法如下:4 4、建立无向带权邻接矩阵:、建立无向带权邻接矩阵:VoidCreatGraph(Graph*g)inti,j,n,e,w;charch;scanf(“%d%d”,&n,&e);g-vexnum=n;g-arcnum=e;for(i=0;ivexnum;i+)scanf(“%c”,&ch);g-vexsi=ch;
17、for(i=0;ivexnum;i+)for(j=0;jvexnum;j+)g-arcsij=MAX_INT;for(k=0;karcnum;k+)scanf(“%d%d%d”,&i,&j,&w);g-arcsij=w;g-arcsji=w;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确1.定义:定义:对图对图G G中每个顶点都建立一个单链表,第中每个顶点都建立一个单链表,第i i个个2.2.单链表(称单链表(称边表边表)链接图中与顶点链接图中与顶点V Vi i相邻接的所有相邻接的所有顶点。顶点。结点形式:结点形式:邻接点域邻接点域
18、(顶点域):(顶点域):存放与顶点存放与顶点V Vi i相邻接相邻接顶点顶点V Vj j的序号的序号j j;链域链域:指向:指向V Vi i的下一个邻接点;的下一个邻接点;每个链表均设一表头结点(以向量存储,称每个链表均设一表头结点(以向量存储,称顶点表顶点表)表头结点:表头结点:ViVi第第i i个链表的表头结点;个链表的表头结点;Vi.vertex Vi.vertex 存放顶点存放顶点V Vi i的信息;的信息;Vi.Vi.firstarc 指向指向V Vi i的邻接链表的第一个结点。的邻接链表的第一个结点。5.2.2 5.2.2 邻接表表示法邻接表表示法 在整堂课的教学中,刘教师总是让学
19、生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确3.结论:结论:1 1)n n个顶点个顶点、e e条边条边的无向图,则其邻接表的表头的无向图,则其邻接表的表头结点数为结点数为n n,链表结点总数为链表结点总数为2e2e;2 2)对于)对于无向图,第无向图,第i i个链表的结点数为顶点个链表的结点数为顶点V Vi i的度的度;对于对于有向图,第有向图,第i i个链表的结点数为顶点个链表的结点数为顶点V Vi i的出的出度;度;3 3)在边稀疏时,邻接表比邻接矩阵省单元;)在边稀疏时,邻接表比邻接矩阵省单元;4 4)邻接表表示在检测边数方面比邻接矩阵表示效)邻接表表示在
20、检测边数方面比邻接矩阵表示效率率 要高。要高。2.例:例:(P136图图5-10中中G2的邻接表)的邻接表)(P137图图5-11中中G1的邻接表)的邻接表)在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确0 01 12 23 34 40241341212表头向量表头向量 adjlist adjlistV V1 1V V2 2V V3 3V V4 4V V5 5 例:例:0 01 12 2表头向量表头向量 adjlist adjlist102在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出
21、的问题也很明确4.4.邻接表的类型定义:邻接表的类型定义:#definevnum20Typedefstructarcnodeintadjvex;/下一条边的顶点编号下一条边的顶点编号WeightTypeweight;/带权图的权值域带权图的权值域structarcnode*nextarc;/指向下一条边的指针指向下一条边的指针ArcNode;Typedefstructvexnodeintvertex;/顶点编号顶点编号ArcNode*firstarc;/指向第一条边的指针指向第一条边的指针AdjListvnum;TypedefstructgpAdjListadjlist;intvexnum,a
22、rcnum;/顶点和边的个数顶点和边的个数Graph;在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确对于对于无向图,第无向图,第i i个链表的结点数为顶点个链表的结点数为顶点V Vi i的度的度;对于对于有向图,第有向图,第i i个链表的结点数只为顶点个链表的结点数只为顶点V Vi i的出度;的出度;若要求入度,必须遍历整个邻接表。在单链表中,其若要求入度,必须遍历整个邻接表。在单链表中,其邻接点域的值为邻接点域的值为i i的结点个数是顶点的结点个数是顶点V Vi i的入度。的入度。对于有向图,有时候就要建立一个对于有向图,有时候就
23、要建立一个逆逆邻接表。即邻接表。即对对每每个顶点个顶点V Vi i建立一个以建立一个以V Vi i为弧头的邻接点的链表。这样,为弧头的邻接点的链表。这样,逆邻接表第逆邻接表第i i个单链表中的结点个数就是个单链表中的结点个数就是V Vi i的入度。的入度。5.5.计算计算图的度图的度例:图例:图5-2中中G1的邻接表和逆邻接表见的邻接表和逆邻接表见P137图图5-11在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确结点形式:结点形式:6.6.带权图邻接表带权图邻接表adjvex weight nextarc权值域:用于存储边的权值权值
24、域:用于存储边的权值画出画出图图5-1a5-1a无向带权图的邻接表。无向带权图的邻接表。图图5-8a5-8a有向带权图的邻接表、逆邻接表。有向带权图的邻接表、逆邻接表。建立有向图的邻接表的方法:建立有向图的邻接表的方法:l将邻接表表头数组初始化将邻接表表头数组初始化;l第第i i个表头的个表头的vertexvertex域初始化为域初始化为i i;lfirstfirst域初始化为域初始化为NULL;NULL;l读入顶点对读入顶点对,产生一个表结点;产生一个表结点;l将将j j放入到该结点的放入到该结点的adjvexadjvex域;域;l将该结点链到邻接表的表头数组的第将该结点链到邻接表的表头数组
25、的第i i个元素的个元素的firstfirst域上。域上。建立有向图的邻接表算法见P138在整堂课的教学中,刘教师总是让学生带着问题来学习,而问题的设置具有一定的梯度,由浅入深,所提出的问题也很明确5.3 5.3 图的遍历图的遍历遍历的含义及方法:遍历的含义及方法:图的遍历图的遍历从图从图G中某一顶点中某一顶点v出发,出发,顺顺序访问各顶点一次。序访问各顶点一次。方法:方法:深度优先搜索法深度优先搜索法广度优先搜索法广度优先搜索法为克服顶点的重复访问,设立辅助数组为克服顶点的重复访问,设立辅助数组visitedn。1顶点顶点i已被访问过已被访问过0顶点顶点i未被访问过未被访问过visitedi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自考 数据结构 02142 第五 ppt 课件
限制150内