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

加入VIP,省得不是一点点
 

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

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

下载须知

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

版权提示 | 免责声明

本文(贪心法&动态规划法&分支限界法.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

贪心法&动态规划法&分支限界法.doc

1、 江 西 财 经 大 学课程设计报告课程:算法设计与分析班级: 08 计算机 2 班学号: 0082900 姓名: 叶小玉 完成时间:2010-12-310/1 背包问题一、 设计目的1)掌握贪心法的原理及使用环境。2)掌握动态规划法的原理及使用环境;3)掌握分枝限界法的原理及使用环境;4)分析三种算法的特点。二、 设计内容1. 任务描述1)0/1 背包问题简介已知一个载重为 M 的背包和 n 件物品,第 i 件物品的重量为 Wi,如果将第i 件物品全部装入背包,将有收益 Pi(Wi0,Pi0,0i0,Wi0 ,Vi0, ,要求找ni1一个 n 元 0-1 向量(X1,X2,.,Xn) ,Xi

2、=0 或 1, ,使得i,WiX1niM而且 到最大。n1iP数学模型为:max n1iX,1niMXi=0 或 1, ni约束条件三求解 0/1 背包问题3.1 利用贪心法求解 0/1 背包问题3.1.1 算法思想贪心算法采用逐步构造最优解的方法,在每个阶段,都在一定的标准下做出 一个看上 去最优的决策,0/1 背包选择单位效益最高贪心准则,即从剩余物 品中选择可装入包的 Pi/Wi 值最大的物品。3.1.2 主要模块说明void bagloading(int x,float p,float w,float M,int n,int hao) float t,k,pwnum;int i,j,m

3、,kk,q;for(i=0;i0) kk=0;for(j=0;j1;i-) /递归部分 jmax=min(weii-1,M); for(int j=0;j=wei1) m1M=max(m1M,m2M-wei1+val1); cout“价值和为:“m1Mendl; 3.2.3 算法分析动态规划求解 0/1 背包问题的复杂度为 .动态规划主要是求 ),( n2Mmi解最优决策序列。当最优决策序列中包含最优决策子序列时候,可建立动态 规划递归方程,可以帮助高效率的解决问题。3.2.4 测试结果与分析结果截图:动态规划算法处理 0/1 背包问题可以求的最优解。但是因为需要找最优子决 策因此时间相对来说

4、较慢。3.3 利用分枝限界法求解 0/1 背包问题3.3.1 算法思想0/1 背包问题的分支限界发可以使用最大收益算法定界函数来计算活结点 的收益上限 up,使得以活结点为根的子树中的任一节点的收益值都不可能 超过 up,活结点的最大堆使用 up 作为关键值域。在子集树中执行最大收益 分支定界搜索的函数首先初始化活结点的最大堆,并使用一个数组 best 来 动态规划思想-寻找最优决策记录最优解。由于需要不断的利用收益密度来排序,物品的索引值会随之变 化,因此必须将函数所产生的结果映射到初始是的物品索引。函数中的循环 首先检验 E 节点做孩子的可行性,如果可行,将它加入子集树和活结点队 列;仅当

5、节点有孩子的定界值指明可能找到一个最优解是才将有孩子加入子 集树和队列中。3.3.2 主要模块说明数据结构:struct node/结点表结点数据结构node *parent,/父结点指针*next; /后继结点指针int level,/结点的层bag,/节点的解cw,/当前背包装载量 cp;/当前背包价值 float ub; /结点的上界值;class Knapprivate:struct node *front, *bestp,*first; /解结点、根结点int *p,*w,n,c,*M;/背包价值、重量、物品数、背包容量、记录大小顺序关系long lbestp;/背包容量最优解 pu

6、blic:void Sort();Knap(int *pp,int *ww,int cc,int nn);Knap();float Bound(int i,int cw,int cp);/计算上界限node *nnoder(node *pa,int ba,float uub);/生成一个结点 ba=1 生成左节点 ba=0 生成右节点void addnode(node *nod);/将结点添加到队列中void deletenode(node *nod);/将结点队列中删除struct node *nextnode(); /取下一个void display(); /输出结果void solveb

7、ag(); /背包问题求解;3.3.3 算法分析分支限界法处理 0/1 问题的时间复杂度为 ,分支限界算法将所有的)( n2结 果形成一棵树,但是在生成树的过程中会剪断一些不符合要求的枝来简化算 法的计算。分支限界法需要算出一般背包问题,将一般背包问题作为一个限 界值,根据自身的约束,实现剪枝的目的.分支限界法容易求得最优解,但是 时间效率并不高。分支限界法可以求出 0/1 背包的最优解。但是因为它是以 树为基础的算法,因此它的空间开销也要大。3.3.4 测试结果与分析结果截图:分支限界法可以求的 0/1 背包的最优解,速度也较快,但是在构造树时候花 费了较多的空间。当需要空间不大时候,需慎用

8、。四. 总结与讨论通过对以上 0/1 背包问题的求解分析,可以了解到各种算法设计 方法有各自不同的特点,针对不同的问题领域,他们有不同的效 率。通过对 0/1 背包问题求解,对贪心法,动态规划法和分支限 界法的原理用了进一步的了解,另外他们各自的使用条件,算法 的优缺点是我们选择算法要考虑的。总结上叙分析他们各自的优 缺点可以得出如下比较。1.贪心法:处理问题的速度快,思想简单。使用该方法的必要条 件是寻找好的贪心法则。不足之处在于很多时候它只能求的似优 解,却不能求的最优解 2.动态规划法:可以求解最优解,重点在于徐兆最优决策序列, 但是速度较慢。3.分支限界法:可以求解最优解,重点在于寻找限界值。易求最优解,但是空间花费较高,效率不是很高。选择哪一种算法,不仅要根据问题本身还需要考虑到其他因素, 例如时间复杂度,空间复杂度,易求解等等因素。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。