前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >最小生成树之Prim算法和Kruskal算法

最小生成树之Prim算法和Kruskal算法

作者头像
业余草
发布2019-01-21 10:41:20
1.8K0
发布2019-01-21 10:41:20
举报
文章被收录于专栏:业余草业余草

一个连通图可能有多棵生成树,而最小生成树是一副连通加权无向图中一颗权值最小的生成树,它可以根据Prim算法和Kruskal算法得出,这两个算法分别从点和边的角度来解决。

Prim算法

  1. 输入:一个加权连通图,其中顶点集合为V,边集合为E;
  2. 初始化:Vn = {x},其中x为集合V中的任一节点(起始点),Enew = {};
  3. 重复下列操作,直到Vn = V:(在集合E中选取权值最小的边(u, v),其中u为集合Vn中的元素,而v则是V中没有加入Vn的顶点(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一); 将v加入集合Vn中,将(u, v)加入集合En中;)
  4. 输出:使用集合Vn和En来描述所得到的最小生成树。

以下面这张图作为例子,表格中的Vertex、Kown、Cost、Path分别表示顶点信息、是否访问过,权值,到达路径;

Prim算法
Prim算法

我们随机的选择顶点0作为起点,其执行步骤为:

步骤

选中结点

顶点0作为起始点

0

根据(6, 7, 8)的方案选中6

1

根据顶点1能够到达的权值(7, 4, 3)和顶点0能够到达的权值(7, 8)中选择3

5

根据顶点5能够到达的权值(8)和根据顶点1能够到达的权值(7, 4)和顶点0能够到达的权值(7, 8)中选择4

6

根据顶点6能够到达的权值(6, 7)和顶点0能够到达的权值(7)中选择6

2

根据顶点0能够到达的权值(7)和顶点6能够到达的权值(7)中选择7

4

根据顶点6能够到达的权值(7)选择7

7

根据顶点7能够到达的权值(2)选择2

3

全部结点都访问过,退出

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年07月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Prim算法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档