ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:30.50KB ,
资源ID:8473786      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8473786.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《算法设计与分析》实验指导书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《算法设计与分析》实验指导书.docx

1、算法设计与分析实验指导书算法设计与分析实验指导书邵阳学院信息工程系2010年3月实验1 最大子段和(分治法)一、实验内容运用分治法,编制程序求解如下问题:给定由n个整数(可能有负整数)组成的序列(a1,a2,an),最大子段和问题要求该序列形如的最大值(1=i=j=n),当序列中所有整数均为负整数时,其最大子段和为0。二、实验要求1进一步掌握递归算法的设计思想以及递归程序的调式技术;2理解这样一个观点,分治与递归经常同时应用在算法设计之中。三、主要仪器设备装有TC或Visual C+的PC机四、实验步骤1算法分析最大子段和问题的分治策略是:(1)划分:按照平衡子问题的原则,将序列(a1, a2

2、, , an)划分成长度相同的两个子序列(a1, , an/2)和(an/21, , an),则会出现以下三种情况: a1, , an的最大子段和a1, , an/2的最大子段和; a1, , an的最大子段和an/21, , a的最大子段和; a1, , an的最大子段和,且(2)求解子问题:对于划分阶段的情况和可递归求解,情况需要分别计算:, 则s1+s2为情况的最大子段和。(3)合并:比较在划分阶段的三种情况下的最大子段和,取三者之中的较大者为原问题的解。分析算法的时间性能,对应划分得到的情况和,需要分别递归求解,对应情况,需要两个并列for循环,时间复杂性是O(n),所以,存在如下递推

3、式:时间复杂性为O(nlogn)。 2参考代码#include int MaxSum(int a, int left, int right) int sum=0, leftsum=0, rightsum=0; int center, i, j; int s1, s2, lefts, rights; if (left=right) /如果序列长度为1,直接求解 if (aleft0) sum=aleft; else sum=0; else center=(left+right)/2; /划分 /对应情况,递归求解 leftsum=MaxSum(a, left, center); /对应情况,递归

4、求解 rightsum=MaxSum(a, center+1, right); /以下对应情况,先求解s1 s1=0; lefts=0; for (i=center; i=left; i-) lefts+=ai; if (leftss1) s1=lefts; /再求解s2 s2=0; rights=0; for (j=center+1; js2) s2=rights; sum=s1+s2; /计算情况的最大子段和 /合并,在sum、leftsum和rightsum中取较大者 if (sumleftsum) sum=leftsum; if (sumrightsum) sum=rightsum;

5、return sum;int main() int a=-20, 11, -4, 13, -5, -2; int left=0, right=5; coutMaxSum(a, left, right) 0 ; xi = yi 时, cij = ci-1j-1 + 1当 i , j 0 ; xi != yi 时, cij = max cij-1, ci-1j 2参考代码#include using namespace std;#define max 100int Lmaxmax; /长度矩阵int Smaxmax; /状态矩阵int CommonOrder(int m, int n, char

6、x, char y, char z) int i, j, k; for (j=0; j=n; j+) L0j=0; / 初始化第0行 for (i=0; i=m; i+) Li0=0; / 初始化第0列 for (i=1; i=m; i+) for (j=1; j=Li-1j) Lij=Lij-1; Sij=2; else Lij=Li-1j; Sij=3; i=m; j=n; k=Lmn; while (i0 & j0) if (Sij=1) zk=xi; k-; i-; j-; else if (Sij=2) j-; else i-; return Lmn;int main() char

7、xmax=x, a, b, c, b, d, b; char ymax=y, a, c, b, b, a, b, d, b, b; char zmax; int m=6, n=9; int len=0, i, j; cout序列X:endl; for (i=1; i=m; i+) coutxit; coutendl; cout序列Y:endl; for (i=1; i=n; i+) coutyit; coutendlendl; len=CommonOrder(m, n, x, y, z); cout最长公共子序列长度:lenendl; cout最长公共子序列为:endl; for (i=1;

8、i=len; i+) coutzit; coutendlendl; cout长度矩阵:endl; for (i=0; i=m; i+) for (j=0; j=n; j+) coutLijt; coutendl; coutendl; cout状态矩阵:endl; for (i=0; i=m; i+) for (j=0; j=n; j+) coutSijt; coutendl; coutendl; return 0;实验3 多机调度问题一、实验内容利用贪心法设计算法求解如下问题:要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上

9、加工处理,但未完工前不允许中断处理。作业不能拆分成更小的子作业。分析算法执行效率。二、实验要求1了解多机调度问题,学会分析该问题,并设计相应算法;2掌握贪心算法设计思想。三、主要仪器设备装有TC或Visual C+的PC机四、实验步骤1算法分析这个问题是一个NP完全问题,到目前为止还没有一个有效的解法。对于这一类问题,用贪心选择策略有时可以设计出较好的近似算法。可以考虑以下的贪心策略:(1)最长处理时间作业优先的贪心选择策略。(2)最短处理时间作业优先的贪心选择策略。(3)作业到达时间优先的贪心选择策略。2运行Visual C+集成开发环境,建立控制台工程。3编写代码,实现一种贪心算法。4假设

10、7个独立的作业由3台机器加工处理,各作业所需的处理时间为:2,14,4,6,16,5,3,写出以上算法求解此问题的结果。5分析算法的运行效率。五、注意事项1对作业进行排序可以使用C+提供的泛型函数sort()来实现。2实验报告中,算法分析需要写出算法实现的具体步骤。3实验报告中,只需要提供算法实现的主要代码。实验4 01背包(贪心法)一、实验内容运用贪心法,设计贪心策略,编制程序求解如下问题:给定n个物品和一个容量为C的背包,物品i的重量是Wi,其价值是Vi,0-1背包问题是如何选择装入背包的物品(物品不可以分割),使得装入背包中的物品的总价值最大?二、实验要求1掌握贪心法的设计思想;2掌握贪

11、心策略的设计方法以及如何针对特定问题,选取合适的贪心策略。 三、主要仪器设备:装有TC或Visual C+的PC机四、实验步骤1算法分析这个问题是一个NP完全问题,到目前为止还没有一个有效的解法。对于这一类问题,用贪心选择策略有时可以设计出较好的近似算法。可以考虑以下的贪心策略:(1)重量最轻的物品优先的贪心选择策略。(2)重量最重的物品优先优先的贪心选择策略。(3)价值最大的物品优先的贪心选择策略。(4)单位价值最大的物品优先的贪心选择策略。2运行Visual C+集成开发环境,建立控制台工程。3编写代码,实现一种贪心算法。4自定义n个物品的重量和价值,以及背包容量C,写出以上算法求解此问题的结果。5分析算法的运行效率。五、注意事项1排序可以使用C+提供的泛型函数sort()来实现。2实验报告中,算法分析需要写出算法实现的具体步骤。3实验报告中,只需要提供算法实现的主要代码。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1