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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

算法设计课程设计报告Word格式文档下载.docx

1、作为初学者,我们可以用f(n)的数量级O来粗略地判断算法的时间复杂性,如上例中的时间复杂性可粗略地表示为T(n)=O(n2)。2.空间复杂性:例2:将一一维数组的数据(n个)逆序存放到原数组中,下面是实现该问题的两种算法:算法1:for i: bi:=an-i+1; for i: ai:=bi;算法2:=1 to n div 2 do begin t:=ai;ai:=an-i-1;an-i-1:=t end;算法1的时间复杂度为2n,空间复杂度为2n算法2的时间复杂度为3*n/2,空间复杂度为n+1显然算法2比算法1优,这两种算法的空间复杂度可粗略地表示为S(n)=O(n)3、从下面算法策略中

2、自选一组,结合某具体问题的求解来介绍算法思想,并加以总结、比较: 递归与分治、动态规划与贪心法、回溯法与分支限界法动态规划算法类似于分治法,基本思想也是将待求解问题分解成若干个子问题。化整为零,减少了运算量。贪心算法,是永不知足的求最优解,有点类似于我们所说的完美主义者。两者之间有相同点,总结来说某种程度上,动规是贪心的泛化,贪心是动规的特例贪心:A最优+B最优动态规划:(A+B)最优就单步而言贪心的A最优是前一步的结果,B最优需要遍历找到动态规划的A为前一步的可行解,需要选择一个B后再去找A动态规划算法之0-1背包问题:给定n种物品和一个背包。物品i的重量是Wi,其价值为Vi,背包的容量为C

3、。应如何选择装入背包的物品,使得装入背包中物品的总价值最大?与0-1背包问题类似,所不同的是在选择物品i装入背包时,可以选择物品i的一部分,而不一定要全部装入背包,1in。这2类问题都具有最优子结构性质,极为相似,但背包问题可以用贪心算法求解,而0-1背包问题却不能用贪心算法求解。用贪心算法解背包问题的基本步骤是,首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。 具体代码如下:1. /4d2

4、贪心算法背包问题2. #includestdafx.h3. #include4. usingnamespacestd;5. 6. constintN=3;7. 8. voidKnapsack(intn,floatM,floatv,floatw,floatx);9. 10. intmain()11. 12. floatM50;/背包所能容纳的重量13. /这里给定的物品按单位价值减序排序14. w0,10,20,30;/下标从1开始15. v0,60,100,120;16. 17. xN+1;18. 19. cout背包所能容纳的重量为:Mendl;20. 待装物品的重量和价值分别为:21. f

5、or(inti=1;i=N;i+)22. 23. :(wi,vi)24. 25. 26. Knapsack(N,M,v,w,x);27. 28. 选择装下的物品比例如下:29. 30. 31. xic)50. 51. break;52. 53. xi=1;54. c-=wi;55. 56. 57. /物品i只有部分被装下58. (i= Wi ), fi-1,j fi,j表示在前i件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。Pi表示第i件物品的价值。决策:为了背包中物品总价值最大化,第 i件物品应该放入背包中吗 ?题目描述:有编号分别为a,b,c,d,e的五件物品,它们的重量

6、分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包,如何让背包里装入的物品具有最大的价值总和?nameweightvalue12345678910a1215b11cde这表是至底向上,从左到右生成的。为了叙述方便,用e2单元格表示e行2列的单元格,这个单元格的意义是用来表示只有物品e时,有个承重为2的背包,那么这个背包的最大价值是0,因为e物品的重量是4,背包装不了。对于d2单元格,表示只有物品e,d时,承重为2的背包,所能装入的最大价值,仍然是0,因为物品e,d都不是这个背包能装的。同理,c2=0,b2=3,a2=6。对于承重为8的背包,a8=15,是怎

7、么得出的呢?根据01背包的状态转换方程,需要考察两个值,一个是fi-1,j,对于这个例子来说就是b8的值9,另一个是fi-1,j-Wi+Pi;在这里,fi-1,j表示我有一个承重为8的背包,当只有物品b,c,d,e四件可选时,这个背包能装入的最大价值fi-1,j-Wi表示我有一个承重为6的背包(等于当前背包承重减去物品a的重量),当只有物品b,c,d,e四件可选时,这个背包能装入的最大价值fi-1,j-Wi就是指单元格b6,值为9,Pi指的是a物品的价值,即6由于fi-1,j-Wi+Pi = 9 + 6 = 15 大于fi-1,j = 9,所以物品a应该放入承重为8的背包以下是actionsc

8、ript3 的代码1. publicfunctionget01PackageAnswer(bagItems:Array,bagSize:int):Array2. 3. varbagMatrix:Array=;4. i:int;item:PackageItem;6. for(i=0;bagItems.length;8. bagMatrixi0;10. for(i=1;=bagSize;11. for(varj:int=0;ji)/i背包转不下itemif(j=0)bagMatrixjielsebagMatrixji=bagMatrixj-1i;/将item装入背包后的价值总和itemInBag:

9、item.value;continue;35. 37. 38. itemInBagbagMatrixj-1i-item.weight+item.value;(bagMatrixj-1i?bagMatrixj-1i:itemInBag)/findansweranswers:curSize:bagSize;for(i=bagItems.length-1;i=0;i-)bagItemsiif(curSize=0)if(i=0&curSize0)answers.push(item.name);if(bagMatrixicurSize-bagMatrixi-1curSize-item.weight=item.value)62. -=item.weight;63. 64. 65. answers;66. 四 结合实际,谈谈本课程学习的收获、体会、建议与意见等。通过算法设计与分析的讲解,我回归了以前的知识点,以前在学习C语言和C+ 的时候对贪心算法,回溯法,有一些了解,在老师的更细心讲解下我对算法的重要性和策略有更好的理解,在面向对象的时候学会了一个公式 编程=数据结构+算法。算法是指令,就像带兵打仗的将军,是挥斥方遒的决定性策略。策略的评估可以用时间复杂度和空间复杂度来计算。

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

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