第9章分支限界法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章 分支限界法 章
9.1 概 述 9.2 图问题中的分支限界法 9.3 组合问题中的分支限界法
9.1 概 述
9.1.1 解空间树的动态搜索(2) 解空间树的动态搜索(2) 9.1.2 分支限界法的设计思想 9.1.3 分支限界法的时间性能
9.1.1 解空间树的动态搜索(2) 解空间树的动态搜索( )
9.1.2 分支限界法的设计思想
假设求解最大化问题, 假设求解最大化问题 , 问题的解向量为 X=(x1, x2, …, , xn) , 其 中 , xi 的 取 值 范 围 为 某 个 有 穷 集 合 Si , |Si|=ri 在使用分支限界法搜索问题的解空间树时, ( 1≤i≤n ) 。 在使用分支限界法搜索问题的解空间树时 , 首 先根据限界函数估算目标函数的界[ 先根据限界函数估算目标函数的界[down, up],然后从根结 点出发, 个孩子结点, 点出发 , 扩展根结点的 r1 个孩子结点 , 从而构成分量 x1 的 r1 种可能的取值方式。对这r1个孩子结点分别估算可能取得的 种可能的取值方式。 目标函数值 bound(x1) , 其含义是以该孩子结点为根的子树 所可能取得的目标函数值不大于 bound(x1) , 也就是部分解 应满足: 应满足:
限界函数确定目标函数的下界down,目标函数的上界up可以用 ,目标函数的上界 可以用 限界函数确定目标函数的下界 某种启发式方法得到。例如贪心法,对于最大化问题, 某种启发式方法得到。例如贪心法,对于最大化问题,根据限 界函数确定目标函数的上界up,目标函数的下界down可以用某 界函数确定目标函数的上界 ,目标函数的下界 可以用某 种启发式方法得到)。然后, )。然后 种启发式方法得到)。然后,按照广度优先策略遍历问题的解 空间树,在分支结点上,依次搜索该结点的所有孩子结点, 空间树,在分支结点上,依次搜索该结点的所有孩子结点,分 别估算这些孩子结点的目标函数的可能取值( 别估算这些孩子结点的目标函数的可能取值(对于最小化问题 估算结点的下界;对于最大化问题,估算结点的上界), ),如 ,估算结点的下界;对于最大化问题,估算结点的上界),如 果某孩子结点的目标函数可能取得的值超出目标函数的界, 果某孩子结点的目标函数可能取得的值超出目标函数的界,则 将其丢弃, 将其丢弃,因为从这个结点生成的解不会比目前已经得到的解 更好;否则,将其加入待处理结点表(以下简称表PT) 更好;否则,将其加入待处理结点表(以下简称表 )中。依 次从表PT中选取使目标函数的值取得极值 对于最小化问题, 中选取使目标函数的值取得极值( 次从表 中选取使目标函数的值取得极值(对于最小化问题, 是极小值;对于最大化问题,是极大值) 是极小值;对于最大化问题,是极大值)的结点成为当前扩展 结点,重复上述过程,直到找到最优解。 结点,重复上述过程,直到找到最优解。 随着这个遍历过程的不断深入, 随着这个遍历过程的不断深入,表PT中所估算的目标函数 中所估算的目标函数 的界越来越接近问题的最优解。 的界越来越接近问题的最优解。当搜索到一个叶子结点时
表9.1 0/1背包问题的价值/重量排序结果 物品 1 2 3 4 重量(w) 4 7 5 3 价值(v) 40 42 25 12 价值/重量(v/w) 10 6 5 4
这样, 个物品给出了单位重量的最大价值, 这样,第1个物品给出了单位重量的最大价值,最后一个物 个物品给出了单位重量的最大价值 品给出了单位重量的最小价值。应用贪心法求得近似解为(1, 品给出了单位重量的最小价值。应用贪心法求得近似解为 0, 0, 0),获得的价值为 ,这可以作为 背包问题的下界。如何 背包问题的下界。 ,获得的价值为40,这可以作为0/1背包问题的下界 求得0/1背包问题的一个合理的上界呢 考虑最好情况, 背包问题的一个合理的上界呢? 求得 背包问题的一个合理的上界呢?考虑最好情况,背包中 装入的全部是第1个物品且可以将背包装满,则可以得到一个非 装入的全部是第 个物品且可以将背包装满, 个物品且可以将背包装满 常简单的上界的计算方法: 常简单的上界的计算方法:ub=W×(v1/w1)=10×10=100。于是 × × 。 得到了目标函数的界[40, 100]。 ,得到了目标函数的界 。 一般情况下,解空间树中第i层的每个结点 层的每个结点, 一般情况下,解空间树中第 层的每个结点,都代表了对物 做出的某种特定选择, 品1~i做出的某种特定选择,这个特定选择由从根结点到该结 ~ 做出的某种特定选择 点的路径唯一确定:左分支表示装入物品, 点的路径唯一确定:左分支表示装入物品,右分支表示不装入 物品。对于第i层的某个结点 层的某个结点, 物品。对于第 层的某个结点,假设背包中已装入物品的重量是 w,获得的价值是 ,计算该结点的目标函数上界的一个简单方 的价值是v, ,获得的价值是 法是把已经装入背包中的物品取得的价值v, 法是把已经装入背包中的物品取得的价值 ,加上背包剩余容量 W-w与剩下物品的最大单位重量价值 i+1/wi+1的积,于是,得到 与剩下物品的最大单位重量价值v 的积,于是, 与剩下物品的最大单位重量价值 限界函数: 限界函数: ub = v + (W − w) × (vi +1 wi +1 ) (式9.1) )
回溯法从根结点出发, 回溯法从根结点出发 , 按照深度优先策略遍历问题的解空 间树。例如, 所示对0/1背包问题的搜索 间树。例如,图8.4所示对 背包问题的搜索,如果某结点所代 所示对 背包问题的搜索, 表的部分解不满足约束条件(即超过背包容量) 表的部分解不满足约束条件 ( 即超过背包容量 ) , 则对以该结 点为根的子树实行剪枝;否则, 点为根的子树实行剪枝 ; 否则 , 继续按深度优先策略遍历以该 结点为根的子树。 这种遍历过程一直进行, 结点为根的子树 。 这种遍历过程一直进行 , 当搜索到一个满足 约束条件的叶子结点时,就找到了一个可行解。 约束条件的叶子结点时 , 就找到了一个可行解 。 对整个解空间 树的遍历结束后, 所有可行解中价值最大的就是问题的最优解。 树的遍历结束后 , 所有可行解中价值最大的就是问题的最优解 。 回溯法求解0/1背包问题 虽然实行剪枝减少了搜索空间,但是, 背包问题, 回溯法求解 背包问题,虽然实行剪枝减少了搜索空间,但是 , 整个搜索过程是按深度优先策略机械地进行,所以, 整个搜索过程是按深度优先策略机械地进行 , 所以 , 这种搜索 是盲目的。 是盲目的。 分支限界法首先确定一个合理的限界函数, 分支限界法首先确定一个合理的限界函数 , 并根据限界函 数确定目标函数的界[down, up](对于最小化问题,根据 数确定目标函数的界 (对于最小化问题,
w=0, v=0 ub=100 2 w=4, v=40 ub=76 4 × w=11 无效解 6 w=9, v=65 ub=69 8 w=12 无效解 × 9 w=9, v=65 ub=65 5 w=4, v=40 ub=70 7 w=4, v=40 ub=64 3 w=0, v=0 ub=60
图9.1 分支限界法求解0/1背包问题示例 (×表示该结点被丢弃,结点上方的序号表示搜索顺序)
分支限界法求解0/1背包问题, 其搜索空间如图9.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中 结点 加入表 中; 中选取目标函数值取得极大的结点2优先进行搜 ( 3)在表 中选取目标函数值取得极大的结点 优先进行搜 ) 在表PT中选取目标函数值取得极大的结点 索; 装入背包, ( 4)在结点 , 将物品 装入背包 , 因此 ,背包的重量为 , ) 在结点4,将物品2装入背包 因此,背包的重量为11, 不满足约束条件,将结点4丢弃 在结点5, 丢弃; 不满足约束条件,将结点 丢弃;在结点 ,没有将
物品2装入背包,因此,背包的重量和获得的价值与结点2相同 相同, 物品 装入背包,因此,背包的重量和获得的价值与结点 相同, 装入背包 目标函数值为40 加入表PT中 目标函数值为 + (10-4)×5=70,将结点 加入表 中; × ,将结点5加入表 中选取目标函数值取得极大的结点5优先进行搜索 (5)在表 中选取目标函数值取得极大的结点 优先进行搜索; )在表PT中选取目标函数值取得极大的结点 优先进行搜索; 装入背包, (6)在结点 ,将物品 装入背包,因此,背包的重量为 ,获得 )在结点6,将物品3装入背包 因此,背包的重量为9, 的价值为65,目标函数值为65 + (10-9)×4=69, 将结点 加入表 的价值为 , 目标函数值为 × , 将结点6加入表 PT中;在结点 ,没有将物品 装入背包,因此,背包的重量和获 装入背包, 中 在结点7,没有将物品3装入背包 因此, 得的价值与结点5相同 目标函数值为40 + (10-4)×4=64,将结 相同, 得的价值与结点 相同,目标函数值为 × = , 加入表PT中 点6加入表 中; 加入表 中选取目标函数值取得极大的结点6优先进行搜索 (7)在表 中选取目标函数值取得极大的结点 优先进行搜索; )在表PT中选取目标函数值取得极大的结点 优先进行搜索; 装入背包, ( 8)在结点 , 将物品 装入背包 , 因此 , 背包的重量为 , 不 ) 在结点8,将物品4装入背包 因此,背包的重量为12, 满足约束条件,将结点8丢弃 在结点9,没有将物品4装入背包 丢弃; 装入背包, 满足约束条件 , 将结点 丢弃 ; 在结点 , 没有将物品 装入背包 , 因此,背包的重量和获得的价值与结点6相同 相同, 因此,背包的重量和获得的价值与结点 相同,
如果该结点的目标函数值是表PT中的极值 中的极值( ,如果该结点的目标函数值是表 中的极值( 对于最小化问 是极小值;对于最大化问题, 是极大值) 题 , 是极小值 ; 对于最大化问题 , 是极大值 ) , 则该叶子结 点对应的解就是问题的最优解; 否则, 点对应的解就是问题的最优解 ; 否则 , 根据这个叶子结点调 整目标函数的界( 对于最小化问题, 调整上界; 整目标函数的界 ( 对于最小化问题 , 调整上界 ; 对于最大化 问题,调整下界) 依次考察表PT中的结点 中的结点, 问题 ,调整下界 ) , 依次考察表 中的结点, 将超出目标函 数界的结点丢弃,然后从表PT中选取使目标函数取得极值的 数界的结点丢弃, 然后从表 中选取使目标函数取得极值的 结点继续进行扩展。 结点继续进行扩展。 下面以0/1背包问题为例介绍分支限界法的搜索过程 背包问题为例介绍分支限界法的搜索过程。 下面以 背包问题为例介绍分支限界法的搜索过程。假 设有4个物品 其重量分别为(4, 个物品, 设有 个物品,其重量分别为 7, 5, 3),价值分别为 ,价值分别为(40, 42, 25, 12),背包容量 ,背包容量W=10。首先,将给定物品按单位重量价值 。首先, 从大到小排序,结果如表9.1所示 所示。 从大到小排序,结果如表 所示。
目标函数值为65; 目标函数值为 ; 是叶子结点, 的目标函数值是表PT ( 9)由于结点 是叶子结点, 同时结点 的目标函数值是表 )由于结点9是叶子结点 同时结点9的目标函数值是表 中的极大值,所以,结点9对应的解即是问题的最优解 对应的解即是问题的最优解, 中的极大值 , 所以 , 结点 对应的解即是问题的最优解 , 搜索 结束。 结束。 1
9.1 概 述 9.2 图问题中的分支限界法 9.3 组合问题中的分支限界法
9.1 概 述
9.1.1 解空间树的动态搜索(2) 解空间树的动态搜索(2) 9.1.2 分支限界法的设计思想 9.1.3 分支限界法的时间性能
9.1.1 解空间树的动态搜索(2) 解空间树的动态搜索( )
9.1.2 分支限界法的设计思想
假设求解最大化问题, 假设求解最大化问题 , 问题的解向量为 X=(x1, x2, …, , xn) , 其 中 , xi 的 取 值 范 围 为 某 个 有 穷 集 合 Si , |Si|=ri 在使用分支限界法搜索问题的解空间树时, ( 1≤i≤n ) 。 在使用分支限界法搜索问题的解空间树时 , 首 先根据限界函数估算目标函数的界[ 先根据限界函数估算目标函数的界[down, up],然后从根结 点出发, 个孩子结点, 点出发 , 扩展根结点的 r1 个孩子结点 , 从而构成分量 x1 的 r1 种可能的取值方式。对这r1个孩子结点分别估算可能取得的 种可能的取值方式。 目标函数值 bound(x1) , 其含义是以该孩子结点为根的子树 所可能取得的目标函数值不大于 bound(x1) , 也就是部分解 应满足: 应满足:
限界函数确定目标函数的下界down,目标函数的上界up可以用 ,目标函数的上界 可以用 限界函数确定目标函数的下界 某种启发式方法得到。例如贪心法,对于最大化问题, 某种启发式方法得到。例如贪心法,对于最大化问题,根据限 界函数确定目标函数的上界up,目标函数的下界down可以用某 界函数确定目标函数的上界 ,目标函数的下界 可以用某 种启发式方法得到)。然后, )。然后 种启发式方法得到)。然后,按照广度优先策略遍历问题的解 空间树,在分支结点上,依次搜索该结点的所有孩子结点, 空间树,在分支结点上,依次搜索该结点的所有孩子结点,分 别估算这些孩子结点的目标函数的可能取值( 别估算这些孩子结点的目标函数的可能取值(对于最小化问题 估算结点的下界;对于最大化问题,估算结点的上界), ),如 ,估算结点的下界;对于最大化问题,估算结点的上界),如 果某孩子结点的目标函数可能取得的值超出目标函数的界, 果某孩子结点的目标函数可能取得的值超出目标函数的界,则 将其丢弃, 将其丢弃,因为从这个结点生成的解不会比目前已经得到的解 更好;否则,将其加入待处理结点表(以下简称表PT) 更好;否则,将其加入待处理结点表(以下简称表 )中。依 次从表PT中选取使目标函数的值取得极值 对于最小化问题, 中选取使目标函数的值取得极值( 次从表 中选取使目标函数的值取得极值(对于最小化问题, 是极小值;对于最大化问题,是极大值) 是极小值;对于最大化问题,是极大值)的结点成为当前扩展 结点,重复上述过程,直到找到最优解。 结点,重复上述过程,直到找到最优解。 随着这个遍历过程的不断深入, 随着这个遍历过程的不断深入,表PT中所估算的目标函数 中所估算的目标函数 的界越来越接近问题的最优解。 的界越来越接近问题的最优解。当搜索到一个叶子结点时
表9.1 0/1背包问题的价值/重量排序结果 物品 1 2 3 4 重量(w) 4 7 5 3 价值(v) 40 42 25 12 价值/重量(v/w) 10 6 5 4
这样, 个物品给出了单位重量的最大价值, 这样,第1个物品给出了单位重量的最大价值,最后一个物 个物品给出了单位重量的最大价值 品给出了单位重量的最小价值。应用贪心法求得近似解为(1, 品给出了单位重量的最小价值。应用贪心法求得近似解为 0, 0, 0),获得的价值为 ,这可以作为 背包问题的下界。如何 背包问题的下界。 ,获得的价值为40,这可以作为0/1背包问题的下界 求得0/1背包问题的一个合理的上界呢 考虑最好情况, 背包问题的一个合理的上界呢? 求得 背包问题的一个合理的上界呢?考虑最好情况,背包中 装入的全部是第1个物品且可以将背包装满,则可以得到一个非 装入的全部是第 个物品且可以将背包装满, 个物品且可以将背包装满 常简单的上界的计算方法: 常简单的上界的计算方法:ub=W×(v1/w1)=10×10=100。于是 × × 。 得到了目标函数的界[40, 100]。 ,得到了目标函数的界 。 一般情况下,解空间树中第i层的每个结点 层的每个结点, 一般情况下,解空间树中第 层的每个结点,都代表了对物 做出的某种特定选择, 品1~i做出的某种特定选择,这个特定选择由从根结点到该结 ~ 做出的某种特定选择 点的路径唯一确定:左分支表示装入物品, 点的路径唯一确定:左分支表示装入物品,右分支表示不装入 物品。对于第i层的某个结点 层的某个结点, 物品。对于第 层的某个结点,假设背包中已装入物品的重量是 w,获得的价值是 ,计算该结点的目标函数上界的一个简单方 的价值是v, ,获得的价值是 法是把已经装入背包中的物品取得的价值v, 法是把已经装入背包中的物品取得的价值 ,加上背包剩余容量 W-w与剩下物品的最大单位重量价值 i+1/wi+1的积,于是,得到 与剩下物品的最大单位重量价值v 的积,于是, 与剩下物品的最大单位重量价值 限界函数: 限界函数: ub = v + (W − w) × (vi +1 wi +1 ) (式9.1) )
回溯法从根结点出发, 回溯法从根结点出发 , 按照深度优先策略遍历问题的解空 间树。例如, 所示对0/1背包问题的搜索 间树。例如,图8.4所示对 背包问题的搜索,如果某结点所代 所示对 背包问题的搜索, 表的部分解不满足约束条件(即超过背包容量) 表的部分解不满足约束条件 ( 即超过背包容量 ) , 则对以该结 点为根的子树实行剪枝;否则, 点为根的子树实行剪枝 ; 否则 , 继续按深度优先策略遍历以该 结点为根的子树。 这种遍历过程一直进行, 结点为根的子树 。 这种遍历过程一直进行 , 当搜索到一个满足 约束条件的叶子结点时,就找到了一个可行解。 约束条件的叶子结点时 , 就找到了一个可行解 。 对整个解空间 树的遍历结束后, 所有可行解中价值最大的就是问题的最优解。 树的遍历结束后 , 所有可行解中价值最大的就是问题的最优解 。 回溯法求解0/1背包问题 虽然实行剪枝减少了搜索空间,但是, 背包问题, 回溯法求解 背包问题,虽然实行剪枝减少了搜索空间,但是 , 整个搜索过程是按深度优先策略机械地进行,所以, 整个搜索过程是按深度优先策略机械地进行 , 所以 , 这种搜索 是盲目的。 是盲目的。 分支限界法首先确定一个合理的限界函数, 分支限界法首先确定一个合理的限界函数 , 并根据限界函 数确定目标函数的界[down, up](对于最小化问题,根据 数确定目标函数的界 (对于最小化问题,
w=0, v=0 ub=100 2 w=4, v=40 ub=76 4 × w=11 无效解 6 w=9, v=65 ub=69 8 w=12 无效解 × 9 w=9, v=65 ub=65 5 w=4, v=40 ub=70 7 w=4, v=40 ub=64 3 w=0, v=0 ub=60
图9.1 分支限界法求解0/1背包问题示例 (×表示该结点被丢弃,结点上方的序号表示搜索顺序)
分支限界法求解0/1背包问题, 其搜索空间如图9.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中 结点 加入表 中; 中选取目标函数值取得极大的结点2优先进行搜 ( 3)在表 中选取目标函数值取得极大的结点 优先进行搜 ) 在表PT中选取目标函数值取得极大的结点 索; 装入背包, ( 4)在结点 , 将物品 装入背包 , 因此 ,背包的重量为 , ) 在结点4,将物品2装入背包 因此,背包的重量为11, 不满足约束条件,将结点4丢弃 在结点5, 丢弃; 不满足约束条件,将结点 丢弃;在结点 ,没有将
物品2装入背包,因此,背包的重量和获得的价值与结点2相同 相同, 物品 装入背包,因此,背包的重量和获得的价值与结点 相同, 装入背包 目标函数值为40 加入表PT中 目标函数值为 + (10-4)×5=70,将结点 加入表 中; × ,将结点5加入表 中选取目标函数值取得极大的结点5优先进行搜索 (5)在表 中选取目标函数值取得极大的结点 优先进行搜索; )在表PT中选取目标函数值取得极大的结点 优先进行搜索; 装入背包, (6)在结点 ,将物品 装入背包,因此,背包的重量为 ,获得 )在结点6,将物品3装入背包 因此,背包的重量为9, 的价值为65,目标函数值为65 + (10-9)×4=69, 将结点 加入表 的价值为 , 目标函数值为 × , 将结点6加入表 PT中;在结点 ,没有将物品 装入背包,因此,背包的重量和获 装入背包, 中 在结点7,没有将物品3装入背包 因此, 得的价值与结点5相同 目标函数值为40 + (10-4)×4=64,将结 相同, 得的价值与结点 相同,目标函数值为 × = , 加入表PT中 点6加入表 中; 加入表 中选取目标函数值取得极大的结点6优先进行搜索 (7)在表 中选取目标函数值取得极大的结点 优先进行搜索; )在表PT中选取目标函数值取得极大的结点 优先进行搜索; 装入背包, ( 8)在结点 , 将物品 装入背包 , 因此 , 背包的重量为 , 不 ) 在结点8,将物品4装入背包 因此,背包的重量为12, 满足约束条件,将结点8丢弃 在结点9,没有将物品4装入背包 丢弃; 装入背包, 满足约束条件 , 将结点 丢弃 ; 在结点 , 没有将物品 装入背包 , 因此,背包的重量和获得的价值与结点6相同 相同, 因此,背包的重量和获得的价值与结点 相同,
如果该结点的目标函数值是表PT中的极值 中的极值( ,如果该结点的目标函数值是表 中的极值( 对于最小化问 是极小值;对于最大化问题, 是极大值) 题 , 是极小值 ; 对于最大化问题 , 是极大值 ) , 则该叶子结 点对应的解就是问题的最优解; 否则, 点对应的解就是问题的最优解 ; 否则 , 根据这个叶子结点调 整目标函数的界( 对于最小化问题, 调整上界; 整目标函数的界 ( 对于最小化问题 , 调整上界 ; 对于最大化 问题,调整下界) 依次考察表PT中的结点 中的结点, 问题 ,调整下界 ) , 依次考察表 中的结点, 将超出目标函 数界的结点丢弃,然后从表PT中选取使目标函数取得极值的 数界的结点丢弃, 然后从表 中选取使目标函数取得极值的 结点继续进行扩展。 结点继续进行扩展。 下面以0/1背包问题为例介绍分支限界法的搜索过程 背包问题为例介绍分支限界法的搜索过程。 下面以 背包问题为例介绍分支限界法的搜索过程。假 设有4个物品 其重量分别为(4, 个物品, 设有 个物品,其重量分别为 7, 5, 3),价值分别为 ,价值分别为(40, 42, 25, 12),背包容量 ,背包容量W=10。首先,将给定物品按单位重量价值 。首先, 从大到小排序,结果如表9.1所示 所示。 从大到小排序,结果如表 所示。
目标函数值为65; 目标函数值为 ; 是叶子结点, 的目标函数值是表PT ( 9)由于结点 是叶子结点, 同时结点 的目标函数值是表 )由于结点9是叶子结点 同时结点9的目标函数值是表 中的极大值,所以,结点9对应的解即是问题的最优解 对应的解即是问题的最优解, 中的极大值 , 所以 , 结点 对应的解即是问题的最优解 , 搜索 结束。 结束。 1