【MST】最小生成树prim 算法原理及实现

本文介绍了最小生成树的概念,强调了最小边原则和唯一性定理,并详细阐述了Prim算法的工作原理和步骤,该算法通过贪心策略逐步构造最小生成树,适用于带权无向连通图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下参考《信息学竞赛一本通 提高篇》

前置知识点:

1、生成树:

在一个|V| 个点的无向联通图中,取其中|V|-1条边,并链接所有的顶点,所得到的子图称为原图的一颗生成树。

2、树的属性:

树是图的一种特殊形态。图G是树当且仅当一下任意一个条件成立

1、G有|V|-1条边,无环。

2、G有|V|-1条边,连通。

3、任意两点之间只有唯一的简单路径

4、G连通,但任意删除一条边后就不连通。

3、最小生成树

在一个带权的无向连通图中,各边权和最小的一颗生成树即为原图的最小生成树

4、最小边原则

图中权值最小的边(如果唯一的话)一定在最小生成树上。

5、唯一性定理

对于一个图G,如果图中的边权值都不相同,则图的最小生成树是唯一的,反之不然。


prim算法:

【算法思想】:

        prim算法是一种贪心算法,它最初将无向连通图G中所有顶点V分成两个顶点集合VA和Va,在计算过程中VA中的点为已经选好连接入生成树的点,否则属于VB。最开始的时候VA只包含任意选取的图G中的一个点u,其余的点属于VB,每次添加一个VB中的点到VA,该点是集合VB到集合VA中距离最小的一个点。直到V个顶点全部属于VA,算法结束。显然出发点不同,最小生成树的形态就不同,但边权和的最小值是唯一的。

【算法步骤】:

        选定图中的任意一个顶点V0,从V0开始生成最小生成树;

        (1)、初始化dis[ v0 ] =0 ,其他点的距离值 dis [ i ] =∞。其中 dis [ i ] 表示集合VB中的点到VA中的点的距离值。

        (2)、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值