数据结构——最小生成树Prim算法

本文深入探讨了Prim算法,一种用于寻找加权无向图中连接所有顶点的最小生成树的经典算法。Prim算法从一个顶点开始,逐步添加边,确保每次添加的边都连接两个不同集合的顶点,并且具有最小权重,从而逐步构建出整体的最小生成树。
摘要由CSDN通过智能技术生成

                      最小生成树Prim算法

        在保证图连通的情况下,去掉边数最多所得到的树叫做最小生成树。也就是说一个图,去掉一些边后,图仍是连接的,而这时图剩下的边数最少就是最小生成树,这时候图一定是树状结构的。可以用反证法:如果不是树状的,也就是说还有闭环,那么一定可以再去掉一些边使图中的所有闭环被破坏,最终图一定就是树状结构了,但如果已经成为了树状结构,再去掉一条边,那么一定会有至少一个节点不能连通了。所以图在连通的情况下去掉最多边剩下的结构一定是树状结构的。图的最小生成树不唯一。
       如果边上有权值,那么图就进化成了网。网可以作为很多现实世界中的场景的数学模型。网的最小生成树是连线上的权值之和最小的生成树,这和树中的WPL是不同的。网的最小生成树也不唯一。网的最小生成树可以描述最小耗费,比如说网线构建过程中,要保证每个网络节点都可以连通,建网成本最小的方案就是最小生成树。或者在道路建设中,要保证各种城市都能够连接,最小生成树就是建路成本最少的方案。因此,最小生成树在图和网求耗费最小的最优解场景中具有很好的应用。
      最小生成树算法主要有普里姆(Prim)算法和克努斯卡尔(Kruskal)算法。
       Prim算法是一种从无到有的生成策略。先把所有的边都去掉,只剩下所有的节点。然后每次添加一条边。Prim算法利用了最小生成树的节点具有最优子结构的性质。这种最优子结构是在添加边时当前选择权值最小的边那么一定可以导致最后总权值最小。因此,Prim算法的具体步骤如下:
     设Net=(V,{E}),V是网的节点集,E是边集,TE是最小生成树边的集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值