| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

数据结构课程设计报告最小生成树Kruskal算法

文***品

贡献于2023-04-07

字数:4046


计算机科学技术系


课程设计报告
20142015学年第二学期




课程
数结构
课程设计名称
Kruskal算法求生成树
学生姓名

学号

专业班级
软件工程
指导教师


2014年X月
题目:设计程序完成功:定网起点kruskal算法基思想求解生成树
1问题分析务定义
根课设题目求拟整体程序分三模块三模块体分析:
确定图存储形式通题目求具体分析发现该题操作路径输出采边集数组(元素结构体包括起点终点权值)邻接矩阵较方便编程
Kruskal算法该算法设置集合A该集合直某生成树子集步决定否边(uv)添加集合A中添加条件A∪{(uv)}然生成树子集称样边A安全边安全添加A中会破坏述条件
2 数结构选择概设计
存储结构
定义结构体数组空间足够输入字符串存数组中
struct edges
{int bv
int tv
int w
}
概设计
算法思想 :
算法会先权重非递减序图中边进行排序然空子图开始扫描序表试图列表中条边加前子图中然种添加应导致回路果产生回路条边跳图顶点包含构造树中算法停止
算法基思路:

K r u s k a l算法次选择n 1条边贪婪准:剩边中选择条会产生环路具耗费边加入已选择边集合中注意选取边产生环路形成棵生成树K r u s k a l算法分e 步中e 网络中边数目耗费递增序考虑e 条边次考虑条边考虑某条边时加入已选边集合中会出现环路抛弃否选入
假设点标号(djpj)中d起源点点j短路径长度(顶点身短路径零路(没弧路)长度等零)pjsj短路径中j点前点求解起源点s点j短路径算法基程:
1) 初始化起源点设置:①ds0ps空②点:di∞pi?③标记起源点s记ks点设未标记
2) k直接连接未标记点j距离设置:
djmin[dj dk+lkj]
式中lkj点kj直接连接距离
3) 选取点未标记结点中选取dj中i:
dimin[dj 未标记点j]
点i选短路径中点设已标记
4)找点i前点已标记点中找直接连接i点j*作前点设置: ij*
5)标记点i果点已标记算法完全推出否记ki转2)继续
程序中求两点间短路径算法步骤:
① 调dijkstra算法
② path中第终点元素回溯起点显示出
3详细设计编码
功模块图
开始
输入顶点数n
输入边数e
输入边集
显示菜单进行选择
求两点间短距离
求两点间短距离
Kruskal算法
结束

图31 功模块图
流程图分析
1 函数
开始
输入顶点数n
输入边数e
输入选项a
a1
调insertsortkruskal函数
a2
输入v0
调dijkstraprintpath1函数
a3
输入v0v1
调dijkstraprintpath2函数
输入a4
结束

图32函数流程图
2 insertsort函数
开始
int ij
for(i2ige[i]wge[0]ge[i]
ji1
ge[0]w ge[j+1]ge[j]
j
Y
ge[j+1]ge[0]
N
Y
结束
N

图33insertsort函数流程图
3.Kruskal函数
开始
int set[MAXE]v1v2ij
for(i1i set[i]0
i1
j1
jv1v2
v1seeks(setge[j]bv)
v2seeks(setge[j]tv)
printf((dd)d\nge[j]bvge[j]tvge[j]w)
set[v1]v2
i++
j++
Y
Y
结束
N
N


图34 Kruskal函数流程图
4 机调试程
调试程
调试程序时遇类问题:
1 时函数中数组中数法存储
2 进行检验发现没申请空间
3 源程序开头#define定义数值数组时知道空间
4 函数中时出现负值
5 进行检验发现程序中∞32767代cost[u][w]32767cost[u][w]+dist[u]肯定溢出负值造成权值出现负值
6 cost[u][w]32767dist[w]肯定需重新置数if(s[w]0&&cost[u][w]+dist[u]程序执行程
系统说明:
1 输入数整数字符串(123)
2 系统建立带权图够Kruskal算法求改图生成树够选择图意点做根结点够求两点间短距离
3 该系统会菜单提示进行选项:
1kruskal
4exit
5测试结果分析
结果截图

图51 输入形式

图52 kruskal算法输出

图53kruskal算法输出
算法描述
1 Kruskal函数:
Kruskal需序边集数组先边集数组排序次执行中需判断否构成回路需判断函数seeksKruskal中调seeks
2 dijkstra函数:
源余点短路径n1条设变量vnum作计数器控制循环该函数关键dist数组重新置数该置数条件:该顶点访问新起点该点权值加新起点源点权值该点原权值第次设:if(s[w]0&&cost[u][w]+dist[u]6户说明
1 开创天中文c++软件
2 写代码<附录部分>导入软件中运行
3 述说明运行检查程序
7参考文献
[1]王昆仑李红数结构算法北京:中国铁道出版社2006年5月
[2]严蔚敏 吴伟民 数结构(C语言版)清华学出版社2007
[3]张德富 算法设计分析国防工业出版社2009
[4]朱青 计算机算法程序设计清华学出版社2009
[5]徐宝文李志 C程序设计语言机械工业出版社2004
8附 录(关键部分程序清单)
程序代码
#includestdioh
#define MAXE 100
struct edges
{int bv 起点
int tv 终点
int w权值
}
typedef struct edges edgeset

int seeks(int set[]int v) 顶点集顶点v
{
int i
iv
while(set[i]>0)
iset[i]
return i
}

void kruskal(edgeset ge[]int nint e) 边集顶点数n边数e
{

int set[MAXE]v1v2ijxy1 输入顶点集
edgeset xy[MAXE]
for(i1iset[i]0
i1
j1
printf(第d生成树\n1)判断第生成树

while(j{
v1seeks(setge[j]bv) 起点
v2seeks(setge[j]tv) 终点
if(v1v2)
{
xy[j]ge[j]
printf((dd)d\nge[j]bvge[j]tvge[j]w)
set[v1]v2
i++ 计数器(判断顶点数否溢出)
}
j++
}
y++

while(ge[j1]wge[j]w){ 输出生成树
printf(第d生成树\ny)
for(x1x printf((dd)d\nxy[x]bvxy[x]tvxy[x]w)
}
printf((dd)d\nge[j]bvge[j]tvge[j]w)
j++
y++
}


}

void insertsort(edgeset ge[]int e) 权值进行排序
{
int ij
for(i2iif(ge[i]w{
ge[0]ge[i]
ji1
while(ge[0]w{
ge[j+1]ge[j]
j
}
ge[j+1]ge[0]
}
}
main()
{
edgeset ge[MAXE]
int anei
printf(请输入顶点数)
scanf(d&n)
printf(请输入边条数)
scanf(d&e)
printf(请输入边信息(起点终点权值)\n)
for(i1iscanf(ddd&ge[i]bv&ge[i]tv&ge[i]w)
printf(列菜单中进行选择:\n)
printf(1kruskal算法((起点终点)权值):\n)

printf(2exit(退出):\n)
scanf(d&a)
while(a2)
{
switch(a)
{
case 1insertsort(gee)
kruskal(gene)
break

}
printf(列菜单中进行选择:\n)
printf(1kruskal算法((起点终点)权值):\n)

printf(2exit(退出):\n)
scanf(d&a)
}
return 1
}
合肥学院
文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

数据结构和算法课程设计题目

XX大学课程设计课程名称: 数 据 结 构 与 算 法院(部)名 称: 信息与计算科学学院组长姓名学号 同组人员姓名指导教师姓名: 设 计 时 间: 2010.6.7----2009.6.27一、《数据结构与算法》课程设计参考题目(一)参考题目一(每位同学选作一个,同组人员

文***品 11个月前 上传382   0

最小生成树算法过程详解(信息系统项目管理师考试)

最小生成树算法过程详解针对最小生成树算法这一知识点,相当一部分课本和相关参考书对算法过程讲解并不是特别详尽。本文主要针对信息系统项目管理师考试,对最小生成树算法过程进行逐步解析,以更加促进对知识点的理解和掌握。1.概念在连通的带权图的所有生成树中,权值和最小的那棵生成树(包含图中所有顶点的树)称作最小生成树(权值:在数据结构领域,权值是树或者图中两个结点路径上的值,这个值表明一种代价,如从

龘***覇 2年前 上传286   0

哈夫曼树应用数据结构课程设计报告

数据结构课程设计报告设计题目:哈夫曼树应用 专 业 : 软件工程 班 级 : 软件 学 生 : 学 号 : 指导教师 : 起止时间 :2011-07-04—2011-07

文***品 2年前 上传472   0

算法与数据结构的商品货架管理课程设计报告(还有程序源代码)

课程设计课 程: 算法与数据结构 题 目: 商品货架管理 专 业: 计算机类 班 级: 座 号: 姓 名: 2012年 X月 X 日一、要解决的问题商店货架以栈

文***品 1年前 上传323   0

数据结构课程设计报告——图书管理系统

课程设计报告 课设课题: 课程设计——图书管理系统 学 院: 电 子 信 息 学 院 专 业: 网 络 工 程 姓 名: 班级学号: 指导教师:

文***享 3年前 上传681   0

车牌号管理系统数据结构课程设计报告

XX 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 车牌号管理系统 姓 名: 学 号: 专业班级: 软件工程 系 (院): 计算机工程学院

文***享 3年前 上传431   0

数据结构课程设计报告n维矩阵乘法

设计一个矩阵相乘的程序,首先从键盘输入两个矩阵a,b的内容,并输出两个矩阵,输出ab-1结果。

文***品 4年前 上传712   0

学生成绩管理系统设计课程设计

学生成绩管理系统设计目 录引言 1 系统概述 1.1 系统功能

z***u 1年前 上传341   0

操作系统课程设计银行家算法报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 专 业:计算机科学与技术 指导教师: 时 间: 2009 XX大学 计

文***品 3年前 上传618   0

合工大页面置换算法操作系统课程设计报告

计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31.最佳(Optimal)置换算法 32.先进先出(FIFO)页面置换算法 43.最近最久未使

文***品 3年前 上传557   0

《操作系统 银行家算法》课程设计报告

《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 专 业:计算机科学与技术 XX大学 计算机科学与信息学院目 录1 课程设计目的 ………………………………………

文***品 3年前 上传812   0

银行家算法《操作系统》课程设计报告

《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程学院一、实验要求和实验目的实验目的:本课程设计是学生学习完《操作系统原理》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统

文***享 3年前 上传697   0

数据结构实习报告

数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给出测试数据;5、  合作人及其分工二、设计说明1、  主要的数据结构设计说明;2、  程序的主要流程图;3、  程序的主要模块,要求对主要流程图中出现的模块进行说明4、  程序的主要函数及其伪代码说明

s***n 8年前 上传1049   0

线索二叉树算法的设计与实现

随着时代的不断进步,计算机技术也随之得到发展。数据结构在计算机技术的发展中起到巨大的作用。数据结构为构建出高效的计算机算法打下了坚实的基础。良好的数据结构能够提高算法效率的同时也能减少对系统资源的占用[

王***朝 3年前 上传1003   0

数据结构(C语言版)课程设计报告表达式求值说明书

XX大学数据结构课程设计说明书题目: 表达式求值 院 系: 计算机科学与工程学院 专业班级: 计算机班 学 号: 学生姓名: 指导教师:  2013年 X 月X 日

文***享 3年前 上传539   0

数据结构课程设计报告多关键字排序高考排序

XX工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 多关键字排序 姓 名: 学 号: 专业班级: 网络工程 系 (院): 计算机工程学院

文***享 6个月前 上传190   0

高校教材管理系统数据结构课程设计

数据结构课程设计题 目: 高校教材管理系统 课 程 设 计 任 务 书一、课程设计题目: 高校教材管理系统 二、课程设计应解决的主要问题: (1) 实现出版社、教材类型等的管理

文***品 3年前 上传780   0

设计散列表实现电话号码查找系统数据结构课程设计

XX学院课程设计报告书专 业:计算机科学与技术 课程设计名称:《数据结构课程设计》题 目:设计散列表实现电话号码查找系统班 级: 学    号: 姓    名: 同 组 人 员: 无指 导 老 师: 完 成 时 间: 摘要电话号码的查找系统软件是现在很实用工具,随着时代的发展,信息化得发

文***品 2年前 上传581   0

数据结构文本编辑器课程设计

数据结构课程设计报告一. 需求分析1.题目及要求名称:简单的文本编辑器内容:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行。要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一字符或者子串,并将后面的字符前移。

文***享 1年前 上传307   0

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文   关于数据结构课程设计心得体会(1)   这学期开始两周时间是我们自己选题上机的时间, 这学期开始两周时间是我们自己选题上机的时间,虽然 上机时间只有短短两个星期但从中确实学到了不少知识。 上机时间只有短短两个星期但从中确实学到了不少知识。   数据结构可以说是计算机里一门基础课程, 据结构可以说是计算机里一门基础课程,但我觉得我们一低 计算机里一门

焦***宝 5年前 上传1419   0

数据结构课程设计图的建立与输出

数据结构课程设计设计题目:图的建立与输出系 别: 电子与信息工程学院 专 业: 电子信息工程 班 级: 级班 姓 名: 学 号: 指导教师:

文***享 6个月前 上传179   0

数据结构课程设计舞伴配对程序

沈阳航空航天大学课 程 设 计 报 告课程设计名称:数据结构课程设计课程设计题目:舞伴配对程序院(系):计算机学院专 业:计算机科学与技术班 级: 学 号:姓 名:指导教师:完成日期:2014年目 录第1章 概要设计 11.1题目的内容与要求 11.2总体结构 2第2章 详细设计 32.1主函数的流程图 32.

文***享 1年前 上传289   0

数据结构课程设计运动会分数统计(C语言版)

数据结构课程设计运动会分数统计(C语言版)目 录第一章 绪 论 1 1.1 运动会分数统计系统的背景 1 1.2 运动会分数统计系统的任务和目标 1第二章 运动会分数统计系统的需求分析 2 2.1 功能需求 2 2.2 功能模块 2 2.3 数据要求 3 2.4 性能要求 3第三章 系统开发工具及关键技术 4 3.1 系统开

文***品 3年前 上传643   0

数据结构实验报告

实验报告课程:数据结构 班级:网络工程 学号: 姓名: 实验1 链表的插入和删除一、实验目的 1、 了解单链表、循环链表和双链表的基本知识;2、 掌握算法思想和数据结构的描述;3、 掌握链表的插入、删除的相关语句及基本方法。二、 实验步骤

z***u 2年前 上传334   0

数据结构实践报告

 数据结构实践报告学 号: 姓 名: 班 级: 班 指导老师: 时 间: 2016-12-21

文***享 1年前 上传595   0