第5章-3 分支限界算法设计基本方法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
南京信息工程大学计算机与软件学院
问题的解空间:
与回溯法相同,一般用解空间树 解空间树(Solution Space 解空间树 Trees,也称状态空间树)的方式组织。 例如,对于n=3时的0-1背包问题,可用完全二叉树 表示其解空间,如下图所示。
南京信息工程大学计算机与软件学院
10
对解空间树的动态搜索过程
南京信息工程大学计算机与软件学院 4
5.3.1
分支限界法的基本思想
深度优先搜索
ABDHIEJKCFLMGNO
广度优先搜索
ABCDEFGHIJKLMNO
南京信息工程大学计算机与软件学院
5
5.3.1
分支限界法的基本思想
分支限界法常以广度优先或以最小耗费 (最大效益)优先的方式搜索问题的解空间 树。 对已处理的各结点根据限界函数估算目 标函数的可能取值,从中选取使目标函数取 得极值(极大/极小)的结点优先进行广度优 先搜索 不断调整搜索方向,尽快找到解。 特点:限界函数常基于问题的目标函数,适 特点: 用于求解最优化问题。
南京信息工程大学计算机与软件学院
11
广度优先遍历过程
在分支结点上,依次搜索该结点的所有孩子结点, 在分支结点上,依次搜索该结点的所有孩子结点, 分别估算这些孩子结点的目标函数的可能取值; 分别估算这些孩子结点的目标函数的可能取值; 如果某孩子结点的目标函数可能取得的值超出目 标函数的界,则将其丢弃, 标函数的界,则将其丢弃,因为从这个结点生成 的解不会比目前已经得到的解更好; 的解不会比目前已经得到的解更好; 否则,将其加入待处理结点表(简称活结点表) 否则,将其加入待处理结点表(简称活结点表) 中。
18
南京信息工程大学计算机与软件学院
(7)在活结点表中选取目标函数值取得极大的结点 优先 )在活结点表中选取目标函数值取得极大的结点6优先 进行搜索; 进行搜索; 装入背包, (8)在结点 ,将物品 装入背包,因此,背包的重量为 )在结点8,将物品4装入背包 因此, 12,不满足约束条件,将结点 丢弃;在结点 ,没有将物 丢弃; ,不满足约束条件,将结点8丢弃 在结点9, 装入背包, 品4装入背包,因此,背包的重量和获得的价值与结点 相 装入背包 因此,背包的重量和获得的价值与结点6相 目标函数值为65; 同,目标函数值为 ; 是叶子结点, (9)由于结点 是叶子结点,同时结点 的目标函数值是活 )由于结点9是叶子结点 同时结点9的目标函数值是活 结点表中的极大值 所以,结点9对应的解即是问题的最优 极大值, 结点表中的极大值,所以,结点 对应的解即是问题的最优 搜索结束。 解,搜索结束。
南京信息工程大学计算机与软件学院
12
叶历的深入, 随遍历的深入,活结点表中所估算的目标函数的 界越来越接近问题的最优解。 界越来越接近问题的最优解。 1.得解:当搜到一个叶子结点时,如果该结点的 得解: 得解 当搜到一个叶子结点时, 目标函数值是活结点表中的极值 极值, 目标函数值是活结点表中的极值,则该叶子对应 最优解; 最优解; 2.调界:否则,根据该叶子结点调整目标函数的 调界: 调界 否则,根据该叶子结点调整目标函数的 对最小化,调上界;对最大化,调下界); 界(对最小化,调上界;对最大化,调下界); 3.调队列(活结点表):并且,依次考察活结点 调队列( ):并且 调队列 活结点表):并且, 表中的结点,将超出目标函数界的结点丢弃; 表中的结点,将超出目标函数界的结点丢弃; 然后从活结点表中选取使目标函数取得极值的结 点继续进行扩展。 点继续进行扩展。
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
南京信息工程大学计算机与软件学院 16
3 w=0, v=0 ub=60 5 w=4, v=40 ub=70 7 w=4, v=40 ub=64
优先队列式分支限界法求解0/1背包问题, 优先队列式分支限界法求解 背包问题, 其搜索空 背包问题 间如上页图所示,具体的搜索过程如下: 间如上页图所示,具体的搜索过程如下: (1)在根结点 ,没有将任何物品装入背包,因此,背包 )在根结点1,没有将任何物品装入背包,因此, 的重量和获得的价值均为0,根据限界函数计算结点1的目 的重量和获得的价值均为 ,根据限界函数计算结点 的目 标函数值为10× 标函数值为 ×10=100; ; (2)在结点 ,将物品 装入背包,因此,背包的重量为 , 装入背包, )在结点2,将物品1装入背包 因此,背包的重量为4, 获得的价值为40,目标函数值为40 获得的价值为 ,目标函数值为 + (10-4)×6=76,将结 × , 点2加入待处理结点活结点表中;在结点3,没有将物品1 加入待处理结点活结点表中;在结点 , 没有将物品 加入待处理结点活结点表中 装入背包,因此,背包的重量和获得的价值仍为0, 装入背包,因此,背包的重量和获得的价值仍为 ,目标 函数值为10× = ,将结点3加入活结点表中 加入活结点表中; 函数值为 ×6=60,将结点 加入活结点表中; (3)在活结点表中选取目标函数值取得极大的结点 优先 )在活结点表中选取目标函数值取得极大的结点2优先 进行搜索; 进行搜索;
第5章-3 分支限界法
1.分组名单 2.作业 1)简述回溯法的基本思想和主要步骤。 2)比较回溯法与穷举法的异同。 3)简述分支限界法的基本思想和主要步骤。
南京信息工程大学计算机与软件学院
2
学习要点: 学习要点:
• • • • • • •
理解分支限界法的剪枝搜索策略。 掌握分支限界法的算法框架 (1)队列式(FIFO)分支限界法 (2)优先队列式分支限界法 通过应用范例学习分支限界法的设计策略。 (1) 0-1背包问题; (2)装载问题;
南京信息工程大学计算机与软件学院 6
5.3.1
分支限界法的基本思想
每一个活结点只有一次机会成为扩展结点。 活结点一旦成为扩展结点,就一次性产生 其所有儿子结点。 在这些儿子结点中,导致不可行解或导致 非最优解的儿子结点被舍弃 其余儿子结点被加入活结点表中。
南京信息工程大学计算机与软件学院
7
5.3.1
0/1背包的分支限界法过程
2. 求解过程
上界ub可用最好情况来代替ub=w*(v1/w1)=10*10=100 目标函数的界[40, 100],一般解空间树中第i层的各结 点,代表对物1~i的选择,可这样定限界函数:
ub
= V+ (W-w) * (vi+1/wi+1)
已装入价值 剩余容量 剩下物品最大单位价值vi+1/wi+1 的积
分支限界法的基本思想
此后,从活结点表中取下一结点成为当前 扩展结点, 重复上述结点扩展过程,直到找到所需的 解或活结点表为空时为止。
南京信息工程大学计算机与软件学院
8
5.3.1
分支限界法的基本思想
常见的两种分支限界法
(1)队列式(FIFO)分支限界法 队列式(FIFO)分支限界法 队列式(FIFO) 按照队列先进先出(FIFO)原则选取下一 个节点为扩展节点。 (2)优先队列式分支限界法 优先队列式分支限界法 按照优先队列中规定的优先级选取优先级 最高的节点成为当前扩展节点。
南京信息工程大学计算机与软件学院
19
0/1背包的分支限界法过程
3.小结 从0/1背包问题的搜索过程可看出:与回溯法相 比,分支限界法可根据限界函数不断调整搜索 方向,选择最可能得最优解的子树优先进行搜 索 找到问题的解。
南京信息工程大学计算机与软件学院
20
优先队列式分支限界法求解最大化问题的一般过程
南京信息工程大学计算机与软件学院 13
0/1背包的分支限界法过程
1. 问题描述
容量w=10 物品 1 2 3 4 重(w) 4 7 5 3 价(v) 40 42 25 12 价/重(v/w) 10 6 5 4
直观的,解(1,0,0,0),价值为40,可作为0/1背包的下界。
南京信息工程大学计算机与软件学院 14
南京信息工程大学计算机与软件学院 3
5.3.1
分支限界法的基本思想
分支限界法与回溯法的区别:
(1)求解目标:回溯法的求解目标是找出解空 求解目标: 求解目标 间树中满足约束条件的所有解,而分支限界法 的求解目标则是找出满足约束条件的一个解, 或是在满足约束条件的解中找出在某种意义下 的最优解。 搜索方式的不同: (2)搜索方式的不同:回溯法以深度优先的方 搜索方式的不同 式搜索解空间树,而分支限界法则以广度优先 或以最小耗费优先的方式搜索解空间树。
南京信息工程大学计算机与软件学院 17
( 4)在结点4,将物品2装入背包, 因此,背包的重量为 ) 在结点 , 将物品 装入背包, 因此, 装入背包 11,不满足约束条件,将结点 丢弃;在结点 ,没有将物 丢弃; ,不满足约束条件,将结点4丢弃 在结点5,没有将物 装入背包, 品2装入背包,因此,背包的重量和获得的价值与结点 相 装入背包 因此,背包的重量和获得的价值与结点2相 目标函数值为40 同,目标函数值为 + (10-4)×5=70,将结点 加入活结点 × ,将结点5加入活结点 表中; 表中; (5)在活结点表中选取目标函数值取得极大的结点 优先 )在活结点表中选取目标函数值取得极大的结点5优先 进行搜索; 进行搜索; 装入背包, (6)在结点 ,将物品 装入背包,因此,背包的重量为 , )在结点6,将物品3装入背包 因此,背包的重量为9, 获得的价值为65,目标函数值为65 + (10-9)×4=69,将结 获得的价值为 ,目标函数值为 × , 点 6加入活结点表中; 在结点7,没有将物品3装入背包, 加入活结点表中; 在结点 , 没有将物品 装入背包, 加入活结点表中 装入背包 因此,背包的重量和获得的价值与结点5相同 相同, 因此 , 背包的重量和获得的价值与结点 相同 , 目标函数 值为40 加入活结点表中; 值为 + (10-4)×4=64,将结点 加入活结点表中; × = ,将结点6加入活结点表中
1.确定一个合理的限界函数,目标函数的界 确定一个合理的限界函数, 确定一个合理的限界函数 [down, up] 2.广度优先遍历解空间树 广度优先遍历解空间树 3.依次从活结点表中选取使目标函数的值取 依次从活结点表中选取使目标函数的值取 得极值的结点成为当前扩展结点 4.重复上述过程,直到找到最优解。 重复上述过程, 重复上述过程 直到找到最优解。
1.根据限界函数确定目标函数的界[down, up]; .根据限界函数确定目标函数的界 ; 2.将待处理结点活结点表初始化为空; .将待处理结点活结点表初始化为空; 3.对根结点的每个孩子结点 执行下列操作 .对根结点的每个孩子结点x执行下列操作 3.1 估算结点 的目标函数值 估算结点x的目标函数值 的目标函数值value; 3.2 若(value>=down),则将结点 加入活结点表中; 加入活结点表中; ,则将结点x加入活结点表中 4.循环直到某个叶子结点的目标函数值在活结点表中最大 . 4.1 i=活结点表中值最大的结点; 活结点表中值最大的结点; 活结点表中值最大的结点 4.2 对结点 的每个孩子结点 执行下列操作 对结点i的每个孩子结点 的每个孩子结点x执行下列操作 4.2.1 估算结点 的目标函数值 估算结点x的目标函数值 的目标函数值value; 4.2.2 若(value>=down),则将结点 加入活结点表中; 加入活结点表中; ,则将结点x加入活结点表中 4.2.3 若(结点 是叶子结点且结点 的value值在活结点表中最大 , 结点x是叶子结点且结点 值在活结点表中最大), 结点 是叶子结点且结点x的 值在活结点表中最大 则将结点x对应的解输出 算法结束; 对应的解输出, 则将结点 对应的解输出,算法结束; 4.2.4 若(结点 是叶子结点但结点 的value值在活结点表中不是最大 , 结点x是叶子结点但结点 值在活结点表中不是最大), 结点 是叶子结点但结点x的 值在活结点表中不是最大 则令down=value,并且将活结点表中所有小于 的结点删除; 则令 ,并且将活结点表中所有小于value的结点删除; 的结点删除
南京信息工程大学计算机与软件学院
15
优先队列式分支限界法求解0/1背包问题 优先队列式分支限界法求解0/1背包问题 0/1
4个物品的重量分别为 7, 5, 3),价值分别为 个物品的重量分别为(4, 个物品的重量分别为 ,价值分别为(40, 42, 25, 12),背包容量 ,背包容量W=10。 。 价重比( 价重比(10,6,5,4) ) 1
南京信息工程大学计算机与软件学院
问题的解空间:
与回溯法相同,一般用解空间树 解空间树(Solution Space 解空间树 Trees,也称状态空间树)的方式组织。 例如,对于n=3时的0-1背包问题,可用完全二叉树 表示其解空间,如下图所示。
南京信息工程大学计算机与软件学院
10
对解空间树的动态搜索过程
南京信息工程大学计算机与软件学院 4
5.3.1
分支限界法的基本思想
深度优先搜索
ABDHIEJKCFLMGNO
广度优先搜索
ABCDEFGHIJKLMNO
南京信息工程大学计算机与软件学院
5
5.3.1
分支限界法的基本思想
分支限界法常以广度优先或以最小耗费 (最大效益)优先的方式搜索问题的解空间 树。 对已处理的各结点根据限界函数估算目 标函数的可能取值,从中选取使目标函数取 得极值(极大/极小)的结点优先进行广度优 先搜索 不断调整搜索方向,尽快找到解。 特点:限界函数常基于问题的目标函数,适 特点: 用于求解最优化问题。
南京信息工程大学计算机与软件学院
11
广度优先遍历过程
在分支结点上,依次搜索该结点的所有孩子结点, 在分支结点上,依次搜索该结点的所有孩子结点, 分别估算这些孩子结点的目标函数的可能取值; 分别估算这些孩子结点的目标函数的可能取值; 如果某孩子结点的目标函数可能取得的值超出目 标函数的界,则将其丢弃, 标函数的界,则将其丢弃,因为从这个结点生成 的解不会比目前已经得到的解更好; 的解不会比目前已经得到的解更好; 否则,将其加入待处理结点表(简称活结点表) 否则,将其加入待处理结点表(简称活结点表) 中。
18
南京信息工程大学计算机与软件学院
(7)在活结点表中选取目标函数值取得极大的结点 优先 )在活结点表中选取目标函数值取得极大的结点6优先 进行搜索; 进行搜索; 装入背包, (8)在结点 ,将物品 装入背包,因此,背包的重量为 )在结点8,将物品4装入背包 因此, 12,不满足约束条件,将结点 丢弃;在结点 ,没有将物 丢弃; ,不满足约束条件,将结点8丢弃 在结点9, 装入背包, 品4装入背包,因此,背包的重量和获得的价值与结点 相 装入背包 因此,背包的重量和获得的价值与结点6相 目标函数值为65; 同,目标函数值为 ; 是叶子结点, (9)由于结点 是叶子结点,同时结点 的目标函数值是活 )由于结点9是叶子结点 同时结点9的目标函数值是活 结点表中的极大值 所以,结点9对应的解即是问题的最优 极大值, 结点表中的极大值,所以,结点 对应的解即是问题的最优 搜索结束。 解,搜索结束。
南京信息工程大学计算机与软件学院
12
叶历的深入, 随遍历的深入,活结点表中所估算的目标函数的 界越来越接近问题的最优解。 界越来越接近问题的最优解。 1.得解:当搜到一个叶子结点时,如果该结点的 得解: 得解 当搜到一个叶子结点时, 目标函数值是活结点表中的极值 极值, 目标函数值是活结点表中的极值,则该叶子对应 最优解; 最优解; 2.调界:否则,根据该叶子结点调整目标函数的 调界: 调界 否则,根据该叶子结点调整目标函数的 对最小化,调上界;对最大化,调下界); 界(对最小化,调上界;对最大化,调下界); 3.调队列(活结点表):并且,依次考察活结点 调队列( ):并且 调队列 活结点表):并且, 表中的结点,将超出目标函数界的结点丢弃; 表中的结点,将超出目标函数界的结点丢弃; 然后从活结点表中选取使目标函数取得极值的结 点继续进行扩展。 点继续进行扩展。
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
南京信息工程大学计算机与软件学院 16
3 w=0, v=0 ub=60 5 w=4, v=40 ub=70 7 w=4, v=40 ub=64
优先队列式分支限界法求解0/1背包问题, 优先队列式分支限界法求解 背包问题, 其搜索空 背包问题 间如上页图所示,具体的搜索过程如下: 间如上页图所示,具体的搜索过程如下: (1)在根结点 ,没有将任何物品装入背包,因此,背包 )在根结点1,没有将任何物品装入背包,因此, 的重量和获得的价值均为0,根据限界函数计算结点1的目 的重量和获得的价值均为 ,根据限界函数计算结点 的目 标函数值为10× 标函数值为 ×10=100; ; (2)在结点 ,将物品 装入背包,因此,背包的重量为 , 装入背包, )在结点2,将物品1装入背包 因此,背包的重量为4, 获得的价值为40,目标函数值为40 获得的价值为 ,目标函数值为 + (10-4)×6=76,将结 × , 点2加入待处理结点活结点表中;在结点3,没有将物品1 加入待处理结点活结点表中;在结点 , 没有将物品 加入待处理结点活结点表中 装入背包,因此,背包的重量和获得的价值仍为0, 装入背包,因此,背包的重量和获得的价值仍为 ,目标 函数值为10× = ,将结点3加入活结点表中 加入活结点表中; 函数值为 ×6=60,将结点 加入活结点表中; (3)在活结点表中选取目标函数值取得极大的结点 优先 )在活结点表中选取目标函数值取得极大的结点2优先 进行搜索; 进行搜索;
第5章-3 分支限界法
1.分组名单 2.作业 1)简述回溯法的基本思想和主要步骤。 2)比较回溯法与穷举法的异同。 3)简述分支限界法的基本思想和主要步骤。
南京信息工程大学计算机与软件学院
2
学习要点: 学习要点:
• • • • • • •
理解分支限界法的剪枝搜索策略。 掌握分支限界法的算法框架 (1)队列式(FIFO)分支限界法 (2)优先队列式分支限界法 通过应用范例学习分支限界法的设计策略。 (1) 0-1背包问题; (2)装载问题;
南京信息工程大学计算机与软件学院 6
5.3.1
分支限界法的基本思想
每一个活结点只有一次机会成为扩展结点。 活结点一旦成为扩展结点,就一次性产生 其所有儿子结点。 在这些儿子结点中,导致不可行解或导致 非最优解的儿子结点被舍弃 其余儿子结点被加入活结点表中。
南京信息工程大学计算机与软件学院
7
5.3.1
0/1背包的分支限界法过程
2. 求解过程
上界ub可用最好情况来代替ub=w*(v1/w1)=10*10=100 目标函数的界[40, 100],一般解空间树中第i层的各结 点,代表对物1~i的选择,可这样定限界函数:
ub
= V+ (W-w) * (vi+1/wi+1)
已装入价值 剩余容量 剩下物品最大单位价值vi+1/wi+1 的积
分支限界法的基本思想
此后,从活结点表中取下一结点成为当前 扩展结点, 重复上述结点扩展过程,直到找到所需的 解或活结点表为空时为止。
南京信息工程大学计算机与软件学院
8
5.3.1
分支限界法的基本思想
常见的两种分支限界法
(1)队列式(FIFO)分支限界法 队列式(FIFO)分支限界法 队列式(FIFO) 按照队列先进先出(FIFO)原则选取下一 个节点为扩展节点。 (2)优先队列式分支限界法 优先队列式分支限界法 按照优先队列中规定的优先级选取优先级 最高的节点成为当前扩展节点。
南京信息工程大学计算机与软件学院
19
0/1背包的分支限界法过程
3.小结 从0/1背包问题的搜索过程可看出:与回溯法相 比,分支限界法可根据限界函数不断调整搜索 方向,选择最可能得最优解的子树优先进行搜 索 找到问题的解。
南京信息工程大学计算机与软件学院
20
优先队列式分支限界法求解最大化问题的一般过程
南京信息工程大学计算机与软件学院 13
0/1背包的分支限界法过程
1. 问题描述
容量w=10 物品 1 2 3 4 重(w) 4 7 5 3 价(v) 40 42 25 12 价/重(v/w) 10 6 5 4
直观的,解(1,0,0,0),价值为40,可作为0/1背包的下界。
南京信息工程大学计算机与软件学院 14
南京信息工程大学计算机与软件学院 3
5.3.1
分支限界法的基本思想
分支限界法与回溯法的区别:
(1)求解目标:回溯法的求解目标是找出解空 求解目标: 求解目标 间树中满足约束条件的所有解,而分支限界法 的求解目标则是找出满足约束条件的一个解, 或是在满足约束条件的解中找出在某种意义下 的最优解。 搜索方式的不同: (2)搜索方式的不同:回溯法以深度优先的方 搜索方式的不同 式搜索解空间树,而分支限界法则以广度优先 或以最小耗费优先的方式搜索解空间树。
南京信息工程大学计算机与软件学院 17
( 4)在结点4,将物品2装入背包, 因此,背包的重量为 ) 在结点 , 将物品 装入背包, 因此, 装入背包 11,不满足约束条件,将结点 丢弃;在结点 ,没有将物 丢弃; ,不满足约束条件,将结点4丢弃 在结点5,没有将物 装入背包, 品2装入背包,因此,背包的重量和获得的价值与结点 相 装入背包 因此,背包的重量和获得的价值与结点2相 目标函数值为40 同,目标函数值为 + (10-4)×5=70,将结点 加入活结点 × ,将结点5加入活结点 表中; 表中; (5)在活结点表中选取目标函数值取得极大的结点 优先 )在活结点表中选取目标函数值取得极大的结点5优先 进行搜索; 进行搜索; 装入背包, (6)在结点 ,将物品 装入背包,因此,背包的重量为 , )在结点6,将物品3装入背包 因此,背包的重量为9, 获得的价值为65,目标函数值为65 + (10-9)×4=69,将结 获得的价值为 ,目标函数值为 × , 点 6加入活结点表中; 在结点7,没有将物品3装入背包, 加入活结点表中; 在结点 , 没有将物品 装入背包, 加入活结点表中 装入背包 因此,背包的重量和获得的价值与结点5相同 相同, 因此 , 背包的重量和获得的价值与结点 相同 , 目标函数 值为40 加入活结点表中; 值为 + (10-4)×4=64,将结点 加入活结点表中; × = ,将结点6加入活结点表中
1.确定一个合理的限界函数,目标函数的界 确定一个合理的限界函数, 确定一个合理的限界函数 [down, up] 2.广度优先遍历解空间树 广度优先遍历解空间树 3.依次从活结点表中选取使目标函数的值取 依次从活结点表中选取使目标函数的值取 得极值的结点成为当前扩展结点 4.重复上述过程,直到找到最优解。 重复上述过程, 重复上述过程 直到找到最优解。
1.根据限界函数确定目标函数的界[down, up]; .根据限界函数确定目标函数的界 ; 2.将待处理结点活结点表初始化为空; .将待处理结点活结点表初始化为空; 3.对根结点的每个孩子结点 执行下列操作 .对根结点的每个孩子结点x执行下列操作 3.1 估算结点 的目标函数值 估算结点x的目标函数值 的目标函数值value; 3.2 若(value>=down),则将结点 加入活结点表中; 加入活结点表中; ,则将结点x加入活结点表中 4.循环直到某个叶子结点的目标函数值在活结点表中最大 . 4.1 i=活结点表中值最大的结点; 活结点表中值最大的结点; 活结点表中值最大的结点 4.2 对结点 的每个孩子结点 执行下列操作 对结点i的每个孩子结点 的每个孩子结点x执行下列操作 4.2.1 估算结点 的目标函数值 估算结点x的目标函数值 的目标函数值value; 4.2.2 若(value>=down),则将结点 加入活结点表中; 加入活结点表中; ,则将结点x加入活结点表中 4.2.3 若(结点 是叶子结点且结点 的value值在活结点表中最大 , 结点x是叶子结点且结点 值在活结点表中最大), 结点 是叶子结点且结点x的 值在活结点表中最大 则将结点x对应的解输出 算法结束; 对应的解输出, 则将结点 对应的解输出,算法结束; 4.2.4 若(结点 是叶子结点但结点 的value值在活结点表中不是最大 , 结点x是叶子结点但结点 值在活结点表中不是最大), 结点 是叶子结点但结点x的 值在活结点表中不是最大 则令down=value,并且将活结点表中所有小于 的结点删除; 则令 ,并且将活结点表中所有小于value的结点删除; 的结点删除
南京信息工程大学计算机与软件学院
15
优先队列式分支限界法求解0/1背包问题 优先队列式分支限界法求解0/1背包问题 0/1
4个物品的重量分别为 7, 5, 3),价值分别为 个物品的重量分别为(4, 个物品的重量分别为 ,价值分别为(40, 42, 25, 12),背包容量 ,背包容量W=10。 。 价重比( 价重比(10,6,5,4) ) 1