- 1、本文档共124页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 图 7.1 图的定义和术语 图(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是顶点,v为弧尾,w为弧头。易知,v,w≠w,v 无向图——无向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对,记为(v,w)或(w,v),并且(v,w)=(w,v),顶点v和顶点W互为邻接点 有向完全图——在一个有向图中,如果任意两顶点之间都有方向互为相反的两条弧相连接。即n个顶点的有向图最大边数是n(n-1) 无向完全图——在一个无向图中,如果任意两顶点都有一条直接边相连接。即n个顶点的无向图最大边数是n(n-1)/2 权——与图的边或弧相关的数叫~ 网——带权的图叫~ 在实际应用中,权值可以有某种含义。比如,在一个反映城市交通线路的图中,边上的权值可以表示该条线路的长度或者等级;对于反映工程进度的图而言,边上的权值可以表示从前一个工程到后一个工程所需要的时间等等。 子图——如果图G(V,E)和图G’(V’,E’),满足: V’?V E’?E 则称G’为G的子图 顶点的度 无向图中,顶点的度为与每个顶点相连的边数 有向图中,顶点的度分成入度与出度 入度:以该顶点为头的弧的数目 出度:以该顶点为尾的弧的数目 若无向图G含有n个顶点,它的边的条数 若n-1条边, 则G是非连通图 若n-1条边, 则G一定有环路 若=n-1条边,则G不一定就是连通 特点: 无向图中, 无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行或第i列非0元(非∞元)之和 矩阵中非0元(非∞元)的个数的一半为图中边的数目 有向图中, 有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n2 顶点Vi的出度是A中第i行中非0元(非∞元)元素之和 顶点Vi的入度是A中第i列中非0元(非∞元)元素之和 矩阵中 非0元(非∞元)的个数为图中弧的数目 邻接表 邻接表(Adjacency List)是图的一种顺序存储与链式存储结合的存储方法。 它包括两部分:一部分是单链表,用来存放边的信息;另一部分是数组,主要用来存放顶点本身的数据信息。 特点 无向图中顶点Vi的度为第i个单链表中的结点数 有向图中 顶点Vi的出度为第i个单链表中的结点个数 顶点Vi的入度为整个单链表中邻接点域值是i的结点个数(必须遍历整个邻接表) 为了求入度的便利, 可以建立逆邻接表, 即链表为入边表; 逆邻接表:有向图中对每个结点建立以Vi为头的弧的单链表 网的邻接表示例说明 例:已知某网的邻接(出边)表,请画出该网络。 讨论:邻接表与邻接矩阵有什么异同之处? 7.3 图的遍历 深度优先遍历(DFS) 1. 方法: 从图的某一顶点V0出发,访问此顶点; 然后依次从V0的未被访问的邻接点出发,深度优先遍历图,直至图中所有和V0相通的顶点都被访问到; 若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止 以邻接矩阵为存储结构的深度优先遍历算法: 以邻接表为存储结构的深度优先遍历算法: 7.4 生成树 深度优先搜索遍历算法及广度优先搜索遍历算法中遍历图过程中历经边的集合和顶点集合一起构成连通图的极小连通子图。它是连通图的一颗生成树。 生成树 定义:是一个极小连通子图,它含有图中全部顶点,但只有n-1条边。 深度优先生成树:深度优先搜索遍历得到的生成树 广度优先生成树:由广度优先搜索遍历得到的生成树, 若一个图是非连通图,但有若干个连通分量,则通过深度优先搜索遍历或广度优先搜索遍历,不可以得到生成树,但可以得到生成森林,且若非连通图有n个顶点,m个连通分量,则可以遍历得到m棵生成树,合起来为生成森林,森林中包含n-m条树边。 典型用途: 构造最小生成树方法 方法一:普里姆(Prim)算法 算法思想:假设G=(V,E)是一个具有n 个顶点的连通网络,G’=(U,T)是G的最小生成树,其中U是G’的顶点集,T是G’的边集,U和T的初值均为空。 1、从V中任取一个顶点(假定为u1),将此顶点并入U中,此时最小生成树顶点集U={u1}; 2、从那些其一个端点已在U中,另一个端点仍
文档评论(0)