网站大量收购独家精品文档,联系QQ:2885784924

图得基本概念.ppt

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图得基本概念

图的基本概念 图的基本概念 无向图的连通性 有向图的连通性 生成树 图的其它术语 图的ADT 图的存储表示 邻接矩阵 邻接矩阵 加权邻接矩阵 邻接表 邻接表 邻接表 邻接表 邻接表 邻接表的实现 邻接表的实现 十字接表 十字接表 邻接多重表 邻接多重表 图的遍历与连通性 深度优先搜索 深度优先搜索 深度优先搜索的实现 深度优先搜索的实现 广度优先搜索 广度优先搜索 广度优先搜索 无向图的连通分量和生成树 无向图的连通分量和生成树 无向图的连通分量和生成树 有向图的强连通分量的求法 有向图的强连通分量的求法 有向图的强连通分量的求法 有向图的强连通分量的求法 最小生成树 例:Kruscal 算法 例: Kruscal 算法 Kruscal 算法 最小生成树 Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 例:Prim算法 Prim算法 Prim算法 Prim算法 Prim算法 最短路径 Dijkstra算法 Dijkstra算法 Dijkstra算法 Dijkstra算法 Dijkstra算法 Floyd算法 Floyd算法 Floyd算法 活动网络 拓扑排序 拓扑排序 拓扑排序 拓扑排序 拓扑排序 拓扑排序 拓扑排序 AOE网络 关键路径 关键路径 关键路径 关键路径 关键路径 关键路径 关键路径 关键路径 Dijkstra 算法: 6、7的解释: V0 源点 X V 老 S V-S W 新 S Dijkstra 算法求单源最短路径: 设 V 是该有向图的结点的集合、集合 S 是已求得最短路径的结点的集合, 求 V0 至其余各结点的最短距离。S[i]=1,表示结点i在S中,否则不在。 1、S[0] = 1 ;// 结点 V0 最短路径已求得,是源点。 2、for ( i=1; in; i++ ) 3、 { D[i]=c[ 0, i ]; S[i]=0; Path[ v ] = -1; } 4、for ( i=1; in; i++ ) 5、{ 在 V-S 中选择一个结点VW;使得 D[w] 最小。将W 加入集合 S // 用最小化堆选 6、 for (每一个在 V-S 中的结点 v) //出最小的 6.5 { if (D[w]+C[w,v] D[v ]) Path[ v ] = w; 7、 D[v]=MIN( D[v],D[w]+C[w,v]) 8 }; //如用最小化堆实现,此处还要调整堆 9、 } 注意:本书的实现程序见程序7.6。其中,AdjMatrix[j*MaxNumVertex+k ] 保存顶点j、k之间的路径长度,替代邻接矩阵,即:Adj[j,k]。 3 2 0 4 100 10 1 60 30 10 20 50 源点 Dijkstra 算法: 正确性证明 设 V 是结点的集合,S 是已经得到最短 路径(由源点至本结点)的结点的集合。 T = V - S V0 源点 Vz Vy Vx Vl Vm Vn Vn 证明:设 V0 经 S 中的j结点,到 VZ 后直接 经有向边到达结点 Vj 的路径,是所有 这些路径中最短的。如图所示,路径 p1p2; p1p3;p1p4。则 p1 就是源 点 V0 至 Vj 的最短路径。 假定存在一条更短的路径,那么肯定 要经过 T - { Vj } 中的一个顶点,设 为 V3 ;但 p3 p1,同假设矛盾,不 可能。 Dijkstra 算法: 边的权值不可以为负值。 V0 V1 V2 100 -99 5 S T V p1 p2 p3 p4 注意:边的权值不可以为负值,这一点可以 从上述证明中推出。 声明:Dijkstra 算法和Prim算法本质是相同的,甚至可以用同一个函数求出,区别仅在于权值不同。 Dijktra算法邻接表示图且使用最小化堆时的时间复杂性O((n+e)logn)和 Prim 算法情况类似。 10 30 20 70 5 36 24 75 85 60 94 1.建最小化堆代价:O(n) 2.最小化堆中的所有结点,都将会输出。输出一个,堆都会

文档评论(0)

138****7331 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档