Kruskal算法求最小生成树.doc(11页).doc
《Kruskal算法求最小生成树.doc(11页).doc》由会员分享,可在线阅读,更多相关《Kruskal算法求最小生成树.doc(11页).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-Kruskal算法求最小生成树.doc-第 7 页荆楚理工学院课程设计成果学院:_计算机工程学院_ 班 级: 14计算机科学与技术一班 学生姓名: 陈志杰 学 号: 设计地点(单位)_B5101_ _设计题目:克鲁斯卡尔算法求最小生成树_ 完成日期: 2015年 1月 6日 指导教师评语: _ _ _ _ 成绩(五级记分制):_ _ _ 教师签名:_ _数据结构课程设计评分表班级计科一班姓名陈志杰指导教师李素若题目:克鲁斯卡尔算法求最小生成树评分标准评分标准分数权重评分的依据得分AC选题10选题符合大纲要求,题目较新颖,工作量大选题基本符合大纲要求,工作量适中工作态度10态度端正,能主动认真
2、完成各个环节的工作,不迟到早退,出勤好。能够完成各环节基本工作,出勤较好。系统设计20能正确描述总体系统框架图,主要函数有正确的流程图。能基本正确描述总体系统框架图,主要函数基本能给出流程图。独立解决问题的能力10具有独立分析、解决问题能力,有一定的创造性,能够独立完成数据库及相关软件的设计与调试工作,程序结构合理,逻辑严谨,功能完善。有一定的分析、解决问题能力。能够在老师指导下完成软件的设计与调试工作,程序功能较完善。答辨问题回答20能准确回答老师提出的问题能基本准确回答老师提出的问题程序运行情况10程序运行正确、界面清晰,测试数据设计合理。程序运行正确、界面较清晰,能给出合适的测试数据。课
3、程设计论文20格式规范,层次清晰,设计思想明确,解决问题方法合理,体会深刻。格式较规范,设计思想基本明确,解决问题方法较合理。总分指导教师(签字):注:介于A和C之间为B级,低于C为D级和E级。按各项指标打分后,总分在90100为优,8089为良,7079为中,6069为及格,60分以下为不及格。目 录1 需求分析1系统目标1主体功能1开发环境12 概要设计1功能模块划分12.2 系统流程图23 详细设计33.1 数据结构33.2 模块设计34测试34.1 测试数据3测试分析45总结与体会6总结:6体会:6参考文献7附录 全部代码81 需求分析 系统目标Kruskal算法是一种按照网中边的权值
4、递增的顺序构造最小生成树的方法。其基本思想是:首先选取全部的n个顶点,将其看成n个连通分量;然后按照网中边的权值由小到大的顺序,不断的选取当前未被选取的边集中权值最小的边。依照生成树的概念,n个结点的生成树有n-1条边,故反复上述过程,直到选取了n-1条边为止,就构成了一棵最小生成树。1.2主体功能在城市规划设计中,假设有n个城市之间建立通信网,则连通n个城市只需n-1条线路。这里自然考虑怎样建立这n-1条路是总费用最省。把这n个城市抽象成一个连通网,网的顶点表示各个城市,顶点与顶点之间的边表示通信线路,各个城市之间的通讯线路看作边,相应的建设花费作为边的权,这样就构成了一个网络。由于在n个城
5、市之间,可行线路有(n*(n-1)/2条,那么,如果选择其中的n-1条线路(边)在n个城市间建成全都能相互通讯的网,并且总的建设花费为最小?这就是求该网络的最小生成树问题。本程序的目的是要建立一棵生成树使总费用最少。开发环境装有Windows 7操作系统的PC机vc+6.0,奔腾4 以上的处理器,编写的程序需要在32MB的内存中运行。推荐在以下基本配置电脑中运行:CPU Intel MMX 233MHz 内存:64MB 硬盘空间:1.5GB 显卡:4MB显存以上的PCI、AGP显卡声卡:最新的PCI声卡 CD-ROM:8x以上CD-ROM2 概要设计功能模块划分运行程序后,程序在内存中申请图g
6、的邻接矩阵表示空间,存放作为用整型数组表示的顶点、边、权值的数据。程序运行过程中调用存放在存放在ESP寄存器中的数据,寄存器中存放着数据、地址和函数传递的中间结果。Kruskal算法在调用寄存器中的整型数据,对边上的权值进行冒泡排序,将权值小的边放在数组的上面,然后在进行一次循环打印,循环过程中调用vset辅助数组的数据进行比较,两个数据不相等就将该边打印出来,不断进行这个过程直至打印出n-1条边(即顶点数减一的次数)。具体的功能流程图如下图2.1功能流程图所示。图2.1 功能流程图 系统流程图输入网图的信息后,将网图的边、顶点、边上的权值记录在一个邻接矩阵中,在后面的kruskal算法中直接
7、扫描邻接矩阵,将边的信息存放在算法定义的边集数组中。图2.2 系统流程图3详细设计3.1 数据结构在Kruskal算法中的数据存放和调用采用整型变量,设置邻接矩阵的最大顶点数,设置图的顶点信息为字符,设置边上权值为整型,定义邻接矩阵图的顶点信息表还有图的顶点数和边数。Kruskal算法中有一个辅助数组,这里的存放的顶点信息的一维数组vexs的类型是用VertexType类型来表示的,这里把它定义成字符,在实际应用中可以根据需要把它重新定义为其他系统预定义类型或结构类型。此外,邻接矩阵edges的类型用EdgeType类型表示,这里把它定义为整型。在实际应用中,若权值的类型是其他数据类型,则只需
8、简单修改即可。 模块设计1. CreateMGraph创建一个邻接矩阵存储的图。在提示下输入无向图的顶点数和边数,然后再输入各个顶点的信息,也就是顶点的编号,再输入顶点数组编号的下标表示的边和边上的权值,这中间非网图的边的权值为1。2.Kruskal算法在扫描到邻接矩阵存放的信息后,用冒泡排序将边上的权值从小到大排列。定义一个辅助数组,该数组是用来判断生成树中是否会出现回路,也就是生成正确的最小生成树。判断边的连通分量编号不相等,将这条边打印出来,并将连通分量编号修改。循环顶点数减一次,将最小生成树打印出来。4 测试4.1 测试数据主要的测试过程有两个:1. 对邻接矩阵的输入和存放。克鲁斯卡尔
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Kruskal 算法 最小 生成 doc 11
限制150内