




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
合肥学院计算机科学与技术系课程设计报告20132014 学年第 2 学期课程 数据结构与算法课程设计题目名称用Kruskal算法求解其所有的最小生成树学生姓名童子轩学号1204013037专业班级12级计本3班指导教师何立新2014 年 9 月题目 设计程序完成如下功能:对给定的网和起点,用Kruskal算法的基本思想求解其所有的最小生成树。1、 问题分析及问题定义 题目中的要求是用Kruskal算法来求解最小生成树,首先要弄清楚最小生成树是什么,怎么生成最小生成树以及Kruskal算法的基本思想。 最小生成树的定义是:在图论中,常常将树定义为一个无回路连通图。对于一个带权的无向连通图,其每个生成树所有边上的权值之和可能不同,我们把所有边上权值之和最小的生成树称为图的最小生成树。在一给定的无向图G = (V, E)中,(u, v)代表连接顶点u与顶点v的边,而 w(u,v) 代表此边的权重,若存在T为 E 的子集且为无循环图,使得权重之和w(T) 最小,则此T为G的最小生成树。 最小生成树的特性有:任意一棵树的最小生成树边上的权值之和最小,最小生成树可能不唯一,因为它们的权值之和相等。大多数解决该类问题的算法都基于最小生成树的MST性质。在一个连通网N=V,E中,U是顶点集V的一个非空子集。如果存在一条具有最小权值的边(u,v),其中uU,v(U-V),则必存在一棵包含(u,v)的最小生成树。 克鲁斯卡尔算法的基本思想是:假设 WN=(V,E) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林。之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之。依次类推,直至森林中只有一棵树,也即子图中含有 n-1条边为止。 假如有一张图,有若干个点和边,使用克鲁斯卡尔算法生成最小生成树的基本步骤是: (1)首先将所有的边的长度进行排序,用排序结果作为后面选择边的依据。选择长度最小的一条边,如果存在多条长度一样小的边,任选一条。 (2)如果有长度一样小的边,再选择这样的另外几条边。 (3)按照边的长度递增的顺序来选择边,如果构成环路则将这条边舍弃,选择其他边,当所有点都连通了后,最小生成树就构建完成。 所以解决问题的方案是首先选择一种方式来存储图中各点与边的信息,然后用冒泡排序对所有边的权值进行排序,再用克鲁斯卡尔算法求网的最小生成树,最后按父亲结点和子女结点集的形式输出生成树中各条边以及它们的权值。2、 数据结构的选择和概要设计 题目要求是生成最小生成树,要对图中各边的权值进行比较和选择,所以采用邻接矩阵来存储。 存储图中各点的结构体,bv表示起点,tv表示终点,w表示权值sstruct edgesint bv; int tv; int w; ; 概要设计:(1)对图中各权值进行排序 排序是通过子函数void insertsort(edgeset ge,int e)来实现的,这里面权值的指代方式不同,在建立无向图的时候是通过边的两个顶点来存储权值,但是在权值排序的时候只需要用图中边的数组来比较各权值的大小。利用二重for循环,若一条边的权值比另一条边的权值大,然后利用数组ge0把两条边的起始点、结束点以及权值进行交换,然后再按照换过之后的顺序从小到大把权值输出。(2)利用子函数int seeks(int set,int v)来判断最长小生成树是否构成回路。按照权值排序的结果从最小权值的边开始比较。假如最小生成树的第一条边和第二条边已选定,那么判断是否构成回路就从三条边的起点和终点判断,如果两两相同的话那就构成回路了。(3)克鲁斯卡尔算法构造最小生成树 克鲁斯卡尔的算法思想是假设连通网N=(V,E),则令最小生成树的起始状态为只有n个顶点而无边的非连通图T=(V,),图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加到T中,否则舍去此边而选择下一条代价最小的边。以此类推,直至T中所有的顶点都在同一连通分量上为止。3、 详细设计及编码(1)克鲁斯卡尔算法的实现void kruskal(edgeset ge,int n,int e) int setMAXE,v1,v2,i,j;int x;int y=1; edgeset xyMAXE;for(i=1;in+1;i+) seti=0; i=1; j=1; printf(第%d个最小生成树:n,1);while(j=e&i=n-1) v1=seeks(set,gej.bv); v2=seeks(set,gej.tv); if(v1!=v2) xyj=gej;printf(%d,%d):%dn,gej.bv,gej.tv,gej.w); setv1=v2; i+; /计数器判断顶点数是否溢出 j+; y+;while(gej-1.w=gej.w)printf(第%d个最小生成树为:n,y);for(x=1;x=j-2;x+)printf(%d,%d):%dn,xyx.bv,xyx.tv,xyx.w);printf(%d,%d):%dn,gej.bv,gej.tv,gej.w);j+;y+; (2)各边权值的排序void insertsort(edgeset ge,int e)/对权值进行排序 int i,j; for(i=2;i=e;i+) if(gei.wgei-1.w) ge0=gei; j=i-1; while(ge0.w0)i=seti; return i; (4)主函数main() edgeset geMAXE; int a,n,e,i; printf(请输入顶点个数:); scanf(%d,&n); printf(请输入边的条数:); scanf(%d,&e); printf(请输入边的信息(起点,终点,权值):n); for(i=1;i0)i=seti; return i; void kruskal(edgeset ge,int n,int e) int setMAXE,v1,v2,i,j;int x;int y=1; edgeset xyMAXE;for(i=1;in+1;i+) seti=0; i=1; j=1; printf(第%d个最小生成树:n,1);while(j=e&i=n-1) v1=seeks(set,gej.bv); v2=seeks(set,gej.tv); if(v1!=v2) xyj=gej;printf(%d,%d):%dn,gej.bv,gej.tv,gej.w); setv1=v2; i+; /计数器判断顶点数是否溢出 j+; y+;while(gej-1.w=gej.w)printf(第%d个最小生成树为:n,y);for(x=1;x=j-2;x+)printf(%d,%d):%dn,xyx.bv,xyx.tv,xyx.w);printf(%d,%d):%dn,gej.bv,gej.tv,gej.w);j+;y+; void insertsort(edgeset ge,int e)/对权值进行排序 int i,j; for(i=2;i=e;i+) if(gei.wgei-1.w) ge0=gei; j=i-1; while(ge0.wgej.w) gej+1=gej; j-; gej+1=ge0; main() edgeset geMAXE; int a,n,e,i; printf(请输入顶点个数:); scanf(%d,&n); printf(请输入边的条数:); scanf(%d,&e); printf(请输入边的信息(起点,终点,权值):n); for(i=1;i=e;i+) scanf(%d,%d,%d,&gei.bv,&gei.tv,&gei.w); printf(在下列菜单中进行选择:n); printf(1.kruskal算法(起点,终点)权值):n); printf(2.exit(退出):n); scanf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建设工程项目成本控制方法与案例
- 常微分方程考试真题与解析
- 防溺水家庭宣传手册及安全教育方案
- 法律事务所案件管理流程标准示范
- 数学教学中比例概念理解与教学设计
- 初中数学期末试卷分析与答题技巧
- 二年级语文园地六教学详细设计
- 高考化学无机工艺流程专项突破讲义
- 企业愿景规划及战略实施操作手册
- 企业创新创业激励政策汇编
- 剖宫产术后腹胀护理
- 项目部商务管理办法
- 2025时政考试题及答案
- 2025重庆医科大学附属第一医院(编制外)招聘18人考试参考试题及答案解析
- 精麻药品培训知识课件
- 2025-2026学年人教版(2024)小学美术一年级上册教学计划及进度表
- 超市安全知识培训课件模板
- 2025年高考语文全国二卷真题拓展:语言文字运用“衔接+感情色彩+关联词语+错别字”
- 2025年司法考试题库(附答案)
- 医院不良事件培训课件
- 仪表工安全基础知识培训课件
评论
0/150
提交评论