背包问题的一种新算法:降维递归算法.docxVIP

背包问题的一种新算法:降维递归算法.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
硕士学位论文 其中物品f如果被选中,则‘=l,否则五=0 (2)多约束背包问题(Multidimensional Knapsack Problem) 在许多实际问题中,对物品的选择不仅在总重量上有限制,有时对总体积有限制。这样就产生了有多个约束的背包问题。这类问题的数学模型为: (P): m ax,=∑c tz‘ i=1 “‘毛a ex,≤6/(_,=1,2,?,肌) i≥D且取整数(i=1,2, ,n) 许多简单结构的有机组合构成了复杂结构,对简单问题的深入探索也使复杂问题问题的解决变得相对容易阳1。在设计解决大量的复杂组合优化问题时,背包问题往往作为子问题出现。如一般的多约束整数规划问题,通过适当的转换分解可化为背包问题。故背包问题的算法改进,对复杂组合的优化问题算法的改进是十分有益的。以下约定:本文所讨论的背包问题是指一般的背包问题(不包括0-1背包问题和多约束背包问题)。 即属于组合最合最优化问题。一般的最优化问题(optimization problem) 由目标函数(objective function)和约束条件(constraints)两部分构成: Minimize厂(工)=f(xl,X2, ,工。) Subject to x=(工l,x2,?,x玎)∈S c X 将满足所有约束条件的解空间S称为可行域(Feasible Region),可行域中 的解称为可行解(Feasible Solution);将可行域中使目标最小化的解称为最优 解(0ptimal Solution)。对最大化问题,可将目标函数乘以(-1),转换为最小化问题求解。当X或S为离散集合构成的结空间时,这类最优化问题称为组合最 优化问题(Combinatorial 0ptimization Problem) 对于背包问题,已有的求解方法可分为精确算法(如枚举法,动态规划法,分支定界法,图论法等指数级算法)和近似算法¨们(如贪心算法,蚂蚁算法,遗传算法等)两大类。精确算法的特点是,所求得的解是最优解。精确算法的时间 复杂性是指数型H1(分支定界法是0(2”))的或不确定(动态规划算法O(bn))· 这一点可用来作为检验其近似他算法的精确性。与精确算法相比,近似算法计算复杂性都是多项式的。但就目前而言,近似算法多以领域知识确立规则,从而构成启发式规则,其算法依赖于具体问题。 所有的背包问题都属于NP—Hard问题n副,这就是说我们设计出背包问题的多 2 背包问题的一种新算法:降维递归算法 项式算法的可能性非常小。也即是说对于背包问题而言,我们除了枚举出整个解 空间而外就无法求得背包问题的精确解。但是应用一些普遍适用的技术手段,我 们的枚举可以变得相对容易许多。 3 硕士学位论文 2求解背包问题的几个算法简介 2.1贪婪算法 贪婪算法属于一步式启发算法,即每采用一个贪婪准则便做出一个不可撤回的决策。用贪婪算法求解背包问题的特点是每一步迭代选一物品入包,直到无法再装。该算法没有在两个可行解之问比较选择,算法结束时得到一个可行解。 解决背包问题的可能的3种策略: (1)从备选对物品中选择价值最大的个体,这种方法使背包价值尽可能地 增大: (2)从备选的物品中选择最轻的个体装入背包,使背包尽可能多装物品; (3)选择单位价值最大的物品装入背包; 上述三种策略中第三种认为最合理。 贪婪算法的基本思想是从局部的最优出发,即:首先让作用价值最大的物品尽可能的多放,然后再考虑作用价值次大的物品, 如此反复,直至装不下任何物品.该算法的特点是:简单而快捷,特别当问题的最优解只能用穷举法得到时,用贪婪算法是寻找问题近似解的较好算法。 下面我们用一个例子来说明该算法: 例1: max f=5xl+12心+13心-t-8‘ S.t.4五十6娩+7恐+9托=1 7 Xi≥0且为整数(f=1,2,3,4) 解: 对问题的变量按序列{eJ=Ci/tz),歹=1,2, n)的非增顺序进行排列 得到: max厂=12X2+13X3+5Xl++8X4 S.t.6X2+7义,3+4Xv+9彳-=17 t≥。且为整数(i=1,2,3,4) 令x:=[詈]=2, 剩余的容量为 4 背包问题的一种新算法:降维递归算法 17—6 2=5,其中【X】表示不大于z的最大整数。再令置--I;5 l=o, 剩余 L,J r气1 的容量仍然为5,再令x。=I÷|-1,剩余的容量为5二4×1=l,再令 L4J 厂1 1 x.=I言I-o,剩余的容量仍然为1。这样就得到一1_近似解 五=1,置=2,置=O,置=0 其 近 似 值 为 f=2×12+0×1 3+1×5+0×8=29 口 贪婪算法的求解效率非常之高,不少专家学者仍然寄希望于这种算法,力图 改进它。1977年Richard Loul

文档评论(0)

lh2468lh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档