分支限界法:以广度优先方式系统搜索问题的解
- 在问题的解空间树中,按广度优先策略,从根节点出发搜索解空间树
- 求解目标:找出满足约束条件的解
- 可行解或最优解
- 搜索策略
- 根据限界函数值,剔除那些导致不可行解或非最优解的子结点,使搜索过程仅限制在剩余的分支内进行
- 适用于组合优化问题
分支限界法的基本思想
分支限界法 VS 回溯法
-
相同点
- 两者在进行问题求解前,都需要完成解空间的定义和组织
- 都是通过在解空间搜索来寻找问题的解
-
不同点
- 搜索方式:
- 回溯法->深度优先,
- 分支限界法->广度优先
- 搜索策略:
- 回溯法:根据剪枝函数,选择下一个扩展结点并按深度优先方式进行搜索
- 分支限界法:在扩展结点处,先产生其所有的子结点(分支)(所有结点只有一次机会成为当前扩展结点),然后根据限界函数,确定哪些子结点将导致不可行解或非最优解,将这些子结点剔除,用剩下的子结点构造当前的活结点表,然后从该表中取一个结点作为当前扩展结点,并重复上述过程。
- 搜索方式:
分支限界法的主要分类
- 根据从活结点表中选择下一个扩展结点的方式分类
- 队列式FIFO分支限界法
- 优先队列分支限界法
实例分析
背包问题
- 实例分析:
n=4的背包问题
重量w = [2, 3, 4,7]
价值p = [1, 3, 5,9]
限制重量b = 10
-
代价函数的设定(代价函数的设定仅会影响分支限界法的效率)
vk+1/wk+1 是选择后下一个单位重量价值最大的物品,代价函数即为计算最大有可能得到的价值。
界即为当前最优的解,与代价函数进行比较进行裁剪
预处理,先将物品按单位重量的价格从小到大依次排序
小结
-
分支限界法的基本思想
- 与回溯法的联系与区别
- 两种主要的分支限界法:队列式、优先队列式
- 代价函数与界的概念
-
利用分支限界法求解问题的方法
PS: 本节内容偏于设计,于《算法导论》中无本章节,用于补充