回溯法解决01背包问题

回溯法解决01背包问题

ID:25399112

大小:702.50 KB

页数:21页

时间:2018-11-20

回溯法解决01背包问题_第1页
回溯法解决01背包问题_第2页
回溯法解决01背包问题_第3页
回溯法解决01背包问题_第4页
回溯法解决01背包问题_第5页
资源描述:

《回溯法解决01背包问题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、回溯法解决01背包问题回溯法解决01背包问题1、算法思想2、问题描述3、设计实现回溯法解决01背包问题回溯法:是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其原先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。课堂上老师已经讲解过用回溯法解决n-皇后问题,m-图着色问题以及哈密顿环问题,他们有相同的特征即问题的求解目标都

2、是求满足约束条件的全部可行解。而0/1背包是最优化问题,还需要使用限界函数剪去已能确认不含最优答案结点的子树。回溯法解决0/1背包问题运用回溯法解题通常包含以下三个步骤:a.针对所给问题,定义问题的解空间;b.确定易于搜索的解空间结构;c.以深度优先的方式搜索解空间,并且在搜索过程中用剪枝函数避免无效搜索;0/1背包问题概述在0/1背包问题中,需对容量为c的背包进行装载。从n个物品中选取装入背包的物品,每件物品i的重量为wi,价值为pi。对于可行的背包装载,背包中的物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高,即取得

3、最大值。约束条件为c和。在这个表达式中,需求出xi的值。xi=1表示物品i装入背包中,xi=0表示物品i不装入背包。回溯法解决01背包问题回溯法解决01背包问题问题举例最优值上界对于0-1背包问题回溯法的一个实例,n=4,M=7,p=[9,10,7,4],w=[3,5,2,1].这4个物品的单位重量价值分别为[3,2,3,5,4].以物品为单位价值的递减序装入物品。先装入物品4,然后装入物品3和1.装入这3个物品后,剩余的背包容量为1,只能装入0.2个物品2.由此可得到一个解为x=[1,0.2,1,1],其相应的价值为22.尽管这不是一

4、个可行解,但可以证明其价值是最有大的上界。因此,对于这个实例,最优值不超过22.回溯法解决01背包问题0—1背包问题是一个子集选取问题,适合于用子集树表示0—1背包问题的解空间。在搜索解空间树是,只要其左儿子节点是一个可行结点,搜索就进入左子树,在右子树中有可能包含最优解是才进入右子树搜索。否则将右子树剪去。问题分析:首先是将可供选择的物品的个数输入程序,将物品排成一列,计算总物品的体积s,然后输入背包的实际体积V,如果背包的体积小于0或者大于物品的总体积s,则判断输入的背包体积错误,否则开始顺序选取物品装入背包,假设已选取了前i件物品

5、之后背包还没有装满,则继续选取第i+1件物品,若该件物品"太大"不能装入,则弃之而继续选取下一件,直至背包装满为止。但如果在剩余的物品中找不到合适的物品以填满背包,则说明"刚刚"装入背包的那件物品"不合适",应将它取出"弃之一边",继续再从"它之后"的物品中选取,如此重复,直至求得满足条件的解。因为回溯求解的规则是"后进先出",所以要用到栈来存储符合条件的解,在存储过程中,利用数组来存储各个物品的体积,然后用深度优先的搜索方式求解,将符合条件的数组元素的下标存入栈里,最后得到符合条件的解并且实现输出。限界函数设r是当前剩余物品价值总和;

6、cp是当前结点X的价值;bp是当前X结点上界函数值。L始终为已搜索到的答案节点中受益的最大值,当cp+r=bp

7、],p=[18,25,20]且M=20.三个对象的背包问题的解空间10101000101010ABGIFHELDCL=43L=43L=38L=25L=20L=0L=45L=18回溯法解决0/1背包问题#includeintc;//背包容量intn;//物品数intweight[100];//存放n个物品重量的数组intprice[100];//存放n个物品价值的数组intcurrentWeight=0;//当前重量intcurrentPrice=0;//当前价值intbestPrice=0;//当前最优值intbest

8、Answer[100];//当前最优解intbp=0;intbA[100];//当前最优解inttimes=0;回溯法解决01背包问题voidPrint();voidBacktracking(inti){t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。