克鲁斯卡尔算法实验报告

克鲁斯卡尔算法实验报告

ID:47473517

大小:44.50 KB

页数:5页

时间:2020-01-11

克鲁斯卡尔算法实验报告_第1页
克鲁斯卡尔算法实验报告_第2页
克鲁斯卡尔算法实验报告_第3页
克鲁斯卡尔算法实验报告_第4页
克鲁斯卡尔算法实验报告_第5页
资源描述:

《克鲁斯卡尔算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验报告实验原理:Kruskal算法是一种按照图中边的权值递增的顺序构造最小生成树的方法。其基本思想是:设无向连通网为G=(V,E),令G的最小生成树为T,其初态为T=(V,{}),即开始时,最小生成树T由图G中的n个顶点构成,顶点之间没有一条边,这样T中各顶点各自构成一个连通分量。然后,按照边的权值由小到大的顺序,考察G的边集E中的各条边。若被考察的边的两个顶点属于T的两个不同的连通分量,则将此边作为最小生成树的边加入到T中,同时把两个连通分量连接为一个连通分量;若被考察边的两个顶点属于同一个连通分量,则舍去此边,以免造成回路,

2、如此下去,当T中的连通分量个数为1时,此连通分量便为G的一棵最小生成树。如教材153页的图4.21(a)所示,按照Kruskal方法构造最小生成树的过程如图4.21所示。在构造过程中,按照网中边的权值由小到大的顺序,不断选取当前未被选取的边集中权值最小的边。依据生成树的概念,n个结点的生成树,有n-1条边,故反复上述过程,直到选取了n-1条边为止,就构成了一棵最小生成树。实验目的:本实验通过实现最小生成树的算法,使学生理解图的数据结构存储表示,并能理解最小生成树Kruskal算法。通过练习,加强对算法的理解,提高编程能力。实验内容

3、:(1)假定每对顶点表示图的一条边,每条边对应一个权值;(2)输入每条边的顶点和权值;(3)输入每条边后,计算出最小生成树;(4)打印最小生成树边的顶点及权值。实验器材(设备、元器件):PC机一台,装有C语言集成开发环境。数据结构与程序:#include#include#includeusingnamespacestd;第5页#defineX105typedefstructEdge{intw;intx,y;}Edge;//储存边的struct,并储存边两端的结点classG

4、raphNode{public:intdata;intfather;intchild;}GraphNode[X];//储存点信息的并查集类(点的值,父结点,子结点)Edgeedge[X*X];boolcomp(constEdge,constEdge);voidupdate(int);intmain(){intnode_num;intsum_weight=0;FILE*in=fopen("C:\Users\瑞奇\Desktop\编程实验\数据结构实验\FileTemp\in.txt","r");cout<<"Readi

5、ngdatafromfile..."<>node_num;fscanf(in,"%d",&node_num);//cout<<"Pleaseinputthedataofeachnode:"<>GraphNode[i].data;fscanf(in,"%d",&GraphNode[i].data);GraphN

6、ode[i].father=GraphNode[i].child=i;}//初始化点集//cout<<"Pleaseinputtherelationbetweennodesinthisformatandendwith(000):"<>x>>y>>w&&w)while(fscanf(in,"%d%d%d",&x,&y,&w)!=EOF&&w)edge[tmp_cnt].w=

7、w,edge[tmp_cnt].x=x,edge[tmp_cnt++].y=y;fclose(in);sort(edge+1,edge+tmp_cnt,comp);//对边权进行排序cout<<"TheMinSpanTreecontainsfollowingedges:"<

8、;if(GraphNode[m].father!=m)//使用并查集对边是否可用进行判断{m=GraphNode[m].father;GraphNode[m].father=GraphNode[edge[i].y].father;}GraphNod

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。