最小生成树-数学建模.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文档。上传文档
查看更多
* 主 页 上一页 下一页 最小生成树算法 参考书: 1.傅鹂 龚劬 刘琼荪 何中市 《数学实验》科学出版社 2.张绍民 李淑华 《数据结构教程C语言版》中国电力出版社 主讲:龚 劬 制作:龚 劬 Prim算法 Kruskal算法 主要内容 最小生成树问题的0-1规划模型 一个例子 基本概念与结论 赵根 赵明 赵亮 赵丽 赵雷 赵虹 赵雨 赵霞 赵云 赵梅 赵松 树图——直观形象的表示工具 类似于自然界中的树 形象地表示家族 树: 没有圈的连通图 ? 树中任意两点间有唯一路径。 ? 树的边数恰好为顶点数减1。 树图——直观形象的表示工具 城市电信局有许多业务如收费,营业,112,114等,希望在全市范围实现计算机联网服务,共享各种资源。一个主要关心的问题是:用数据通讯线把一组站点联结起来,而不允许通讯线在非站点处相交,如何连接可使通讯线的花费最小? 引例:计算机网络的线路设计 1 2 3 4 5 8 6 9 1 5 7 10 3 引例:计算机网络的线路设计 最经济的网络不应该有任何封闭的回路。 引例:计算机网络的线路设计 生成树或支撑树(spanning tree):G的子图且是树,其顶点集等于G的顶点集; 1 2 3 4 5 8 6 9 1 5 7 10 3 如何简便地得到左图的生成树?它应有几条边? ? 确定应在哪些站点之间铺设通讯线路,是否可看作是在相应的加权图中构造最小费用的生成树的问题? 引例:计算机网络的线路设计 最小生成树 最大生成树 引例:计算机网络的线路设计 ? 1) 一个完全图Kn有多少不同的生成树? 2) 如何求其最小生成树? 10个顶点的完全图,其不同的生成树就有一亿棵。 一般地,n个顶点的完全图,其不同的生成树个数为nn-2。 30个顶点的完全图就有3028个生成树,求最小生成树时用穷举法是无效的。 引例:计算机网络的线路设计 返 回 返 回 最小生成树与算法 如果生成树 * T 的权 ) ( * T w 是 G 的所有生成树的权中最 小者,则称 * T 是 G 的 最小生成树 ,简称为 最小树 ,即 )} ( { min ) ( * T w T w T ? = ,式中取遍 G 的所有生成树 T . 定义 设 ) , ( 1 E V T = 是赋权图 ) , ( E V G = 的一棵生 成树,称 T 中全部边上的权数之和为 生成树的权 ,记为 ) ( T w ,即 ? ? = 1 ) ( ) ( E e e w T w . Prim算法 Kruskal算法 最小生成树算法及其MATLAB程序实现 返 回 算法的MATLAB程序实现 基本思想: 最初把图的n个顶点看作n个分离的部分树,每个树具有一个顶点,算法的每一步选择可连接两分离树的边中权最小的边连接两个部分树,合二为一,部分树逐步减少,直到只有一个部分树(n-1步之后)便得到最小生成树。 Kruskal算法 1 3 2 4 5 8 6 9 1 5 7 10 3 时间复杂度: O(m) 其中m为图的边数 Kruskal算法 1) 选择边e1,使得w(e1)尽可能小; 2) 若已选定边 ,则从 中选取 ,使得: i) 为无圈图, ii) 是满足i)的尽可能小的权, 3) 当第2)步不能继续执行时,则停止. 步骤 定理 由Kruskal算法构作的任何生成树 都是最小生成树. Kruskal算法 1 2 3 4 5 8 3 9 1 5 7 10 6 1号子树 2号子树 3号子树 给每个子树一个不同的编号 返 回 初始化:j?0, T??, c?0, k?0; 对所有顶点i ,t(i)?i . j?j+1 t(B(1,j))?t(B(2,j)) T?T?(B(1,j),B(2,j)), c?c+B(3,j),k?k+1,i ?0 t(i)=max{t(B(1,j)), t(B(2,j)) t(i)? min{t(B(1,j)), t( B(2,j)), k=n-1或j=m T, c 整理边权矩阵 N Y i=n 终止 N Y Y i ? i+1 N Y N B: 图的边权矩阵; T: 生成树的边集; C: 生成树的权; t: 顶点所属子树的编号 Kruskal算法 例:用Kruskal算法求引例中的加权图的最小生成树。 1 2 3 4 5 8 6 9 1 5 7 10 3 b=[1 1 1 2 2 3 3 4; 2 4 5 3 5 4 5 5; 8 1 5 6

文档评论(0)

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

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

1亿VIP精品文档

相关文档