最小生成树课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南人文科技学院计算机科学技术系

课程设计说明书

课程名称:数据结构

课程代码:408024

题目: 最小生成树问题

年级/专业/班:08级计算机科学与技术一班

学生姓名: 肖禁吴广刘聪

邱建标胡子龙

学号: 08408110 0840807 08408109

08408106 08408108

指导教师: 袁辉勇

开题时间: 2009 年12 月23 日

完成时间: 2010 年 1 月 1 日

目录

摘要 (2)

一、引言 (3)

二、设计目的与任务 (3)

1、课程设计目的 (3)

2、课程设计的任务 (3)

三、设计方案 (4)

1、需求分析 (4)

2、概要设计 (4)

3、详细设计 (5)

4、程序清单 (9)

四、调试分析与体会 (14)

五、运行结果 (15)

六、结论 (16)

摘要

最小生成树是数据结构中图的一种重要应用,在图中对于n个顶点的连通网可以建立许多不同的生成树,最小生成树就是在所有生成树中总的代价最小的生成树。本课程设计是以邻接矩阵作为图的存储结构,分别采用Prim和Kruskal算法求最小生成树。Kruskal 算法和Prim算法是求最小生成树的常用算法它们分别适用于稠密图和稀疏图。最小生成树的应用非常的广,如矿井通风设计和改造最优化方面以及如何搭建最短的网络线缆, 构建造价最低的通讯网络。

关键词:最小生成树;Kruskal算法;Prim算法

Abstract

The minimum Cost spanning tree data structure is an important application of Chinese, in the picture for n vertex even TongWang can create many different spanning tree, minimum spanning tree is in all spanning tree in the total cost of the minimum spanning tree. This course is designed as a figure of the adjacency matrix storage structure, we adopt Prim and Kruskal minimum spanning tree algorithm. Kruskal Prim algorithm and minimum spanning tree algorithm is used for the algorithm respectively applicable and sparsely populated. Minimum spanning tree is very wide application in mines, such as the ventilation design and modification and optimization in how to set up the shortest cable network, constructing the lowest cost of communications network

Keywords: Minimum Cost Spanning Tree;Kruskal algorithm;Prim algorithm

《数据结构》课程设计

------最小生成树

一、引言

《数据结构》是计算机科学与技术专业和信息管理与信息系统专业的必修课之一,是一门综合性的专业基础课。本课程较系统地介绍了软件设计中常用的数据结构以及相应的实现算法,如线性表、栈、队列、树和二叉树,图、检索和排序等,并对性能进行分析和比较,内容非常丰富。

本课程设计我们要解决的问题是图最小生成树问题。要用到图的先相关数据结构和求最小生成树的两种数据结构算法普里姆算法和克鲁斯卡尔算法,以及储存图的边和点的邻接矩阵。

本课程设计要解决的问题构造连通网的最小生成树,我们首先要做的是创建一个邻接矩阵,用以来存储图,然后我们要想好怎样利用普里姆算法和克鲁斯卡尔算法来构造最小生成树。把这两种算法写入主函数,调试好程序。最后写好报告。

二、设计目的与任务

1、课程设计目的

本课程设计的目的是了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;训练用系统的观点和软件开发一般规范进行软件开发。

2、课程设计的任务

问题描述: 已知一个无向连通网表示n个城市以及城市间可能设置的通信线路,其中网的顶点表示城市,边表示两个城市之间的线路,赋于边上的权值表示相应的代价。对于n个点的连通网能建立许多不同的生成树,每一棵生成树都可以是一个通信网。我们要选择一棵生成树,使总的耗费最小。

三、设计方案

1、需求分析

1) 建立一个图,其存储方式可以采用邻接矩阵形式,需要定义两个数组,一个存储

顶点,一个存储边,存储边的数组表明节点间的连通关系和边的权值;。

2) 利用普里姆算法和克鲁斯卡尔算法求网的最小生成树

3) 按顺序输出生成树中各条边以及它们的权值。

2、概要设计

1)抽象数据类型(ADT)如下:

ADT Graph

{ 数据对象V:v是具有相同特性的数据元素的集合,称为顶点集。

数据关系R:R={VR}

VR={|v,w属于v且p(v,w),(v,w)表示从v到w的弧,谓词p(v,w)

定义了弧的意义或信息}

基本操作:

(1)CreatGraph(&G,V,VR);

初始条件:V是图的顶点集,VR是图中弧的集合。

操作结果:按V和VR的定义构造图G。

(2)LocateVex(G, u);

初始条件:图G存在,u和G中顶点有相同的特征。

操作结果:若G中存在顶点u,则返回该顶点在图中的位置;否则返回其他

信息。

(3)DestoryGraph(&u);

初始条件:图G存在。

操作结果:销毁图G。

(4)GetVex(G, v);

初始条件:图G存在,v是图中某个顶点。

操作结果:返回v的值。

(5)NextAdjVex(G, v, w);

初始条件:图G存在,v是图中某个顶点,w是v的邻接顶点。

操作结果:返回v的(相对于w的)下一个邻接顶点。若w是v的最后一个

邻接点,则返回“空”。

(6)BFSTraverse(G, Visit( ));

初始条件:图G存在,Visit是顶点的应用函数。

操作结果:对图进行广度优先遍历。在遍历过程中对每个顶点调用函数Visit

一次且仅一次。一旦visit( )失败,则操作失败。}

相关文档
最新文档