第十三章、图.pptVIP

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十三章、图

第十三章 图 图的基本概念 图的存储结构 图的遍历 最短路径 生成树与最小生成树 图的基本概念 图(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为弧头 无向图——无向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对,记为(v,w)或(w,v),并且(v,w)=(w,v) 有向完全图——n个顶点的有向图最大边数是 子图——如果图G(V,E)和图G‘(V’,E‘),满足: V’?V E’?E 则称G‘为G的子图 顶点的度 无向图中,顶点的度为与每个顶点相连的边数,记TD(v) 有向图中,顶点的度分成入度与出度 入度:以该顶点为头的弧的数目,记为ID(v) 出度:以该顶点为尾的弧的数目,记为OD(v) 对于n个顶点、e条边的图,顶点vi的度与顶点的个数以及边的数目之间满足关系: 回路——第一个顶点和最后一个顶点相同的路径叫~ 简单回路——除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫~ 连通——从顶点V到顶点W有一条路径,则说V和W是连通的 连通图——无向图中任意两个顶点都是连通的叫~ 连通分量——无向图的极大连通子图叫~ 图的存储结构 存储结构应包含两个方面的信息: 顶点的信息 顶点之间关系——边(弧)的信息 邻接矩阵——表示顶点间相邻关系的矩阵 定义:设G=(V,E)是有n?1个顶点的图,G的邻接矩阵A是具有以下性质的n阶方阵 #define MaxVertexNum 100 //最大定点数设为100 typedef char VertexType; //顶点类型设为字符型 VertexType vexs[MaxVertexNum]; //顶点表 int n; //顶点数 邻接表 对每个顶点vi,将所有邻接于vi的顶点链成一个单链表,称为顶点的邻接表(边表); 图的遍历 深度优先遍历(DFS) 方法:从图的某一顶点V出发,访问此顶点;然后依次从V的未被访问的邻接点出发,深度优先遍历图,直至图中所有和V相通的顶点都被访问到;若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止 深度优先遍历算法 递归算法 广度优先遍历(BFS) 生成树与最小生成树 生成树和生成森林 最小生成树的概念 普里姆(Prim)算法构造最小生成树方法 算法思想:设N=(V,{E})是连通网,TE是N上最小生成树中边的集合 初始令U={u0},(u0?V), TE=? 在所有u?U,v?V-U的边(u,v)?E中,找一条代价最小的边(u0,v0) 将(u0,v0)并入集合TE,同时v0并入U 重复上述操作直至U=V为止,则T=(V,{TE})为N的最小生成树 克鲁斯卡尔(Kruskal)算法构造最小生成树方法 算法思想:设连通网N=(V,{E}),令最小生成树 初始状态为只有n个顶点而无边的非连通图T=(V,{?}),每个顶点自成一个连通分量 在E中选取代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边,选取下一条代价最小的边 依此类推,直至T中所有顶点都在同一连通分量上为止 最短路径 问题提出 迪杰斯特拉(Dijkstra)算法思想 求最短路径步骤 初使时令 S={V0},T={其余顶点},T中顶点对应的距离值 若存在V0,Vi,为V0,Vi弧上的权值 若不存在V0,Vi,为? 从T中选取一个其距离值为最小的顶点W,加入S 对T中顶点的距离值进行修改:若加进W作中间顶点,从V0到Vi的距离值比不加W的路径要短,则修改此距离值 重复上述步骤,直到S中包含所有顶点,即S=V为止 算法实现 每一对顶点之间的最短路径是 方法一:每次以一个顶点为源点,重复执行Dijkstra算法n次—— T(n)=O(n3) 方法二:弗洛伊德(Floyd)算法 算法思想:逐个顶点试探法 求最短路径步骤 初始时设置一个n阶方阵,令其对角线元素为0,若存在弧Vi,Vj,则对应元素为权值;否则为? 逐步试着在原直接路径中增加中间顶点,若加入中间点后路径变短,则修改之;否则,维持原值 所有顶点试探完毕,算法结束 问题提出 要在n个城市间建立通信联络网, 顶点——表示

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档