收藏 分享(赏)

0-1背包问题的算法设计策略对比与分析报告.doc

上传人:精品资料 文档编号:8320031 上传时间:2019-06-20 格式:DOC 页数:12 大小:174.50KB
下载 相关 举报
0-1背包问题的算法设计策略对比与分析报告.doc_第1页
第1页 / 共12页
0-1背包问题的算法设计策略对比与分析报告.doc_第2页
第2页 / 共12页
0-1背包问题的算法设计策略对比与分析报告.doc_第3页
第3页 / 共12页
0-1背包问题的算法设计策略对比与分析报告.doc_第4页
第4页 / 共12页
0-1背包问题的算法设计策略对比与分析报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、 算法设计与分析大作业班 级: 电子 154 姓 名: 吴志勇 学 号: 1049731503279 任课老师: 李瑞芳 日 期: 2015.12.25 算法设计与分析课程论文共 12 页 第 1 页0-1背包问题的算法设计策略对比与分析0 引言对于计算机科学来说,算法的概念是至关重要的。在一个大型软件系统的开发中,设计出有效的算法将起到决定性的作用。通俗的讲,算法是解决问题的一种方法。也因此, 算法分析与设计成为计算科学的核心问题之一,也是计算机科学与技术专业本科及研究生的一门重要的专业基础课。算法分析与设计是计算机软件开发人员必修课,软件的效率和稳定性取决于软件中所采用的算法;对于一般程序

2、员和计算机专业学生,学习算法设计与分析课程,可以开阔编程思路,编写出优质程序。通过老师的解析,培养我们怎样分析算法的“好”于“ 坏”,怎样设计算法,并以广泛用于计算机科学中的算法为例,对种类不同难度的算法设计进行系统的介绍与比较。本课程将培养学生严格的设计与分析算法的思维方式,改变随意拼凑算法的习惯。本课程要求具备离散数学、程序设计语言、数据结构等先行课课程的知识。1 算法复杂性分析的方法介绍算法复杂性的高低体现在运行该算法所需要的计算机资源的多少上,所需的资源越多,该算法的复杂性越高;反之,所需资源越少,该算法的复杂性越低。对计算机资源,最重要的是时间与空间(即存储器)资源。因此,算法的复杂

3、性有时间复杂性T(n)与空间复杂性S(n)之分。算法复杂性是算法运行所需要的计算机资源的量,这个量应集中反映算法的效率,并从运行该算法的实际计算机中抽象出来,换句话说,这个量应该只依赖要解决的问题规模算法的输入和算法本身的函数。用C表示复杂性,N,I和A表示问题的规模、算法的输入和算法本身规模,则有如下表达式:C=F(N,I,A) T=F(N,I,A) S=F(N,I,A)其中F(N,I,A)是一个三元函数。通常A隐含在复杂性函数名当中,因此表达式中一般不写A。即:C=F(N,I) T=F(N,I) S=F(N,I)算法复杂性中时间与空间复杂性算法相似,所以以下算法复杂性主要以时间复杂性为例:

4、算法的时间复杂性一般分为三种情况:最坏情况、最好情况和平均情况。下面描述算法复杂性时都是用的简化的复杂性算法分析,引入了渐近意义的记号O,,和o。O表示渐近上界 表示渐近下界:表示同阶 即: f(n)= O(g(n)且 f(n)= (g(n)) 2 常见的算法分析设计策略介绍2.1 递归与分治策略分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原

5、问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。0-1 背包问题的算法设计策略对比与分析共 12 页 第 2 页递归算法举例:Fibonacci数列无穷数列1,1,2,3,5,8,13,21,34,55,称为Fibonacci数列。它可以递归地定义为:第n个Fibonacci数可递归地计算如下:int fibonacci(int n)if (n int BinarySearch(Type a, const Typeif (x = am) return m;if (x v

6、oid Loading(int x, Type w, Type c, int n)int *t = new int n+1;Sort(w, t, n);for (int i = 1; i half)|(t*(t-1)/2-counthalf) return;if (tn) sum+;elsefor (int i=0;i bestp) bestp = cp+pi;AddLiveNode(up, cp+pi, cw+wi, true, i+1);up = Bound(i+1);/ 检查当前扩展结点的右儿子结点if (up = bestp) / 右子树可能含最优解算法设计与分析课程论文共 12 页

7、第 7 页AddLiveNode(up, cp, cw, false, i+1);/ 取下一个扩展节点(略)3 结合 0-1 背包问题详述动态规划、贪心算法、回溯法、分支限界法解决问题的过程0-1背包问题 : 给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?动态规划算法:设所给0-1背包问题的子问题 的最优值为 m(i,j),即 m(i,j)是背包容量为 j,可选择物品为i,i+1,n 时 0-1背包问题的最优值。由 0-1背包问题的最优子结构性质,可以建立计算 m(i,j)的递归式如下。算法复杂度分析:从m(

8、i,j)的递归式容易看出,算法需要O(nc)计算时间。当背包容量c很大时,算法需要的计算时间较多。例如,当c2n时,算法需要(n2n)计算时间。 改进算法:由m(i,j)的递归式容易证明,在一般情况下,对每一个确定的i(1in),函数m(i,j)是关于变量j的阶梯状单调不减函数。跳跃点是这一类函数的描述特征。在一般情况下,函数m(i,j)由其全部跳跃点唯一确定。对每一个确定的i(1in),用一个表pi存储函数m(i,j)的全部跳跃点。表pi可依计算m(i,j)的递归式递归地由表pi+1计算,初始时pn+1=(0,0)。 函数m(i,j)是由函数m(i+1,j)与函数m(i+1,j-wi)+vi

9、作max运算得到的。因此,函数m(i,j)的全部跳跃点包含于函数m(i+1,j)的跳跃点集pi+1与函数m(i+1,j-wi)+vi的跳跃点集qi+1的并集中。易知,(s,t)qi+1当且仅当wisc且(s-wi,t-vi)pi+1。因此,容易由pi+1确定跳跃点集qi+1如下qi+1=pi+1(wi,vi)=(j+wi,m(i,j)+vi)|(j,m(i,j)pi+1 nikkxvmankixjxwknik,10iiii wjjimvwjijim 0),1( ),(ax),( nnwjvjn0),(0-1 背包问题的算法设计策略对比与分析共 12 页 第 8 页另一方面,设(a,b)和(c,

10、d)是pi+1qi+1中的 2个跳跃点,则当ca且dTypep Knap:Bound(int i)/ 计算上界Typew cleft = c - cw; / 剩余容量Typep b = cp;11cxwnii算法设计与分析课程论文共 12 页 第 9 页/ 以物品单位重量价值递减序装入物品while (i = n b += pi;i+;/ 装满背包if (i = n) b += pi/wi * cleft;return b;分支界限法:如上第二部分2.5所述。4 对比分析以上四种算法策略四种算法中都用到了最优子结构这一概念,判断用何种算法,取决于具体问题的具体分析,看是否适用本身,能达到最优算

11、法。动态规划算法与分治算法相似。用于贪心算法的有活动安排问题,最优装载问题,哈夫曼编码问题,单源最短路径问题。对于回溯法,通过约束找到满足条件的所有解,特点为能进就进,不能进就退回来,与递归类似。分支法与回溯法类似,但解的目标是通过约束找到满足条件的一个解,或找到在某种意义下的最优解。回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。 5 课程总结通过本课程的学习,加强了我的思维能力,增强了思考问题的深度,也了解到,在编写程序时,算法对于一个程序的重要性,以前只知道程序就是代码,现在知道,代码并不是最重要的部分,好的算法可以说是一个程序成功的关键,也是功能好坏的体现,好的算法可以提高程序的效率,在一定程度上可以说是没有算法,就谈不上编写程序,通俗的说,算法在是一种解决问题的方法,是从事计算机行业人员的必备能力。0-1 背包问题的算法设计策略对比与分析共 12 页 第 10 页参考文献 1 王晓东.计算机算法设计与分析.电子工业出版社2 余祥宣,崔国华,邹海明.计算机算法基础M.武汉:华中科技大学出版社,2003. 3 吕国英,任瑞征,钱宇华.算法设计与分析:清华大学出版社.4 算法设计与分析 (第二版)霍红卫 编著,西安电子科技大学出版社.算法设计与分析课程论文共 12 页 第 11 页

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报