网站大量收购独家精品文档,联系QQ:2885784924

【分支限界法】求解01背包问题.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【分⽀限界法】求解01背包问题 问题描述 0/ 1背包问题。假设有4个物品,其重量分别 (4, 7, 5, 3),价值分别 (40, 42, 25, 12),背包容量W= 10,计算背包所装⼊物品的最⼤价值。 求解思路 ⾸先,将给定物品按单位重量价值从⼤到⼩排序,结果如下 : 应⽤贪⼼法求得近似解 (1, 0, 1, 0),获得的价值 65,这可以作 0/ 1背包问题的下界。 如何求得0/ 1背包问题的⼀个合理的上界呢?考虑最好情况,背包中装⼊的全部是第 1个物品且可以将背包装满,则可以得到⼀个⾮常简单 的上界的计算⽅法 :ub=W ×(v 1/w 1)= 10 ×10= 100。于是,得到了⽬标函数的界[65, 100]。 限界函数 : ⽬标函数的界[65, 100] 分⽀限界法求解0/ 1背包问题,其搜索空间如图所⽰,具体的搜索过程如下 : (1)在根结点 1,没有将任何物品装⼊背包,因此,背包的重量和获得的价值均 0,根据限界函数计算结点 1的⽬标函数值 10 ×10= 100 ; (2)在结点2,将物品1装⼊背包,因此,背包的重量 4,获得的价值 40,⽬标函数值 40 + (10-4) ×6=76,将结点2加⼊待处理 结点表PT中;在结点3,没有将物品1装⼊背包,因此,背包的重量和获得的价值仍 0,⽬标函数值 10 ×6 =60,将结点3加⼊表PT 中; (3)在表PT中选取 ⽬标函数值取得极⼤的结点2优先进⾏搜索; (4)在结点4,将物品2装⼊背包,因此,背包的重量 11,不满⾜约束条件,将结点4丢弃 ;在结点5,没有将物品2装⼊背包,因此, 背包的重量和获得的价值与结点2相同,⽬标函数值 40 + (10-4) ×5=70,将结点5加⼊表PT中; (5)在表PT中选取 ⽬标函数值取得极⼤的结点5优先进⾏搜索; (6)在结点6,将物品3装⼊背包,因此,背包的重量 9,获得的价值 65,⽬标函数值 65 + (10-9) ×4=69,将结点6加⼊表PT 中;在结点7,没有将物品3装⼊背包,因此,背包的重量和获得的价值与结点5相同,⽬标函数值 40 + (10-4) ×4 =64,将结点6加⼊ 表PT中; (7)在表PT中选取 ⽬标函数值取得极⼤的结点6优先进⾏搜索; (8)在结点8,将物品4装⼊背包,因此,背包的重量 12,不满⾜约束条件,将结点8丢弃 ;在结点9,没有将物品4装⼊背包,因此, 背包的重量和获得的价值与结点6相同,⽬标函数值 65 ; (9)由于结点9是叶⼦结点,同时结点9的⽬标函数值是表PT中的极⼤值,所以,结点9对应的解即是问题的最优解,搜索结束。 假设求解最⼤化问题,解向量 X=(x 1, x2, …, xn),其中,xi的取值范围 某个有穷集合Si,|Si|=ri (1≤i≤n)。在使⽤分⽀限界法搜索 问题的解空间树时,⾸先根据限界函数估算 ⽬标函数的界[down, up] ,然后从根结点出发,扩展根结点的r1个孩⼦结点,从⽽构成分量x 1 的r1种可能的取值⽅式。对这r1个孩⼦结点分别估算可能取得的⽬标函数值bound(x 1),其含义是以该孩⼦结点 根的⼦树所可能取得的 ⽬标函数值不⼤于bound(x 1),也就是部分解应满⾜ : bound(x 1) ≥bound(x 1, x2) ≥ … ≥bound(x 1, x2, …, xk) ≥ … ≥bound(x 1, x2, …, xn) 若某孩⼦结点的⽬标函数值超出⽬标函数的界,则将该孩⼦结点丢弃 ;否则,将该孩⼦结点保存在待处理结点表PT中。从表PT中选取使 ⽬ 标函数取得极⼤值的结点作 下⼀次扩展的根结点,重复上述过程,当到达⼀个叶⼦结点时,就得到了⼀个可⾏解X=(x 1, x2, …, xn)及其 ⽬标函数值bound(x 1, x2, …, xn)。 如果bound(x 1, x2, …, xn)是表PT中⽬标函数值最⼤的结点,则bound(x 1, x2, …, xn)就是所求问题的最⼤值,(x 1, x2, …, xn)就是问题 的最优解 ; 如果bound(x 1, x2, …, xn)不是表PT中⽬标函数值最⼤的结点,说明还存在某个部分解对应的结点

文档评论(0)

147****4268 + 关注
实名认证
内容提供者

认真 负责 是我的态度

1亿VIP精品文档

相关文档