


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机算法设计与分析(课程设计) 用分治法解决合并排序问题及用贪心法解 决单源最短路径问题及用回溯法解决0-1背 包问题 一.课程设计目的 本课程是一门实践性非常强的课程,要求学生能够将所学算法应用到实际中,灵活解决实际问题。通过课程设计,能够培养学生独立思考,综合分析与动手能力,并能加深对课堂所学理论和概念的理解,可以训练学生的算法设计的思维,培养学生算法的分析能力。 二课程设计内容 通过设计,在逻辑特性和物理表示,数据结构的选择应用,算法的设计及实现等方面加深对课程基本内容的理解和综合应用。 1 用分治法解决合并排序的问题 2 用贪心法解决单源最短路径问题 3 用回溯法解决0-1背包问题
2、三概要设计 1合并排序问题:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。 解合并排序问题的分治法的主要程序代码描述如下: template void mergesort(t a,int left,int right) t *b=new intright-left+1; if(leftint i=(left+right)/2;/取中点 mergesort(a,left,i);/左半边进行合并排序 mergesort(a,i+1,right);/右半边进行合并排序 merge(a,b,left,i,right);/左右合并到b
3、中 copy(a,b,left,right);/从b拷贝回来 2单源最短路径问题:设置顶点集合s并不断地做贪心选择来扩充这个集合。一个顶点属于集合s,当且仅当从源到该顶点的最短路径长度已知。初始时,s中仅含有源。设u是g的某一个顶点,把从源到u且中间只经过s中顶点的路称为从源到u的特殊路径,并用数组dist记录当前每个顶点所对应的最短特殊路径长度。dijkstra算法每次从v-s中取出具有最短特殊路径长度的顶点u,将u添加到s中,同时对数组dist做必要的修改。一旦s包含了所有v中顶点,dist就记录了从源到所有其他顶点之间的最短路径长度。 解单源最短路径问题的贪心算法主要程序代码描述如下:
4、for(i = 0; i wi=new intn; cout cinwij;/输入邻接矩阵w(n)(n) for(s0=1,i=1;i disti=w0i;/ if(disti pi=-1;/没路径的记为-1 for(i=1;i t=maxint; k=1; 3.0-1背包问题:0-1背包问题可用子集数表示。在搜索解空间树时,只要其左儿子结点是一个可行结点,搜索就进入其左子树。当右子树中有可能包含最优解时才进入右子树搜索。否则将右子树剪去。设r是当前剩余物品价值总和;cp是当前价值;bestp是当前最优价值。 当cp+r typep knap:bound(int i) /计算上界 typew
5、cleft=c-cw;/剩余容量 typep b=cp; /以物品单位重量价值递减序装入物品 while(iif(i四详细设计与实现 1用分治法解决合并排序源代码描述如下: #include #include /这个函数将b0至bright-left+1拷贝到aleft至aright template void copy(t a,t b,int left,int right) int size=right-left+1; for(int i=0;ialeft+=bi; /这个函数合并有序数组aleft:i,ai+1:right到b,得到新的有序数组b template void merge(t
6、 a,t b,int left,int i,int right) int a1cout=left,/指向第一个数组开头 a1end=i,/指向第一个数组结尾 a2cout=i+1,/指向第二个数组开头 a2end=right,/指向第二个数组结尾 bcout=0;/指向b中的元素 for(int j=0;jif(a1couta1end)bbcout+=aa2cout+;continue;/如果第一个数组结束,拷贝第二个数组的元素到b if(a2couta2end)bbcout+=aa1cout+;continue;/如果第二个数组结束,拷贝第一个数组的元素到b if(aa1coutbbcout+=aa2cout+;continue; /对数组aleft:right进行合并排序 template void mergesort(t a,int left,int right) t *b=new intright-left+1; if(leftint i=(left+right)/2;/取中点 mergesort(a,left,i);/左半边进行合并排序 mergesort(a,i+1,right);/右半边进行合并排序 me
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025有关企业用房借款合同范例
- 2025商业店铺租赁合同模板示例
- 高二政治考试题及答案
- 赣州社工考试题目及答案
- 辅助护理考试题及答案解析
- 二外日语考试题及答案
- 动物园考试题及答案
- 2025年中国全无苯全哑清面漆项目商业计划书
- 电商规划考试题及答案
- 工业金属锻件项目可行性分析报告范文模板
- 2025-2030年中国消防机器人行业市场深度调研及前景趋势与投资研究报告
- 2025年全国新高考I卷高考全国一卷真题英语试卷(真题+答案)
- 中国蛇伤救治指南2024
- 勤劳的小蜜蜂课件
- 自体输血管理制度与技术规范
- 《电商平台提价运营策略对比分析-以拼多多与淘宝特价版为例》12000字
- 2024秋七年级英语上册 Unit 3 Is this your pencil Period 1 Section A (1a-1c)教学实录(新版)人教新目标版
- 《神经外科手术的麻醉》课件
- 2025年上半年泸州市纳溪区总工会招考社会化专职工会工作者易考易错模拟试题(共500题)试卷后附参考答案
- 网格员安全知识培训课件
- GB/T 15972.40-2024光纤试验方法规范第40部分:传输特性的测量方法和试验程序衰减
评论
0/150
提交评论