第7讲减治法应用图的遍历课程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 图 学习要点: 理解图的定义和与图相关的术语。 理解图是一个表示复杂非线性关系的数据结构。 掌握图的邻接矩阵表示及其实现方法。 掌握图的邻接表表示及其实现方法。 了解图的紧缩邻接表表示方法。 掌握图的广度优先搜索方法。 掌握图的深度优先搜索方法。 掌握单源最短路径问题的Dijkstra算法。 掌握有负权边的单源最短路径问题的Bellman-Ford算法 掌握所有顶点对之间最短路径问题的Floyd算法。 掌握构造最小支撑树的Prim算法。 掌握构造最小支撑树的Kruskal算法。 理解图的最大匹配问题的增广路径算法。 减治法 找到给定实例的解和同样问题但规模较小实例解得关系 自顶向下或自底向下运用该关系解决问题 减治法三种变种 减一个常量 减一个常量因子 减去规模可变 减一个常量 原理见课本p119 图5.1 例题1:求an 递归公式见课本p120 公式5.1 典型应用:图的遍历 第7章 图 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为弧头 无向图——无向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对,记为 (v,w)或(w,v),并且(v,w)=(w,v) 有向完备图——n个顶点的有向图最大边数是n(n-1) 无向完备图——n个顶点的无向图最大边数是n(n-1)/2 权——与图的边或弧相关的数叫~ 网——带权的图叫~ 子图——如果图G(V,E)和图G‘(V’,E‘),满足: V’?V E’?E 则称G‘为G的子图 顶点的度 无向图中,顶点的度为与每个顶点相连的边数 有向图中,顶点的度分成入度与出度 入度:以该顶点为头的弧的数目 出度:以该顶点为尾的弧的数目 路径——路径是顶点的序列V={Vi0,Vi1,……Vin},满足(Vij-1,Vij)?E 或 Vij-1,Vij?E,(1j?n) 路径长度——沿路径边的数目或沿路径各边权值之和 回路——第一个顶点和最后一个顶点相同的路径叫~ 简单路径——序列中顶点不重复出现的路径叫~ 简单回路——除了第一个顶点和最后一个顶点外,其余顶点不重复出现的回路叫~ 连通——从顶点V到顶点W有一条路径,则说V和W是连通的 连通图——图中任意两个顶点都是连通的叫~ 连通分量——非连通图的每一个连通部分叫~ 强连通图——有向图中,如果对每一对Vi,Vj?V, Vi?Vj,从Vi到Vj 和从Vj到 Vi都存在路径,则称G是~ 7.2 图的存储结构 邻接矩阵——表示顶点间相联关系的矩阵 定义:设G=(V,E)是有n?1个顶点的图,G的邻接矩阵A是具有以下性质的n阶方阵 特点: 无向图的邻接矩阵对称,可存储上(下)三角矩阵 有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n2 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和 有向图中, 顶点Vi的出度是A中第i行元素之和 顶点Vi的入度是A中第i列元素之和 带权图的邻接矩阵可定义为: 图的定义 public class Mgraph { int n;//图的当前顶点数 int [][] edges=new int[20][20];//邻接矩阵 int [] visited=new int[20];//顶点访问标记 int e;//图的当前边数}; 7.3 图的遍历 深度优先遍历(DFS) 首先将图中每个顶点都标记成未被访问。从图的某一顶点V0出发,访问此顶点并标记成已访问 ; 然后依次从V0的未被访问的邻接点出发,按照同样规则访问 如果与V0相邻接的点都被访问过,则退回到前一个访问顶点重复刚才过程 直至图中所有和V0相通的顶点都被访问到; 若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止。 算法难点: 如何判断有边相连 如何判断结点未被访问过 若此时图中尚有顶点未被访问,则另选图中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问为止 用邻接矩阵表示的图的广度优先搜索 初始化队列,放入第一个结点 取出队头元素i并访问,依次访问与i相邻接且未被访问过的结点w1,w2,…,并依次入队列 与i相邻接的结点都访问完毕后,取出队头元素,按照上面规则继续访问,

文档评论(0)

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

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

1亿VIP精品文档

相关文档