Boruvka 生成树算法

Posted graytido

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Boruvka 生成树算法相关的知识,希望对你有一定的参考价值。

Boruvka 生成树算法

Boruvka 算法的一句话思想便是:

“从所有当前的连通块向其他连通块扩展出最小边,直到只剩一个连通块”,其中取最小边的贪心思想是 Kruskal 的主体,而向外扩展又是 Prim 的思想 —— 基于另外两种生成树算法,Boruvka 的正确性显然。

代码框架:

while 连通块个数>1
    for 每个连通块 i
        val[i] = 连接 i 与其他连通块的最小边
    for 每个连通块 i
        if val[i] 连接两个不同的连通块
            ans += val[i]
            Merge( val[i] 连接的连通块 )
            连通块个数 --

就是val[i]的求解会用其他方式辅助求解,在对于给出一种计算两点之间边权的方式的题目下相当好用

以上是关于Boruvka 生成树算法的主要内容,如果未能解决你的问题,请参考以下文章

Boruvka算法

查找最小生成树:克鲁斯克尔算法(Kruskal)算法

克鲁斯卡尔算法(Kruskal算法)(最小生成树算法)-贪心

克鲁斯卡尔算法(Kruskal算法)(最小生成树算法)-贪心

Boruvka最小生成树模板

P3366 模板最小生成树(boruvka/sollin)