回溯法(一)
应用分支限界法的关键问题
如何确定合适的限界函数
常见方法是先对整个问题估计出下界(最小化问题)或上界(最大化问题),而限界函数是在部分解的基础上对剩余的未知部分进行界的重新估计
如何组织待处理结点表
如何确定最优解中的各个分量
分支限界法对问题的解空间树中结点的处理是跳跃式的,回溯也不是单纯地沿着双亲结点一层一层向上回溯,因此,当搜索到某个叶子结点且该叶子结点的目标函数值在表PT中最大时(假设求解最大化问题),求得了问题的最优值,但是,却无法求得该叶子结点对应的最优解中的各个分量。这个问题可以用如下方法解决:
–对每个扩展结点保存该结点到根结点的路径;
–在搜索过程中构建搜索经过的树结构,在求得最优解时,从叶子结点不断回溯到根结点,以确定最优解中的各个分量
例如0/1背包问题,为了对每个扩展结点保存该结点到根结点的路径,将部分解(x1, …, xi)和该部分解的目标函数值都存储在待处理结点表PT中