当前位置:   article > 正文

最小生成树实验报告c语言,C语言实现最小生成树构造算法

最小生成树实验报告

最小生成树

最小生成树(minimum spanning tree)是由n个顶点,n-1条边,将一个连通图连接起来,且使权值最小的结构。

最小生成树可以用Prim(普里姆)算法或kruskal(克鲁斯卡尔)算法求出。

我们将以下面的带权连通图为例讲解这两种算法的实现:

ffd4874954f8fad5760114753cd3986a.png

注:由于测试输入数据较多,程序可以采用文件输入

17d5703ba535e1a1bdc13b1f072d7d21.png

Prim(普里姆)算法

时间复杂度:O(N^2)(N为顶点数)

prim算法又称“加点法”,用于边数较多的带权无向连通图

方法:每次找与之连线权值最小的顶点,将该点加入最小生成树集合中

注意:相同权值任选其中一个即可,但是不允许出现闭合回路的情况。

a7b95aad2de1deb1e9ff1d4212ae9911.png

98825e1967b7171079b57166b0c136ab.png

b469475dcbf1210954349e21712bf18c.png

77ed4edc9ec8d568f8f810edd2da1f5e.png

d7987b7ce31f1fc2e11c17ceee082b56.png

a341e64535274292769b2e0e27825bd7.png

98ecb63f8cf423f48baf747bc0fe211a.png

代码部分通过以下步骤可以得到最小生成树:

1.初始化:

lowcost[i]:表示以i为终点的边的最小权值,当lowcost[i]=0表示i点加入了MST。

mst[i]:表示对应lowcost[i]的起点,当mst[i]=0表示起点i加入MST。

由于我们规定最开始的顶点是1,所以lowcost[1]=0,MST[1]=0。即只需要对2~n进行初始化即可。

#define MAX 100

#define MAXCOST 0x7fffffff

int graph[MAX

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/243472
推荐阅读
相关标签
  

闽ICP备14008679号