算法之「普里姆(Prim)算法」

栏目: 编程工具 · 发布时间: 6年前

内容简介:普里姆算法(Prim's algorithm)是图中的一种算法,可在加权连通图中搜索最小生成树。该算法的作用就是根据图中权值找到连接所有顶点的最短路径,也就是连接所有顶点的最小权值之和,也是这个加权图中的最小生成树。1.选取权值最小边的其中一个顶点作为起始点。

普里姆算法(Prim's algorithm)是图中的一种算法,可在加权连通图中搜索最小生成树。

该算法的作用就是根据图中权值找到连接所有顶点的最短路径,也就是连接所有顶点的最小权值之和,也是这个加权图中的最小生成树。

普里姆算法步骤

1.选取权值最小边的其中一个顶点作为起始点。

2.找到离当前顶点权值最小的边,并记录该顶点为已选择。

3.重复第二步,直到找到所有顶点,就找到了图的最小生成树。

普里姆算法时间复杂度

假如我们有 V 表示图中的顶点个数,E 表示图中的边个数。

通过邻接矩阵图表示的简易实现中,找到所有最小权边共需 的运行时间。

使用简单的二叉堆和邻接表来表示的话,普里姆算法的运行时间则可缩减为 。

如果使用较为复杂的斐波那契堆,则可将运行时间进一步缩短为 ,这在连通图足够密集时,可较显著地提高运行速度。

普里姆算法示例

算法之「普里姆(Prim)算法」

根据上面加权连通图找到最小生成树。

算法之「普里姆(Prim)算法」

首先选择顶点 A 作为起点。顶点 D、F、B 与 A 相连,且 AD 之间的权值最小,因此选择这条边。此时 A、D 为已选择顶点,E、F、B 为待选择顶点,H、G 为未选择顶点。

算法之「普里姆(Prim)算法」

下一个顶点应选择离 A、D 权值最小的顶点,因此选择 AB 这条边。此时 A、D、B 为已选择顶点,E、F、G 为待选择顶点,H 为未选择顶点。

算法之「普里姆(Prim)算法」

下一个顶点应选择离 A、D、B 权值最小的顶点,因此选择 DE 这条边。此时 A、D、B、E 为已选择顶点,F、G、H 为待选择顶点,没有未选择顶点。

算法之「普里姆(Prim)算法」

下一个顶点应选择离 A、D、B、E 权值最小的顶点,因此选择 EH 这条边。此时 A、D、B、E、H 为已选择顶点,F、G 为待选择顶点,没有未选择顶点。

算法之「普里姆(Prim)算法」

下一个顶点应选择离 A、D、B、E、H 权值最小的顶点,因此选择 FH 这条边。此时 A、D、B、E、H、F 为已选择顶点,G 为待选择顶点,没有未选择顶点。

算法之「普里姆(Prim)算法」

最后,只剩下一个顶点 G,到顶点 G 的权值最小的是 HG。现在图中所有顶点都连接了,红色连接的边就是最小生成树,最小生成树的权值之和为 42。

总结

普里姆算法就是通过一个顶点扩散开找权值最小的边,所经过的顶点和边就是这个图的最小生成树。通过不用的数据结构存储图会导致时间复杂度不一致,用邻接矩阵的时间复杂度是 ,二叉堆和邻接表的时间复杂度是 。

PS:

清山绿水始于尘,博学多识贵于勤。

我有酒,你有故事吗?

微信公众号:「 清尘闲聊 」。

欢迎一起谈天说地,聊代码。

算法之「普里姆(Prim)算法」

以上所述就是小编给大家介绍的《算法之「普里姆(Prim)算法」》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图说区块链

图说区块链

徐明星、田颖、李霁月 / 中信出版社 / 2017-7-1 / 59.00元

区块链,如瑞士仪表般精密,如互联网般惊世骇俗,它在以神一般的节奏颠覆社会。 当新兴技术来临时,你可以选择规避——如果明天也可以规避的话。区块链也一样。 作为一个现象级概念,金融科技创新在过去几年迎来了奇点式发展。其中最引人注目的当属区块链技术。区块链技术正在动摇全球金融基础设施,它是全球顶级银行和其他金融机构重点追逐的领域。毫无疑问,区块链是未来5年最有前景的行业之一。 《图说区......一起来看看 《图说区块链》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具