图本章说明课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《图本章说明课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 本章 说明 课件
- 资源描述:
-
1、数据结构数据结构返回主目录返回主目录q学习目标学习目标v领会图的类型定义。领会图的类型定义。v熟悉图的各种存储结构及其构造算法,了熟悉图的各种存储结构及其构造算法,了解各种存储结构的特点及其选用原则。解各种存储结构的特点及其选用原则。v熟练掌握图的两种遍历算法。熟练掌握图的两种遍历算法。v理解各种图的应用问题的算法。理解各种图的应用问题的算法。本章说明本章说明q重点和难点重点和难点v图的应用极为广泛,而且图的各种应用问图的应用极为广泛,而且图的各种应用问题的算法都比较经典,因此本章重点在于题的算法都比较经典,因此本章重点在于理解各种图的算法及其应用场合。理解各种图的算法及其应用场合。q知识点知
2、识点v图的类型定义、图的存储表示、图的图的类型定义、图的存储表示、图的深度深度优先搜索优先搜索遍历和图的遍历和图的广度优先搜索广度优先搜索遍历、遍历、无向网的无向网的最小生成树最小生成树、最短路径、最短路径、拓扑排拓扑排序序、关键路径、关键路径 本章说明本章说明7.1 图的定义和术语图的定义和术语 图图(Graph)图图G是由两个集合是由两个集合V和和VR组成组成的,记为的,记为G=(V,VR)其中:其中:V是是顶点顶点的有穷非空有限集的有穷非空有限集 VR是是两个顶点之间关系的两个顶点之间关系的有限集合,有限集合,即边集合,边是顶点的即边集合,边是顶点的无序对无序对或或有序对有序对 有向图有
3、向图有向图有向图G是由两个集合是由两个集合V和和VR组成组成的的 其中:其中:V是顶点的是顶点的有穷有穷非空有限集非空有限集 VR是是有向边有向边(也称(也称弧弧)的有限集合,)的有限集合,弧是弧是顶点的有序对顶点的有序对,记为,记为,v,w是是顶点,顶点,v为弧尾,为弧尾,w为弧头为弧头7.1 图的定义和术语图的定义和术语例如例如:G1=(V1,VR1)其中其中V1=1,2,3,4VR1=,有向图有向图G124137.1 图的定义和术语图的定义和术语 无向图无向图由顶点集和边集构成的图。由顶点集和边集构成的图。若若 VR 必有必有 VR,则称则称 (v,w)为顶点为顶点 v 和顶点和顶点 w
4、 之间存在一条之间存在一条边边。例如例如:G2=(V2,VR2)V2=A,B,C,D,E,FVR2=(A,B),(A,E),(B,E),(C,D),(D,F),(B,F),(C,F)无向无向图图G2251437.1 图的定义和术语图的定义和术语 有向完全图有向完全图有有n个顶点,个顶点,n(n-1)弧的弧的有向图有向图 无向完全图无向完全图有有n个顶点,个顶点,n(n-1)/2条条边的边的无向图无向图例例有向完全图有向完全图无向完全图无向完全图1232317.1 图的定义和术语图的定义和术语 稀疏图稀疏图有很少条边和弧有很少条边和弧(enlogn)的图的图 稠密图稠密图与稀疏图相反与稀疏图相反
5、 权权与图的边或弧相关的数与图的边或弧相关的数 网网带权的图带权的图 有向网有向网弧带权的图弧带权的图 无向网无向网边带权的图边带权的图ABECF1597211132 子图子图如果图如果图G(V,E)和图和图G(V,E),满足:,满足:V V 且且 E E,则称则称G 为为G的子图的子图 邻接点邻接点在无向在无向 图中一条边连起来图中一条边连起来 的两个顶点的两个顶点(v,v ),互称互称邻接点邻接点,称边,称边 (v,v )依附依附于顶点于顶点 v和和v 7.1 图的定义和术语图的定义和术语BBCAEFC7.1 图的定义和术语图的定义和术语ABECF顶点的顶点的度度(TD)=)=出度出度(O
6、D)+)+入度入度(ID)例如例如:ID(B)=2OD(B)=1TD(B)=3 顶点的度顶点的度 无向图中无向图中顶点的度顶点的度为与为与每个顶点相连的边数每个顶点相连的边数 有向图中有向图中顶点的度顶点的度为为:入度:以入度:以该顶点为头该顶点为头的弧的弧的数目的数目 出度:以出度:以该顶点为尾该顶点为尾的弧的弧的数目的数目7.1 图的定义和术语图的定义和术语 路径路径路径是一个顶点的序列路径是一个顶点的序列V=Vi,0,Vi,1,Vi,n,满足,满足(Vi,j-1,Vi,j)E 或或 E,(1j n)路径上边的数目称作路径上边的数目称作“路径长度路径长度”回路(环)回路(环)第一个顶点和最
7、后一个第一个顶点和最后一个顶点相同的路径顶点相同的路径 简单路径简单路径序列中序列中顶点不重复出现顶点不重复出现的的路径路径 简单回路简单回路除了第一个顶点和最后一除了第一个顶点和最后一个顶点外,个顶点外,其余顶点不重复出现其余顶点不重复出现的回路的回路7.1 图的定义和术语图的定义和术语连通连通从顶点从顶点V V到顶点到顶点W W有一条路有一条路径,则说径,则说V V和和W W是是连通的连通的连通图连通图图中图中任意个顶点都是任意个顶点都是连通的连通的例例G1G1245136路径:路径:1 1,2 2,3 3,5 5,6 6,3 3路径长度:路径长度:5 5简单路径:简单路径:1 1,2 2
8、,3 3,5 5回路:回路:1 1,2 2,3 3,5 5,6 6,3 3,1 1简单回路:简单回路:3 3,5 5,6 6,3 3例例连通图连通图245136连通分量连通分量指的是无向图中的极大连通子指的是无向图中的极大连通子图图强连通图强连通图有向图中,如果对每一对有向图中,如果对每一对V Vi i,V,Vj j V V,V Vi i V Vj j,从从V Vi i到到V Vj j 和从和从V Vj j到到 V Vi i都存都存在路径在路径强连通分量强连通分量指的是有向图中的极大强连指的是有向图中的极大强连通子图通子图7.1 图的定义和术语图的定义和术语强连通图强连通图3 35 56 6例
9、例例例245136非连通图非连通图7.1 图的定义和术语图的定义和术语生成树生成树是连通图的一个是连通图的一个极小极小连通子图,连通子图,它含有图的它含有图的全部顶点全部顶点,但只有足以构成一棵,但只有足以构成一棵树的树的n-1n-1条边条边生成森林生成森林对非连通图,各个连通分量的对非连通图,各个连通分量的生成树的集合生成树的集合ABCDEFCDABEF一个有向图及其生成森一个有向图及其生成森林林7.2 图的存储结构图的存储结构 图的数组图的数组(邻接矩阵邻接矩阵)存储表示存储表示 图的邻接表存储表示图的邻接表存储表示 有向图的十字链表存储表示有向图的十字链表存储表示 无向图的邻接多重表存储
10、表示无向图的邻接多重表存储表示7.2 图的存储结构图的存储结构 邻接矩阵邻接矩阵表示顶点间相联关系的矩阵表示顶点间相联关系的矩阵定义:设定义:设G=(V,E)是有是有n 1个顶点的图,个顶点的图,G的邻接矩阵的邻接矩阵A是具有以下性质的是具有以下性质的n阶方阵阶方阵,其它0E(G)v,v或)v,(v若1,jijijiA 图的数组图的数组(邻接矩阵邻接矩阵)存储表示存储表示7.2 图的存储结构图的存储结构00110001011101010101010100001100000000110有向图有向图G1v2v4v1v3无向无向图图G2v2v5v1v4v37.2 图的存储结构图的存储结构特点:特点:
11、无向图无向图的邻接矩阵的邻接矩阵对称对称,可压缩存储;有,可压缩存储;有n个顶点个顶点的无向图需存储空间为的无向图需存储空间为n(n+1)/2有向图有向图邻接矩阵邻接矩阵不一定对称不一定对称;有;有n个顶点的有向图个顶点的有向图需存储空间为需存储空间为n无向图中顶点无向图中顶点Vi的度的度TD(Vi)是邻接矩阵是邻接矩阵A中第中第i行行元素之和元素之和有向图中有向图中:顶点顶点Vi的出度是的出度是A中第中第i行元素之和行元素之和顶点顶点Vi的入度是的入度是A中第中第i列元素之和列元素之和网的邻接矩阵可定义为:网的邻接矩阵可定义为:ijij,(v,v)v,vE(G),ijA i j,其它7.2
12、图的存储结构图的存储结构5735487214263816例例23753186421457.2 图的存储结构图的存储结构 邻接矩阵的优缺点邻接矩阵的优缺点 优点优点:容易实现图的创建、销毁、查找顶点容易实现图的创建、销毁、查找顶点v v和返和返回回v v的值操作。容易判定顶点间有无边(弧),容的值操作。容易判定顶点间有无边(弧),容易计算顶点的度(出度、入度)易计算顶点的度(出度、入度)缺点:缺点:所占空间只和顶点个数有关,和边数无关,所占空间只和顶点个数有关,和边数无关,在在边边数数较少较少时,空间时,空间浪费浪费较大较大 邻接矩阵的存储表示邻接矩阵的存储表示#define INFINITY
13、INT_MAX#define MAX_VERTEX_NUM 20typedef enum DG,DN,AG,AN GraphKind;/有向图,有向网,无向图,无向网有向图,有向网,无向图,无向网7.2 图的存储结构图的存储结构typedef struct ArcCell /邻接矩阵邻接矩阵 VRType adj;/顶点关系类型顶点关系类型 InfoType *info;/该弧相关信息的指针该弧相关信息的指针ArcCell,AdjMatrixMAX_VERTEX_NUM MAX_VERTEX_NUM;typedef struct VertexType vexsMAX_VERTEX_NUM;/顶
14、点向量顶点向量 AdjMatrix arcs;/弧的信息弧的信息 int vexnum,arcnum;/顶点数和弧数顶点数和弧数 GraphKind kind;/图的种类图的种类MGraph;7.2 图的存储结构图的存储结构 建立无向图邻接矩阵的算法建立无向图邻接矩阵的算法 算法中:算法中:G.vexs,一维,顶点向量,一维,顶点向量 .arcs ,二维,邻接矩阵,二维,邻接矩阵 .vexnum,顶点数,顶点数 .arcnum,边数,边数7.2 图的存储结构图的存储结构 图的邻接表存储表示图的邻接表存储表示 邻接表邻接表是图的一种链式存储结构,为依附每是图的一种链式存储结构,为依附每个顶点的边
15、(或弧)建立一个单链表个顶点的边(或弧)建立一个单链表 顶点结构顶点结构 adjvexnextarcinfo表结点表结点datafirstarc头结点头结点顶点顶点位置位置下一下一条弧条弧相关相关信息信息顶点顶点数据数据第一第一条弧条弧V1V2 V3V40123V1V2V3V4V5012347.2 图的存储结构图的存储结构有向图有向图G12413无向无向图图G22514312 3 0 31 420 431 20 21 7.2 图的存储结构图的存储结构 图的图的邻接表邻接表存储表示存储表示#define MAX_VERTEX_NUM 20Typedef struct ArcNode /表结点表结
16、点 int Adjvex;/与与vi邻接的顶点的下标位置邻接的顶点的下标位置 struct ArcNode *nextarc;/与与vi邻接的下一个顶点邻接的下一个顶点 InfoType *info;/ArcNode;Typedef struct Vnode /头结点头结点 VertexType data;ArcNode *firstarc;Vnode,AdjListMAX_VERTEX_NUM;Typedef struct /图图 AdjList vertices;int vexnum,arcnum,kind;ALGraph;7.2 图的存储结构图的存储结构 邻接表是顶点的向量结构和边(弧)
17、的单链表结构邻接表是顶点的向量结构和边(弧)的单链表结构 每个顶点结点包括两个域,将每个顶点结点包括两个域,将n n个顶点放在一个向个顶点放在一个向量中(称为顺序存储的结点表);一个顶点的所有邻量中(称为顺序存储的结点表);一个顶点的所有邻接点链接成单链表,该顶点在向量中有一个指针域指接点链接成单链表,该顶点在向量中有一个指针域指向其第一个邻接点。向其第一个邻接点。邻接表的邻接表的优缺点优缺点 空间较省;空间较省;无向图无向图容易求容易求各顶点的各顶点的度度;表中结点个数是边的两倍;表中结点个数是边的两倍;有向图有向图容易求容易求顶点的顶点的出度出度;不容易求不容易求顶点的顶点的入度入度,要,
18、要遍历整个表。为了求顶点的入度,有时可设遍历整个表。为了求顶点的入度,有时可设逆邻接表逆邻接表(指向某顶点的邻接点链接成单链表)指向某顶点的邻接点链接成单链表)7.2 图的存储结构图的存储结构 建立邻接表的算法建立邻接表的算法 有向图有向图G12413V1V2V3V43 0 0 2 逆邻接表逆邻接表 第第i(i(下标下标i-1)i-1)链表的结点个数即为链表的结点个数即为ViVi顶点的入度。顶点的入度。7.2 图的存储结构图的存储结构 有向图的十字链表存储表示有向图的十字链表存储表示 十字链表结点结构十字链表结点结构tailvex headvex hlink tlink info弧结点弧结点d
19、ata firstin firstout顶点结点顶点结点弧尾弧尾位置位置弧头弧头位置位置弧尾相同的下弧尾相同的下一条弧指针一条弧指针弧相关信息弧相关信息的指针的指针弧头相同的弧头相同的下一条弧指下一条弧指针针指向该顶点指向该顶点第一条入弧第一条入弧指向该顶点指向该顶点第一条出弧第一条出弧7.2 图的存储结构图的存储结构例例v2v4v1v30 20 12 32 03 23 13 0 v1v2 v3v40123 7.2 图的存储结构图的存储结构 有向图十字链表存储表示有向图十字链表存储表示#define MAX_VERTEX_NUM 20typedef struct ArcBox /弧结点弧结点
20、int tailvex,hesdvex;struct ArcBox *hlink,*tlink;infoType *info;ArcBox;Typedef struct VexNode /顶点结点顶点结点 VertexType data;ArcBox *firstin,*firstout;VexNode;Typedef struct /顶点表顶点表 VexNode xlistMAX_VERTEX_NUM;/表头向量表头向量 int vexnum,arcnum;OLGraph;7.2 图的存储结构图的存储结构 建立有向图十字链表算法建立有向图十字链表算法 思想:思想:(1 1)初始化表头向量、数
21、据、指针)初始化表头向量、数据、指针 (2 2)输入一条弧,确定在)输入一条弧,确定在G G中位置,申请中位置,申请结点空间,赋值结点空间,赋值 (3 3)插入到十字链表中)插入到十字链表中 (4 4)若)若InInfoInInfo=1=1,输入其信息,输入其信息 (5 5)重复()重复(2 2)至()至(4 4),直到所有弧输),直到所有弧输入完为止。入完为止。7.2 图的存储结构图的存储结构 无向图的邻接多重表存储表示无向图的邻接多重表存储表示 邻接多重表结点结构邻接多重表结点结构mark ivex ilink jvexinfo边结点边结点jlinkdatafirstedge顶点结点顶点结
22、点i顶点顶点下一个依附下一个依附于于i顶点的边顶点的边j顶点顶点下一个依附下一个依附于于j顶点的边顶点的边第第1个依附于个依附于该顶点的边该顶点的边7.2 图的存储结构图的存储结构例例v1v2v4v5v30123v1v3v4v24v5 0 1 0 3 2 3 2 1 2 4 4 1 指向下一指向下一个依附于个依附于v1v1的边的边指向下一指向下一个依附于个依附于v2v2的边的边7.2 图的存储结构图的存储结构 无向图邻接多重表存储表示无向图邻接多重表存储表示#define MAX_VERTEX_NUM 20Typedef emnu unvisited,visited VisitIf;typed
23、ef struct ArcBox /弧结点弧结点 VisitIf mark;int ivex,jvex;struct EBox *ilink,*jlink;infoType *info;EBox;Typedef struct VexBox /顶点结点顶点结点 VertexType data;EBox *firstedge;/指向第指向第1条依附该顶点的边条依附该顶点的边VexBox;Typedef struct /顶点表顶点表 VexBox adjlistMAX_VERTEX_NUM;int vexnum,arcnum;AMLGraph;7.3 图的遍历图的遍历 从图的某顶点出发,对图中的每个
24、从图的某顶点出发,对图中的每个顶点进行一次访问且使每个顶点仅被访顶点进行一次访问且使每个顶点仅被访问一次的过程。问一次的过程。深度优先遍历深度优先遍历广度优先遍历广度优先遍历7.3 图的遍历图的遍历思想:思想:(1 1)从图的某一顶点)从图的某一顶点V0V0出发,访出发,访问该顶点;然后依次从问该顶点;然后依次从V0V0的的未被访问的未被访问的邻接邻接点出发,深度优先遍历图,直至图点出发,深度优先遍历图,直至图中所有和中所有和V0V0相通的顶点都被访问到;相通的顶点都被访问到;(2 2)若此时图中尚有顶点未被访若此时图中尚有顶点未被访问,则另选图中一个问,则另选图中一个未被访问的顶点未被访问的
25、顶点作作起点,重复上述过程,直至图中起点,重复上述过程,直至图中所有顶所有顶点点都被访问为止都被访问为止 深度优先遍历深度优先遍历7.3 图的遍历图的遍历V1V2V4V5V3V7V6V8例例1深度遍历:深度遍历:V1V1 V2 V2 V4 V4 V8 V8 V5 V5 V3 V3 V6 V6 V7V7V1V2V4V5V3V7V6V87.3 图的遍历图的遍历例例2V1V2V4V5V3V7V6V8例例3V1V2V4V5V3V7V6V8例例2:V1 V2 V4 V8 V5 V6 V3 V7例例3:V1 V2 V4 V8 V5 V6 V3 V7V1V2V4V5V3V7V6V8例例4例例4:V1 V2
展开阅读全文