ch图实用学习教程.pptx
《ch图实用学习教程.pptx》由会员分享,可在线阅读,更多相关《ch图实用学习教程.pptx(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、哥尼斯堡七桥问题BDACABCD问题:如何不重复地走完问题:如何不重复地走完七桥后回到起点?七桥后回到起点?一笔画问题如何将此图一笔画出?欧拉(欧拉(1707178317071783)(17361736年解决该题)年解决该题)中国邮递员问题中国邮递员问题(19621962年管梅谷首次提出)年管梅谷首次提出)第1页/共70页周游世界问题问题:能否从某个城市出发,沿交问题:能否从某个城市出发,沿交通线路经过每个城市一次且仅一次,通线路经过每个城市一次且仅一次,最后回到出发点?最后回到出发点?哈密尔顿哈密尔顿(18591859年提出该问题)年提出该问题)第2页/共70页第七章 图7.1 图的定义和术
2、语图(Graph)图G是由两个集合V(G)和E(G)组成的,记为G=(V,E)其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对或有序对有向图有向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是有向边(也称弧)的有限集合,弧是顶点的有序对,记为,v、w是顶点,v为弧尾,w为弧头无向图无向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对,记为(v,w)或(w,v),并且(v,w)=(w,v)第3页/共70页例:例:v2v4v5v1v3v6G1图图G1中:中:V(G1)
3、=v1,v2,v3,v4,v5,v6E(G1)=,例:例:v1v5v7v3v2v4G2v6图图G2中:中:V(G2)=v1,v2,v3,v4,v5,v6,v7 E(G1)=(v1,v2),(v1,v3),(v2,v3),(v2,v4),(v2,v5),(v5,v6),(v5,v7)第4页/共70页有向完备图n个顶点的有向图最大边数是n(n-1)无向完备图n个顶点的无向图最大边数是n(n-1)/2权与图的边或弧相关的数叫网带权的图叫子图如果图G(V,E)和图G(V,E),满足:V VE E 则称G为G的子图顶点的度(Degree)无向图中,顶点v的度是和v相连的边的数目,记为TD(V)有向图中,
4、顶点的度分成入度(InDegree)与出度(OutDegree)入度:以该顶点v为头的弧的数目,记为ID(V)出度:以该顶点v为尾的弧的数目,记为OD(V)握手定理:一个有n个顶点,e条边或弧的图,满足如下关系第5页/共70页例:例:v2v1v3v2v1v3有向完备图有向完备图无向完备图无向完备图v3v5v6例:例:v2v4v5v1v3v6图与子图图与子图v2v4v5v1v3v6G2顶点顶点v2入度:入度:1 出度:出度:3顶点顶点v4入度:入度:1 出度:出度:0例:例:v1v5v7v3v2v4G1v6顶点顶点v v5的度:的度:3 3顶点顶点v v2的度:的度:4 4第6页/共70页v权与
5、边有关的数据信息称为权。v网边上带权的图称为网。v1v2v5v4v3176324 58无向网无向网BCA21435有向网有向网第7页/共70页v路径路径是一个顶点的序列V=Vi0,Vi1,Vin,满足(Vij-1,Vij)E 或 E,(1 j n)v路径长度沿路径边的数目或沿路径弧的数目之和v回路(或环)第一个顶点和最后一个顶点相同的路径叫v简单路径序列中顶点不重复出现的路径叫v简单回路(简单环)除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫v连通从顶点V到顶点W有一条路径,则说V和W是连通的v连通图无向图中任意两个顶点都是连通的图叫v连通分量指的是无向图中的极大连通子图,也就是非
6、连通图的每一个连通部分叫v强连通图有向图中,如果对每一对Vi、Vj V,Vi Vj,从Vi到Vj 和从Vj到 Vi都存在路径,则称G是v强连通分量指的是有向图的极大强连通子图第8页/共70页例:例:v1v5v7v3v2v4G2v6例:例:v2v4v5v1v3v6G1路径:路径:v1 v2 v3 v5 v6 v3路径长度:路径长度:5简单路径:简单路径:v1 v2 v3 v5回路:回路:v1 v2 v3 v5 v6 v3 v1简单回路:简单回路:v3 v5 v6 v3路径:路径:v1 v2 v5 v7 v6 v5 v2 v3路径长度:路径长度:7简单路径:简单路径:v1 v2 v5 v7 v6回
7、路:回路:v1 v2 v5 v7 v6 v5 v2 v1简单回路:简单回路:v1 v2 v3 v1第9页/共70页连通图连通图强连通图强连通图v3v5v6例:例:非强连通图非强连通图3 3个强连通分量个强连通分量例:例:v2v4v5v1v3v6例:例:ABLMCFDEGHKIJ非连通图非连通图3 3个连通分量个连通分量例:例:v2v4v5v1v3v6第10页/共70页生成树:所有顶点均由边连接在一起,但不存在回路的图叫生成树有深度优先生成树与广度优先生成树两种。一个连通图的生成树:一个有n个顶点连通图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的n1条边。所有生成树具有
8、以下特征:生成树的顶点个数与图的顶点个数相同;生成树是图的一个极小连通子图;一个有n个顶点的连通图的生成树有n-1条边;生成树中任意两个顶点间的路径是唯一的;在生成树中加一条边必然构成回路。注意:有n1条边的图不一定是生成树。生成森林:非连通图每个连通分量的生成树一起组成非连通图的有向树:一个有向图恰有一个顶点的入度为0,其余顶点的入度均为1,则是一棵一个有向图的生成森林:由若干棵有向树组成,含有图中全部顶点,但只有足以构成若干棵不相交的有向树的弧。GHKI第11页/共70页v5v1v3v2v4G G1 1的一棵生成树的一棵生成树例:例:v1v5v3v2v4G1ABLMCFJDEGHKI非连通
9、图非连通图G G2 2的生成森林的生成森林例:例:ABLMCFDEGHKIJ非连通图非连通图G G2 2第12页/共70页ABCFDEABCFED有向图有向图G3有向图有向图G3的生成森林的生成森林第13页/共70页6.2 图的存储结构多重链表例:例:G1v2v4v1v3例:例:v1v5v3v2v4G2V1V2 V4 V3 V1 V2 V4 V5 V3第14页/共70页一、数组表示法邻接矩阵表示顶点间相联关系的矩阵定义:设G=(V,E)是有n 1个顶点的图,G的邻接矩阵A是具有以下性质的n阶方阵例:例:G1v2v4v1v3例:例:v1v5v3v2v4G2第15页/共70页邻接矩阵的特点:无向图
10、的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为 n(n+1)/2有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n有向图的矩阵中1的个数为图中弧的数目;无向图的矩阵中1的个数的一半为图中边的数目无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和有向图中,顶点Vi的出度是A中第i行元素之和顶点Vi的入度是A中第i列元素之和网络的邻接矩阵可定义为:第16页/共70页网络的邻接矩阵网络的邻接矩阵例:例:v1v4v5v2v375318642网络网络第17页/共70页关联矩阵表示顶点与边的关联关系的矩阵v定义:设G=(V,E)是有n1个顶点,e0条边的图,G的关联矩阵A是具
11、有以下性质的ne阶矩阵第18页/共70页例:例:G1v2v4v1v31234例:例:v1v5v3v2v4G2123456第19页/共70页关联矩阵的特点关联矩阵每列只有两个非零元素,是稀疏矩阵;n越大,零元素比率越大无向图中顶点Vi的度TD(Vi)是关联矩阵A中第i行元素之和有向图中,顶点Vi的出度是A中第i行中1的个数顶点Vi的入度是A中第i行中1的个数第20页/共70页二、邻接表(Adjacency List)图的一种链式存储结构v邻接表是图的一种顺序存储与链式存储结合的存储方法。v邻接表表示法类似于树的孩子链表表示法,就是对于图G中的每个顶点vi,将所有邻接于vi的顶点链成一个单链表,这
12、个单链表就称为顶点vi的邻接表,再将所有的邻接表表头放到数组中,就构成了图的邻接表。其中,单链表中的结点称为表结点,每个单链表设的一个头结点称为头结点。v实现:为图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点vi的边(对有向图是指以顶点vi为尾的弧)。第21页/共70页v表头结点:表头结点:typedef struct VNode VertexType data;/存放顶点信息存放顶点信息 ArcNode *firstarc;/指示第一指示第一条依附该条依附该 顶点的边或弧的指针顶点的边或弧的指针VNode;#define M 20VNode AdjListM;/AdjList
13、0不用不用 data firstarc图的邻接表存储表示图的邻接表存储表示v表结点:表结点:typedef struct ArcNode int adjvex;/邻接点域,存放与邻接点域,存放与v vi i邻接的点在表头数组中的位置邻接的点在表头数组中的位置 struct ArcNode *nextarc;/链域,指示下一条边或弧链域,指示下一条边或弧的指针的指针 InfoType*info;/信息域,存放信息域,存放边或弧边或弧相关信息的指针相关信息的指针ArcNode;adjvex nextarc info第22页/共70页例:例:G2bdac例:例:aecbdG11234acdbdata
14、firstarc 3 2 4 1adjvex next1234acdbdatafirstarc 4 2 1 2adjvex next5e 4 3 5 1 5 3 2 3第23页/共70页图的邻接表特点无向图的邻接表中需要n个表头结点和2e个表结点有向图的邻接表中需要n个表头结点和e个表结点无向图中顶点Vi的度为第i个单链表中的表结点数有向图中顶点Vi的出度为第i个单链表中的表结点数顶点Vi的入度为整个单链表中邻接点域值是i的结点个数逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表例:例:Gbdac1234acdbdatafirstarc 4 1 1 3adjvex next第24页/共7
15、0页三、有向图的十字链表(Orthogonal List)弧结点:typedef struct ArcBox int tailvex,headvex;/弧尾、弧头在表头数组中的位置 struct ArcBox *hlink;/指向弧头相同的下一条弧的链域 struct ArcBox *tlink;/指向弧尾相同的下一条弧的链域ArcBox;tailvex headvex hlink tlink顶点结点:typedef struct VexNode VertexType data;/存与顶点有关信息 ArcBox *firstin;/指向以该顶点为弧头的第一个弧结点 ArcBox *firsto
16、ut;/指向以该顶点为弧尾的第一个弧结点OLGraph;OLGraph gM;/g0不用data firstin firstout第25页/共70页例:例:bdacab cd1234 1 3 1 2 3 4 3 1 4 3 4 2 4 1数据域 弧头链域 弧尾链域尾域 头域 弧头链域 弧尾链域第26页/共70页四、无向图的邻接多重表顶点结点:typedef struct dnode int data;/存与顶点有关的信息 struct node *firstedge;/指向第一条依附于该顶点的边DD;DD gaM;/ga0不用data firstedge边结点:typedef struct n
17、ode int mark;/标志域 int ivex,jvex;/该边依附的两个顶点在表头数组中位置 struct node *ilink,*jlink;/分别指向依附于ivex和jvex的下一条边JD;mark ivex ilink jvex jlink第27页/共70页例:例:aecbd1234acdb5e 1 2 1 4 3 4 3 2 3 5 5 2第28页/共70页 2929 课堂练习下面关于图的存储的叙述中,哪一个是正确的。A用邻接矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关 B用邻接矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关C用邻接表法存
18、储图,占用的存储空间数只与图中结点个数有关,而与边数无关D用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关 第29页/共70页7.3 图的遍历(Traversing Graph)图的遍历定义:从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历有四个难点:首结点、非连通图、回路、多个相连顶点深度优先遍历(Depth_First Search)方法:从图的某一顶点V0出发,访问此顶点;然后依次从V0的未被访问的邻接点出发,深度优先遍历图,直至图中所有和V0有路径相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起
19、点,重复上述过程,直至图中所有顶点都被访问到为止。V1V2V4V5V3V7V6V8例:例:深度优先遍历:深度优先遍历:V1 V2 V4 V8 V5 V3 V6 V7第30页/共70页深度优先遍历算法(需要采用栈来暂存顶点)递归算法开始访问V0,置标志求V0邻接点有邻接点w求下一邻接点wV0W访问过结束NYNYDFS开始标志数组初始化Vi=1Vi访问过DFSVi=Vi+1Vi=Vexnums结束NNYY第31页/共70页V1V2V4V5V3V7V6V8例:深度优先遍历:深度优先遍历:V11234v1v3v4v2vexdata firstarc 3 1 2 2adjvex next5v5 6 4
20、5 1 78 2 8v6v7v8678 3 7 3 6 4 5V2 V4 V8 V5 V3 V6 V7第32页/共70页深度优先遍历算法实现过程(从V V1 1出发,邻接表存储)v1v2v3v4v5v6v7v8231451672828373645v1v4v8v5v3v6v7112345678访问标志11v211111注注:1:1、从、从V V1 1出发,单击鼠标一次,完成一个结点出发,单击鼠标一次,完成一个结点的遍历,并找到未访问的邻结点;的遍历,并找到未访问的邻结点;2 2、访问标志为空时(算法中为、访问标志为空时(算法中为0 0)表示未被)表示未被访问,为访问,为1 1时表示本结点已访问;
21、时表示本结点已访问;3 3、每访问一个结点,该结点进栈,当栈顶、每访问一个结点,该结点进栈,当栈顶结点没有未被访问的邻点时,栈顶结点出栈。结点没有未被访问的邻点时,栈顶结点出栈。栈深度优先遍历结果:深度优先遍历结果:v1 v2 v4 v8 v5 v3 v6 v7第33页/共70页V1V2V4V5V3V7V6V8例:例:1234v1v3v4v2vexdata firstarc 3 6 8 2adjvex next5v5 7 4 2 8v6v7v8678 7深度优先遍历:深度优先遍历:V1 V2 V4 V8 V3 V6 V7 V5第34页/共70页广度优先遍历(Breadth_First Sear
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch 实用 学习 教程
限制150内