图的最小生成树_prim算法.ppt

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

* 基本图算法 陈嘉庆 最小生成树问题 最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。 最小生成树算法的目标:一个n个点的图,选若干条边(一定是n-1条)使得图连在一起,并且所有选中的边的长度和最小。 最小生成树其实是最小权重生成树的简称。 * 最小生成树 生成树和最小生成树有许多重要的应用。 例如:要在n个城市之间铺设光缆,主要目标是要使这 n 个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树。 * Prim算法 最小生成树---Prim算法 Prim普里姆算法 1).输入:一个加权连通图,其中顶点集合为V,边集合为E; 2).初始化:Vnew= {x},其中x为集合V中的任一节点(起始点),Enew= {},为空; 3).重复下列操作,直到Vnew= V: a.在集合E中选取权值最小的边u, v,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一); b.将v加入集合Vnew中,将u, v边加入集合Enew中; 4).输出:使用集合Vnew和Enew来描述所得到的最小生成树。 * 4 最小生成树 问题:修建一个连接各个小区与供应站点之间的管道使得造价成本最低,即构造一颗最小生成树。但是如何求解? 4.1 prim算法 1. 基本思想 在满足如下条件的过程中选出一条最小的边: 一端已选,另一端未选。 因此,该算法需要给出起点,以作为已选顶点。 2. 实例 对右图所示图, 用Prim算法求最小生成树。 17 4 6 1 2 5 3 4 9 12 9 9 15 6 10 3 * 4 最小生成树 4 6 1 2 5 3 4 9 12 9 9 15 6 17 10 3 9 6 1 2 5 3 4 12 9 9 15 6 17 10 4 3 9 6 1 2 5 3 4 12 9 9 15 6 17 10 4 3 9 6 1 2 5 3 4 12 9 9 15 6 17 10 4 3 9 6 1 2 5 3 4 12 9 9 15 6 17 10 4 3 9 6 1 2 5 3 4 12 9 9 15 6 17 10 4 3 * 4 最小生成树--求解过程的表格化求解 已选顶点集 U 顶点1 候选边 顶点2 候选边 顶点3 候选边 顶点4 候选边 顶点5 候选边 顶点6 候选边 {1} {1,6} {1,6,5} {1,6,5,4} {1,6,5,4,3} {1,6,5,4,3,2}} (1,2)/12 (1,3)/∞ (1,4)/∞ (1,5)/9 (1,6)/9 (1,2)/12 (6,2)/15 (6,3)/17 (6,4)/20 (1,5)/9 (6,5)/9 (6,4)/20 (5,4)/4 (1,2)/12 (6,2)/15 (6,3)/17 (1,2)/12 (6,2)/15 (6,3)/17 (4,3)/3 (1,2)/12 (6,2)/15 (3,2)/6 17 4 6 1 2 5 3 4 9 12 9 9 15 6 10 3 * 4 最小生成树 —— Prim算法练习 求下图的最小生成树: 1 2 3 5 4 1 2 3 5 4 4 3 5 3 2 3 1 3 6 已选顶点集合U 顶点1候选边 顶点2候选边 顶点3候选边 顶点4候选边 顶点5候选边 {1} (1,2)/3 (1,3)/3 (1,4)/4 (1,5)/∞ {1,3} (3,2)/5 (3,4)/2 (3,5)/6 {1,3,4} (4,2)/∞ (4,5)/1 {1,3,4,5} (5,2)/3 {1,3,4,5,2} 1 3 4 2 5 Prim最小生成树 注:最小生成树不唯一, 但权值之和相同。 * 4 最小生成树 3.算法 Prim算法的简要描述(设起点为v0): 设置各候选边(v0,vi); for (i=1; i=n-1; i++) { 从候选边中找出权值最小的边(v,vk); //其中v已选边,vk未选 将vk设置为已选顶点; 调整候选边集合----调整新入选顶点和未选顶点之间的边的集合 } 由此可知,需要考虑如下几个方面的实现: (1)已选

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档