




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 生 实 验 报 告学 院: 软件与通信工程学院 课程名称: 算法设计与分析 专业班级: 软件工程142班 姓 名: 周 平 学 号: 0143987 学生实验报告学生姓名周平学号0143987同组人:无实验项目最小耗费生成树Prim算法必修 选修 演示性实验 验证性实验 操作性实验 综合性实验实验地点W101实验仪器台号K03指导教师尹爱华实验日期及节次5-234一、实验综述实现贪心法的下列六个算法之一:1、可切割背包问题2、单源点最短路径求解算法Dijkstra算法3、Dijkstra算法的改进版4、最小耗费生成树Kruskal算法5、最小耗费生成树Prim算法6、最小耗费生成树Prim算法的改进版要求与说明:1、各人独立完成,2、实验报告要求有:算法说明与描述、代码、数据集合(各算法1 要求达到百、千级)。3、实验报告要有2-3个截图,包括导入数据、重要中间过程、最后结果等;4、额外完成所实现的算法,每完成一个加 1 分;5、程序要求用 C 语言完成,每个实验报告的代码都会被测试,对运行环境有特别要求的需要专门说明,否则,程序测试不通过责任自负;6、实验报告都有步骤分,但是,程序测试结果与实验报告结果不相符的,将被加重扣分;7、严禁抄袭代码重复度超过90%者视作抄袭,抄袭者以 0 分记,可以对评审提出质疑。疑。2、实验仪器、设备或软件1、个人电脑2、Microsoft Visual Studio 2015二、实验过程(实验步骤、记录、数据、分析)实验代码如下:#include #include #define MAX 100#define MAXCOST 0x7fffffffint graphMAXMAX;int Prim(int graphMAX, int n)/* lowcosti记录以i为终点的边的最小权值,当lowcosti=0时表示终点i加入生成树 */int lowcostMAX;/* msti记录对应lowcosti的起点,当msti=0时表示起点i加入生成树 */int mstMAX;int i, j, min, minid, sum = 0;/* 默认选择1号节点加入生成树,从2号节点开始初始化 */for (i = 2; i = n; i+)/* 最短距离初始化为其他节点到1号节点的距离 */lowcosti = graph1i;/* 标记所有节点的起点皆为默认的1号节点 */msti = 1;/* 标记1号节点加入生成树 */mst1 = 0;/* n个节点至少需要n-1条边构成最小生成树 */for (i = 2; i = n; i+)min = MAXCOST;minid = 0;/* 找满足条件的最小权值边的节点minid */for (j = 2; j = n; j+)/* 边权值较小且不在生成树中 */if (lowcostj min & lowcostj != 0)min = lowcostj;minid = j;/* 输出生成树边的信息:起点,终点,权值 */printf(%c - %c : %dn, mstminid + A - 1, minid + A - 1, min);/* 累加权值 */sum += min;/* 标记节点minid加入生成树 */lowcostminid = 0;/* 更新当前节点minid到其他节点的权值 */for (j = 2; j = n; j+)/* 发现更小的权值 */if (graphminidj lowcostj)/* 更新权值信息 */lowcostj = graphminidj;/* 更新最小权值边的起点 */mstj = minid;/* 返回最小权值和 */return sum;int main()printf(请输入点数和边数:);int i, j, k, m, n;int x, y, cost;char chx, chy;scanf(%d%d, &m, &n);/* 读取节点和边的数目 */getchar();printf(请输入边的信息:);/* 初始化图,所有节点间距离为无穷大 */for (i = 1; i = m; i+)for (j = 1; j = m; j+)graphij = MAXCOST;/* 读取边信息 */for (k = 0; k n; k+)scanf(%c %c %d, &chx, &chy, &cost);getchar();i = chx - A + 1;j = chy - A + 1;graphij = cost;graphji = cost;/* 求解最小生成树 */cost = Prim(graph, m);/* 输出最小权值和 */printf(Total:%dn, cost);/system(pause);return 0;代码说明:1、2个for循环都是从2开始的,因为一般我们默认开始就把第一个节点加入生成树,因此之后不需要再次寻找它。2、lowcosti记录的是以节点i为终点的最小边权值。初始化时因为默认把第一个节点加入生成树,因此lowcosti = graph1i,即最小边权值就是各节点到1号节点的边权值。3、msti记录的是lowcosti对应的起点,这样有起点,有终点,即可唯一确定一条边了。初始化时msti = 1,即每条边都是从1号节点出发。编写程序:对于如下一个带权无向图,给出节点个数以及所有边权值,用Prim算法求最小生成树。三、结论1、实验结果输入数据:7 11A B 7A D 5B C 8B D 9B E 7C E 5D E 15D F 6E F 8E G 9F G 11输出:A - D : 5D - F : 6A - B : 7B - E : 7E - C : 5E - G : 9Total:39实验结果如图:2、分析讨论Prim算法的基本思想如下:首先从V中任取一个顶点(假定取v1),将生成树T置为仅有一个结点v1的树,即U=v1;然后只要U是V的真子集,就在所有那些一个端点在T中,另一个端点在T外的边中,找一条最短(即权值最小 )的边。假定符合条件的最短边为(vi,vj),则把该条边和其不在T中的顶
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 腰椎间盘突出合并马尾综合征护理查房
- 桡骨远端骨折合并腕管综合征护理查房
- 2020年1月国开电大法律事务专科《行政法与行政诉讼法》期末纸质考试试题及答案
- 广西南宁市第十中学2025年春季学期高一年级历史第21课战时共产主义到斯大林模式同步测试卷
- 社区美篇消防知识培训课件
- 宁夏银川市2024-2025学年高一下学期期末地理试卷(含答案)
- 小车挂靠公司合同范本
- 读书合同范本模板
- 现在的装修合同范本
- 墙体修复合同范本
- 厂区参观流程规范
- 民间配资双方协议书范本
- 脑梗死取栓术后护理查房
- 国航股份新建配餐楼项目一期工程报告表
- 鸿合交互平板一体机培训
- 2024-2025中国商旅管理白皮书
- 儿童A族链球菌咽扁桃体炎临床诊疗专家共识(2025)解读
- 人体解剖实验管理制度
- 夏季安全生产试题及答案
- 二氧化硅包覆金纳米粒子核壳结构的构筑及负载染料后的性能与应用探索
- 配网防外破管理制度
评论
0/150
提交评论