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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

背包实验报告.docx

1、算法设计与分析实验报告0_1背包一 问题描述假设有n件物品,每件物品有各自的重量W1,W2,Wn和与之对应的价值V1,V2,Vn。设背包的容量为c,在不超过背包容量的前提下,求出获得最大价值总和的方案。(0-1背包的情况下物品不可分割,只能选择放入,或者不放入背包中)。二 求解思路1. 贪心策略问题开始阶段,将所有物品按价值从高到低排列,每一次往背包里放入不超过背包容量的价值最大的物品,直到没有物品可放入为止。 但事实证明,由于物品的不可分割性,0-1背包并不适合贪心策略。例:假设背包的容量为50,共有三件物品(重量,价值):(10,60),(20,100),(30,120)。若使用贪心策略,

2、则会选择一个(30,120)和一个(20,100)。得到的价值总和是220。而稍加计算便可知选取两个(20,100)和一个(10,60)可以得到更大的价值总和260。因此贪心策略不能给出0-1背包的最优解。 后话:即使是普通背包问题(物品可分割),每次选择价值最大的物品也不能得到最优解。正确的贪心策略应是:每次选择单位重量下价值最大的物品。由于本次实验主要讨论的是0-1背包问题,这里就不给出该贪心策略的证明。2. 动态规划(1)证明0-1背包问题具有最优子结构性质: 假设(x1,x2,xn)是容量为c的背包的一组最优解,其中xi的取值为0或1,表示是否放入背包中。则必有(x2,x3,xn)为如

3、下子问题的一组最优解: sumxi*wi (2=i=n) sumxi*vi (2=i x1*v1+ sumxi*vi (2=i=n)则(x1,y2,yn)是原问题的最优解,而(x1,x2,xn)不是,与假设矛盾。因此0-1背包具有最优子结构性质。(2) 状态转移方程0 i=0 or j=0mij= mi-1j j=wi证明:mij表示在物品数为i,背包容量为j的情况下所得到的最大价值总和。当物品数为0或背包容量为0的时候,最大价值自然为0;当物品数量增加到第i个的时候,若背包容量j比wi小,则无法装入该物品,因此物品i并未起到作用,相当于没有物品i,则mij=mi-1j;若背包容量j比wi大,

4、则要比较加入物品i和不加入物品i这两种情况下哪种方案的价值总和最大,即mij= maxmi-1j-wi+vi,mi-1j.例:背包容量为10 给出5个物品:(2,6),(2,3),(6,5),(5,4),(4,6) 则得到m数组为: 3. 上述算法改进细看上述数组,仍存在许多多余的计算。比如当存在i个物品时,若j=w1(假设为m(mj 且kw2(n个物品的重量和,其中n=m+1)有mik=mij。进一步分析,对于数组中的每一行来说,mij的值为一个递增的阶梯函数,则满足j=w条件的mij就是一个跳跃点,即价值总和会发生改变的点。举个例子,仍使用上述的数据,得到的m数组如下图,其中红色点为跳跃点

5、:W012345678910w=2,v=600666666666w=2,v=300669999999w=6,v=500669999111114w=5,v=4006699910111314w=4,v=6006699912151515 那么一个改进后的解题思路就出来了:倘若把每个图的跳跃点的横纵坐标记录下来,就相当于把整个函数的信息储存下来。对于表格中的每一行来说我们只要把每次跳变时的价值和和总重量记录下来,就可以把整行的数据表示出来了于是,我们可以建立这样一个集合pi:pi中储存第i行所有的跳变点pi中的元素为(w,v), w为总重量,v为价值和 这时候再来看看原来的状态转移方程: 0 i=0

6、or j=0mij= mi-1j j=wi当jWi时,如果有新的跳跃点出现,一定是在jc(背包容量)的点,因为这违反了题目要求 集合B:在pi和qi的并集中,如果存在(a,b)和(c,d)是piqi中的2个跳跃点,而且ca且db,则(c,d)也不会出现下一行的跳跃点集合中。因为在求最大值的过程中,如果的d2n时,算法一需要(n2n),而算法二需要O(minnc,2n),可节约时间。四实验总结使用动态规划算法一的时候,需开辟一个n*c的数组,当背包容量比较大的时候会耗费空间,且算法一存在许多不必要的计算,也浪费了时间。使得其时间复杂度为(n2n)。 算法二对算法一进行了优化,通过寻找跳跃点的方式减少了不必要的计算,节约了时间,其时间复杂度为O(minnc,2n)。但寻找跳跃点的过程时略显麻烦,也需要开辟一个二维数组,在空间上并没有很大改进。

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

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