最小生成树Kruskal算法 Kruskal算法图解

发布:2022-10-24 13:53:41
阅读:18048
作者:网络整理
分享:复制链接

Kruskal算法是最小生成树的流行算法之一,以生成局部最优解的形式查找最小生成树。Kruskal算法将图视为森林,每个节点视为单独的树,并且只有在与所有其他可用选项相比成本最低的情况下,才将一个节点与另一个节点连接起来。

Kruskal算法的步骤原理

1、根据权重对图边进行排序,从权重最小的边开始

2、选择最小的边,检查它是否与现有生成树形成循环,如果有将这条边加入生成树中,如果没有生成循环,则舍弃。

3、重复步骤2,直到生成树中有(V-1)条边,最后的生成树即为最小生成树

Kruskal算法图解

第1步,删除所有循环和平行边

从给定图中删除所有循环和平行边

在平行边的情况下,保留相关成本最低的边并删除所有其他边。

第2步,按权重递增的顺序排列所有边

下一步是创建一组边和权重,并按权重(成本)的升序排列它们

第3步,添加权重最小的边

现在我们从权重最小的边开始向图中添加边。在整个过程中,我们将继续检查跨越属性是否完好无损。如果通过添加一条边,生成树属性不成立,那么我们将考虑不将边包括在图中。

最小成本是2,涉及的边是B,D和D,T。我们添加它们。添加它们不会违反生成树属性,因此我们继续进行下一个边选择。

下一个成本是3,关联的边是A,C和C,D。我们再次添加它们。

表中的下一个成本是4,我们观察到添加它会在图中创建关联边。

在此过程中,我们将忽略/避免创建4的所有边缘。

观察到成本为5和6的边也会创建关联边。我们忽略它们并继续。

现在只剩下一个要添加的节点了。在两个可用的最低成本边7和8之间,添加成本为7的边。

最后添加边S,A,此时已经包含了图的所有节点,现在就是最小成本生成树。

扫码进群
微信群
免费体验AI服务