- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析课程设计报告学院计算机科学与技术专业计算机科学与技术年级 2011 姓名 XXX 学号2013年5月19日题目:最小生成树问题的算法实现及复杂度分析摘要:该程序操作简单,具有一定的应用性。数据结构是计算机科学的算法理论基础和软件设计的技术基础,在计算机领域中有着举足轻重的作用,是计算机学科的核心课程。而最小生成树算法是算法设计与分析中的重要算法,最小生成树也是最短路径算法。最短路径的问题在现实生活中应用非常广泛,如邮递员送信、公路造价等问题。本设计以Visual Studio 2010作为开发平台,C/C++语言作为编程语言,以邻接矩阵作为存储结构,编程实现了最小生成树算法。构造最小生成树有很多算法,本文主要介绍了图的概念、图的遍历,并分析了PRIM经典算法的算法思想,最后用这种经典算法实现了最小生成树的生成。引言:假设要在n个城市之间建立通信联络网,则连接n个城市只需要n-1条线路。这时,自然会考虑这样一个问题,如何在节省费用的前提下建立这个通信网?自然在每两个城市之间都可以设置一条线路,而这相应的就要付出较高的经济代价。n个城市之间最多可以设置n(n-1)/2条线路,那么如何在这些可能的线路中选择n-1 条使总的代价最小呢?可以用连通网来表示n 个城市以及n个城市之间可能设置的通信线路,其中网的顶点表示城市,边表示两个城市之间的线路,赋予边的权值表示相应的代价。对于n个顶点的连通网可以建立许多不同的生成树,每一个生成树都可以是一个通信网。现在要选择这样一棵生成树,也就是使总的代价最小。这个问题便是构造连通网的最小代价生成树(简称最小生成树)的问题。最小生成树是指在所有生成树中,边上权值之和最小的生成树,另外最小生成树也可能是多个,他们之间的权值之和相等。一棵生成树的代价就是树上各边的代价之和。而实现这个运算的经典算法就是普利姆算法。正文普里姆(Prim)算法思想 普里姆算法则从另一个角度构造连通网的最小生成树。它的基本思想是:首先选取图中任意一个顶点 v 作为生成树的根,之后继续往生成树中添加顶点 w,则在顶点 w 和顶点 v 之间必须有边,且该边上的权值应在所有和 v 相邻接的边中属最小。在一般情况下,假设图 G=(V,E) 中已落在生成树上的顶点集为U,则尚未落在生成树上的顶点集为 V-U,则从 (V-U) 顶点集中选取加入生成树的顶点 w 应满足下列条件:它和生成树上的顶点之间的边上的权值是在联接这两类顶点的所有边中权值属最小。从 上述生成树的构造过程中回还可以发现一点,即每个顶点都是通过一条边加入到生成树上的,因此对集合 V-U 中的每个顶点,当它和集合 U 中的顶点有一条以上的边相连时,只需要保留一条权值最小的边即可。由此,在普里姆算法中需要附设一个辅助数组 closedge,以记录从集合 U 到集合 V-U 中每个顶点当前的权值最小边。普里姆算法构造最小生成树的过程普里姆(Prim)算法设计:一:定义模块:头文件、新类型及固定值定义。本程序可接受的最大顶点数为20个,没有连接的点之间,用100表示其权值。#includeiostreamusing namespace std;#define MAX_VERTEX_NUM 20//最大顶点数#define QM 100//最大值#define OK 1#define ERROR 0int visited[MAX_VERTEX_NUM];typedef int VertexType;typedef int VRType;首先设计图的存储模块,即定义类型。本程序采用的图定义是无向图的定义方式,存储模块采用邻接矩阵,便于查找。typedef int VertexType;typedef int VRType;typedef struct ArcCell//邻接矩阵的值{int adj;}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct{VertexType vexs[MAX_VERTEX_NUM];//顶点向量AdjMatrix arcs;//邻接矩阵int vexnum,arcnum;//图的当前顶点数和弧数}MGraph;在实现最小生成树算法时,定义辅助数组,进行判断遍历。typedef struct{VertexType adjvex; VRType lowcost;}closedge [MAX_VERTEX_NUM];最后生成最小生成树时,采用辅助数组进行结果的记录。typedef struct{VertexType head; VRType last;int weight;}result[MAX_VERTEX_NUM];二:实
您可能关注的文档
最近下载
- 2024年安徽省合肥市庐阳区小升初数学试卷附答案解析.doc VIP
- 2025年陕西铜川市事业单位招聘带编入伍高校毕业生3人笔试模拟试题及参考答案详解一套.docx VIP
- 事业单位宣传工作总结PPT.pptx VIP
- TCCIAT_0003-2019_建筑施工承插型轮扣式模板支架安全技术规程.doc VIP
- 超声波探伤培训教材.doc VIP
- 2024年苏州昆山国创投资集团有限公司招聘考试真题 .pdf VIP
- 合并工作底稿完整版带公式.xls VIP
- 2025江苏苏州昆山国创投资集团有限公司第一期招聘17人考试备考题库及答案解析.docx VIP
- 家具设计软件:SketchUp二次开发_(6).动态组件设计与应用.docx VIP
- 2025江苏苏州昆山国创投资集团有限公司第一期招聘17人笔试模拟试题及答案解析.docx VIP
文档评论(0)