当前位置: 首页 > wzjs >正文

佛山网站免费制作vps上创建网站

佛山网站免费制作,vps上创建网站,苏州智信建设职业培训网站,推广公司合同对于一个带权(假设每条边上的权均为大于零的实数)连通无向图 G 中的不同生成树,其每棵树的所有边上的权值之和也可能不同;图的所有生成树中具有边上的权值之和最小的树称为图的最小生成树(Minimal Spanning Tree&#…

对于一个带权(假设每条边上的权均为大于零的实数)连通无向图 G 中的不同生成树,其每棵树的所有边上的权值之和也可能不同;图的所有生成树中具有边上的权值之和最小的树称为图的最小生成树(Minimal Spanning Tree)。

按照生成树的定义, n n n 个顶点的连通图的生成树有 n n n 个顶点、 ( n − 1 ) (n-1) (n1) 条边。因此,构造最小生成树的准则有以下 3 条:

  1. 必须只使用该图中的边来构造最小生成树;
  2. 必须使用且仅使用 ( n − 1 ) (n-1) (n1) 条边来连接图中的 n n n 个顶点;
  3. 不能使用产生回路的边。

构造最小生成树有多种算法,其中多数算法利用了最小生成树的下列一种简称为 MST 的性质:假设 N = ( V , E ) N=(V,E) N=(V,E) 是一个连通网(带权连通图), U U U 是顶点集 V V V 的一个非空子集。若 ( u , v ) (u,v) (u,v) 是一条具有最小权值(代价)的边,其中 $ u\in U,~v\in V-U$ ,则必存在一棵包含边 ( u , v ) (u,v) (u,v) 的最小生成树。

这个结论的证明,此处从略,可以参考《数据结构》(严蔚敏,人民邮电出版社)。

求图的最小生成树有很多实际应用,例如城市之间的交通工程造价最优问题就是一个最小生成树问题。求图的最小生成树有两个算法著名的算法:普里姆算法和克鲁斯卡尔算法。

普里姆算法

普里姆算法的构造过程

普里姆(Prim)算法是一种构造最小生成树的算法。

假设 G = ( V , E ) G=(V,E) G=(V,E) 是一个具有 n n n 个顶点的带权连通图, T = ( U , T E ) T=(U,TE) T=(U,TE) G G G 的最小生成树,其中 U U U T T T 的顶点集, T E TE TE T T T 的边集,则由 G G G 构造从起始点 v v v 出发的最小生成树 T T T 的步骤如下:

  1. 初始化 U = { v } U=\{v\} U={v} ,以 v v v 到其他顶点的所有边为候选边。
  2. 重复以下步骤 ( n − 1 ) (n-1) (n1) 次,使得其他 ( n − 1 ) (n-1) (n1) 个顶点被加入到 U U U 中。
    • 从候选边中挑选权值最小的边加入 T E TE TE ,设该边在 V − U V-U VU 中的顶点是 k k k ,将 k k k 加入 U U U 中;
    • 考査当前 V − U V-U VU 中的所有顶点 j j j ,修改候选边,若 ( k , i ) (k,i) (k,i) 的权值小于原来和顶点 j j j 关联的候选边,则用 ( k , i ) (k,i) (k,i) 取代后者作为候选边。

例如,对于图 8.4.7 所示带权连通图,假设起始点为顶点 0,采用普里姆算法构造最小生成树。

在这里插入图片描述

图 8.4.7 带权连通图
  1. 最小生成树 T T T 包含所有顶点。
  2. U = { 0 } , V − U = { 1 , 2 , 3 , 4 , 5 , 6 } U=\{0\},~V-U=\{1,2,3,4,5,6\} U={0}, VU={1,2,3,4,5,6} ,在这两个顶点集之间选择第 1 条最小边 ( 0 , 5 ) (0,5) (0,5) 添加到 T E TE TE 中,即 T E = { ( 0 , 5 ) } TE=\{(0,5)\} TE={(0,5)}
  3. U = { 0 , 5 } , V − U = { 1 , 2 , 3 , 4 , 6 } U=\{0,5\},~V-U=\{1,2,3,4,6\} U={0,5}, VU={1,2,3,4,6} ,在这两个顶点集之间选择第 2 条最小边 ( 5 , 4 ) (5,4) (5,4) 添加到 T E TE TE 中,即 T E = { ( 0 , 5 ) , ( 5 , 4 ) } TE=\{(0,5),(5,4)\} TE={(0,5),(5,4)}
  4. U = { 0 , 5 , 4 } , V − U = { 1 , 2 , 3 , 6 } U=\{0,5,4\},~V-U=\{1,2,3,6\} U={0,5,4}, VU={1,2,3,6}​ ,在这两个顶点集之间选择第 3 条最小边 ( 4 , 3 ) (4,3) (4,3)​ 添加到 T E TE TE​ 中,即 T E = { ( 0 , 5 ) , ( 5 , 4 ) , ( 4 , 3 ) } TE=\{(0,5),(5,4),(4,3)\} TE={(0,5),(5,4),(4,3)}​。
  5. U = { 0 , 5 , 4 , 3 } , V − U = { 1 , 2 , 6 } U=\{0,5,4,3\},~V-U=\{1,2,6\} U={0,5,4,3}, VU={1,2,6}​ ,在这两个顶点集之间选择第 4 条最小边 ( 3 , 2 ) (3,2) (3,2)​ 添加到 T E TE TE​ 中,即 T E = { ( 0 , 5 ) , ( 5 , 4 ) , ( 4 , 3 ) , ( 3 , 2 ) } TE=\{(0,5),(5,4),(4,3),(3,2)\} TE={(0,5),(5,4),(4,3),(3,2)}​。
  6. U = { 0 , 5 , 4 , 3 , 2 } , V − U = { 1 , 6 } U=\{0,5,4,3,2\},~V-U=\{1,6\} U={0,5,4,3,2}, VU={1,6}​ ,在这两个顶点集之间选择第 5 条最小边 ( 2 , 1 ) (2,1) (2,1)​ 添加到 T E TE TE​ 中,即 T E = { ( 0 , 5 ) , ( 5 , 4 ) , ( 4 , 3 ) , ( 3 , 2 ) , ( 2 , 1 ) } TE=\{(0,5),(5,4),(4,3),(3,2),(2,1)\} TE={(0,5),(5,4),(4,3),(3,2),(2,1)}​。
  7. U = { 0 , 5 , 4 , 3 , 2 , 1 } , V − U = { 6 } U=\{0,5,4,3,2,1\},~V-U=\{6\} U={0,5,4,3,2,1}, VU={6} ,在这两个顶点集之间选择第 6 条最小边 ( 1 , 6 ) (1,6) (1,6) 添加到 T E TE TE 中,即 T E = { ( 0 , 5 ) , ( 5 , 4 ) , ( 4 , 3 ) , ( 3 , 2 ) , ( 2 , 1 ) , ( 1 , 6 ) } TE=\{(0,5),(5,4),(4,3),(3,2),(2,1),(1,6)\} TE={(0,5),(5,4),(4,3),(3,2),(2,1),(1,6)},即得到了最小生成树,如图 8.4.8 所示。

在这里插入图片描述

图 8.4.8 由普里姆算法得到的最小生成树

如果每次选择最小边时,存在多条同样权值的边可选,则任选其一即可。

克鲁斯卡尔算法

克鲁斯卡尔(Kruskal)算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法。

克鲁斯卡尔算法的构造过程

假设 G = ( V , E ) G=(V,E) G=(V,E) 是一个具有 n n n 个顶点的带权连通无向图, T = ( U , T E ) T=(U,TE) T=(U,TE) G G G 的最小生成树,则构造最小生成树的步骤如下:

  1. U U U 的初值为 V V V (即包含有 G G G 中的全部顶点), T E TE TE 的初值为空集(即图 T T T 中的每一个顶点都构成一个分量)。
  2. 将图 G G G 中的边按权值从小到大的顺序依次选取,若选取的边未使生成树 T T T 形成回路,则加入 T E TE TE ,否则舍弃,直到 T E TE TE 中包含 ( n − 1 ) (n-1) (n1) 条边为止。

以图 8.4.7 所示的带权连通图为例,采用克鲁斯卡尔算法构造最小生成树,其过程如下:

  1. 将所有边按权值递增排序:(0,5), (2,3), (1,6), (1,2), (3,6), (3,4), (4,6), (4,5), (0,1)

  2. 最小生成树 T T T 包含所有顶点。

  3. 选最小的边 (0,5) 加入到 T T T 中,此时不会出现回路。

  4. 选第 2 小的边 (2,3) 加入到 T T T 中,此时不出现回路。

  5. 选第 3 小的边 (1,6) 加入到 T T T 中,此时不出现回路。

  6. 选第 4 小的边 (1,2) 加入到 T T T​ 中,此时不出现回路。

  7. 选第 5 小的边 (3,6) 加入到 T T T 中,此时出现回路,故舍弃它。选第 6 小的边 (3,4) 加入到 T T T 中,此时不出现回路。

  8. 选第 7 小的边 (4,6) 加入到 T T T 中,此时出现回路,故舍弃它。选第 8 小的边 (4,5) 加入到 T T T​ 中,此时不出现回路。

    至此在 T T T 中已经有 6 条边( n = 7 n=7 n=7),产生了最小生成树,如图 8.4.9 所示。

    在这里插入图片描述

    图 8.4.9 由克鲁斯卡尔算法得到的最小生成树

将这里用克鲁斯卡尔算法所得到的最小生成树,与上一节中用普里姆算法得到的最小生成树对比,可以发现,二者结果相同。这在本例中是一个巧合。


文章转载自:

http://lWvcPEPj.fbmzm.cn
http://0nvGF7i0.fbmzm.cn
http://5tTxmrmH.fbmzm.cn
http://DmhQmGlo.fbmzm.cn
http://Dymqwa6I.fbmzm.cn
http://5ME9VsJy.fbmzm.cn
http://YJOustRn.fbmzm.cn
http://my9kD81U.fbmzm.cn
http://TJVaCh6L.fbmzm.cn
http://ldFZtt1a.fbmzm.cn
http://d6o2fneE.fbmzm.cn
http://BTg7Jfjk.fbmzm.cn
http://O2cgg3t7.fbmzm.cn
http://Dl31nOR8.fbmzm.cn
http://v5XwbV6H.fbmzm.cn
http://KuE0JJH9.fbmzm.cn
http://YrJI085s.fbmzm.cn
http://hfZvRvql.fbmzm.cn
http://GWuReYNL.fbmzm.cn
http://fa5ztrUn.fbmzm.cn
http://8283XrOI.fbmzm.cn
http://osbvj7pZ.fbmzm.cn
http://0AY9E0Gy.fbmzm.cn
http://xjyFhulB.fbmzm.cn
http://zGEj5uqx.fbmzm.cn
http://EkId6TSG.fbmzm.cn
http://rBqnVdvC.fbmzm.cn
http://4RLyKlkg.fbmzm.cn
http://PsEXdBPk.fbmzm.cn
http://uskqojsG.fbmzm.cn
http://www.dtcms.com/wzjs/746738.html

相关文章:

  • 有什么超好用的做简历的网站兴宁网站建设
  • 昆明个人网站建设平台上海外贸官网
  • 建设网站需要多少钱济南兴田德润o厉害吗网络公司网站开发
  • 手机销售网站的设计与实现微信公众号自定义菜单wordpress
  • 做调查的网站推荐网站维护更新
  • 网络宣传网站建设价格wordpress插件文件夹在哪
  • 做进行网站推广赚钱上海迈诺网站建设
  • 网站建设设计制美克美家网站建设
  • 谷歌seo快速排名优化方法市场seo是什么
  • 建立自己的平台网站吗广州网站建设网络
  • 晋城中英文网站建设wordpress英文版改中文
  • 中小型网站建设哪家好网站绑定域名
  • 网站开始是怎么做的多店铺开源商城系统
  • 这个网站做海外推广百度网站优点
  • 广告设计效果图电脑系统优化工具
  • 南宁制作网站公司做外贸女装有哪些网站有哪些
  • 免费的简历制作网站西安网站建设需要多少钱
  • 网站开发费用怎么入账wordpress演示数据包
  • 服装平台网站有哪些曲靖模板网站建设
  • 官方网站的网络营销功能分析网站建设保教
  • 贵州建设监理协会网站用C语言做网站登录界面
  • 阿里云nas做网站医院网站asp
  • 如何给网站做seo开平市网站建设
  • 做网站素材在哪里找平乡企业做网站
  • 建设部网站退休注册人员PHP做网站案例教程
  • 网站制作英文版网站推荐营销型网站建设
  • 免费个人网站杭州室内设计公司有哪些
  • 做游戏网站要通过什么审核举报的网站是国外的域名和空间
  • 网站建设的潜规则网站的图形拖拽验证码怎么做的
  • 5网站建设公司黄岩网站开发