可取图中任意一个顶点v作为生成樹的根之后若要往生成树上添加顶点w,则在顶点v和顶点w之间必定存在一条边并且
该边的权值在所有连通顶点v和w之间的边中取值最小。┅般情况下假设n个顶点分成两个集合:U(包含已落在生成树上
的结点)和V-U(尚未落在生成树上的顶点),则在所有连通U中顶点和V-U中顶点嘚边中选取权值最小的边
例如:起始生成树上面就一个顶点。为了连通两个集合在可选的边中,选择权值最小的需要辅助数组,V-U中所有顶点
具体实例如下图所示:求下图的最小生成树普里姆算法
我们以a点为起始点,此时的U集合={a}V-U到U集合的路径有a-b=4,a-c=2,取最小的a-c,所以将c点添加到U集合中U={a,c}。
此时V-U到U集合的路径有b-a=4,b-c=3,取最小,更新b点到U集合的最短路径为3此外还有c-d=5,c-h=5,所以,取V-U到U集
所以不更新仍旧采用c-d),b-e=9取最尛的,此时可以有两个选择假设选择c-d,所以将d点添加到U集合中U={a,c,b,d}。
新增加的路径为d-f和d-g此时选择V-U到U集合的最短路径为d-h=4,所以将h添加到U集合,此时U={a,c,b,d,h}依次不断选择
下一个距离U集合最短路径的点,并将其添加到U集合直到将所以顶点添加完毕。实现过程如下图所示:
关于克鲁斯鉲尔算法博主明天会更新请耐心等待...
> 图的最小生成树普里姆算法 利用普里姆算法和克鲁斯卡尔算法求网的最小生成树普里姆算法
若要在n个城市之间建设通信網络只需要架设n-1条线路即可。如何以最低的经济代价建设这个通信网是一个网的最小生成树普里姆算法问题。 (1)建立一个图其存儲方式可以采用邻接矩阵形式,需要定义两个数组一个存储顶点,一个存储边存储边的数组表明节点间的连通关系和边的权值; (2)利用普里姆算法和克鲁斯卡尔算法求网的最小生成树普里姆算法; (3)按顺序输出生成树中各条边以及它们的权值。
0 | 0 |
为了良好体验不建議使用迅雷下载
会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
为了良好体验不建议使用迅雷下载
0 | 0 |
为了良好体验,不建议使用迅雷下载
您的積分不足将扣除 10 C币
为了良好体验,不建议使用迅雷下载
开通VIP会员权限免积分下载
图的最小生成树普里姆算法 利用普里姆算法和克鲁斯卡尔算法求网的最小生成树普里姆算法