一直以来我对背包问题的认识都停留在动态规划上,今天在这里我们趁此机会学习一下有名的BB方法。
我们假设问题如下:有一系列不可分割的物体,它的价值为
动态规划
我们定义
为什么可以应用动态规划?
- 一个问题可以不断地拆分成子问题解决,并且该问题的解可以通过子问题的解构成。
- 子问题的数量有限,在这里要解决的子问题的数量至多为NC个。
但是我们可以看到动态规划的局限性,比如我就比较担心:约束有更多个,例如还有体积约束,或者物体A和B不能水火不容。(当然也不是说就完全不行了。)
分支定界
好的,现在我们来看看Branch and Bound 是怎么解决这个问题的吧。(偷懒,我就用Coursera上的那个例子了。
![9c4f2d629461ce02431364659738536e.png](https://i-blog.csdnimg.cn/blog_migrate/08a5a51c7b1d1bd542037cf2019371bb.jpeg)
首先,直觉上,我们可以穷尽所有可能0-1组合来解决这个问题,有
我们可以用一种非常自然的树状结构来生成这些组合:
![1593c56c259f9ee034473e2dfbf68fcb.png](https://i-blog.csdnimg.cn/blog_migrate/77baf4aede068602cae7e27765e18b01.jpeg)
这个树怎么从一开始慢慢长大就是Branch。Branch把我们带到了子问题或者解空间里面的一个子空间里去。
而Bound就是一种剪枝的方法:
如果对这个分支的乐观估计已经比我得到的现有结果差,那么这个分支我就不考虑下去了。
那么乐观估计怎么取呢?
这里的一个简单思路就是允许物体只取一部分,此时我们可以用贪心算法去求解,即先选单位价值大的物体。注意到一个问题,那就是估计本身是要计算量的,所以贪心算法在这里可能比直接用线性规划要快。下面是一个基于DFS的BB的结果。
![939b0b4f101bc2db6b460c31a76e1f2b.png](https://i-blog.csdnimg.cn/blog_migrate/577a0036d92bfb7d1a09aea280a0d76b.jpeg)
搜索顺序
那么这个搜索树的生成(branch)到底有什么讲究呢?
对于分支的顺序(下一个展开节点的选择/搜索策略),我们可以有:
- Depth First Search
- Breadth First Search
- Best First Search
- Limited/Least Discrepancy Search
其中Best First Search用Bound中的估计当前节点,通过这个估计我们建立起一个优先级队列,按照出队顺序分支节点,我们总是处理估计值更好的节点。这里的思路是:
现有估计最好的节点的展开可能更容易导向最优解。
我们可以扩展一个一下这个思路,实际上我们就是面对这样一个问题:
按什么顺序展开更可能导向最优解?
如果我们认为解总是在比较浅的地方,我们就可能会使用BFS。或者甚至我们有一个预测最优解在哪个分支下的概率的函数(比如下围棋的局势评价函数,[To Do] 利用CNN解决数独问题。),那么我们就先搜索概率大的分支。
而Limited Discrepancy Search其实也是这个思路,它假设我们有一个非常好的寻找后继展开节点的heuristic算法,按照这个算法我们甚至常常能一下子就找到正确解或者拿到一个接近的解。那我们知道真正的解和heuristic得到的解之间的距离很近,那么我们就先按BFS搜索距离近的解。在背包问题中,这里的距离,我们就可以理解为每一次分支的时候哪几个物体的0-1选择不一样。而这些在分支上的分歧就是Discrepancy。一个例子如下,我们的heuristic认为选左边总比选右边概率更大。那么我们就有可能有如下一个搜索的顺序:
![7471524677c498c5c49c3242ba1eb50c.png](https://i-blog.csdnimg.cn/blog_migrate/6fe28aea7fbbef3c503a6b364c91fdc9.jpeg)
这就等价于我们把Best First Search中的估计换成了负的Discrepancy。Discrepancy越小就是越“好”。
事实上,我们就是要利用专业知识来构造一个heuristic函数来引导搜索先往更有可能的求解域前进。
注意我们还要考量每种方法的空间和时间复杂度。
- Coursera 课程: Discrete Optimization (Pascal Van Hentenryck,Carleton Coffrin)
- [To Do] Beam Search
- Limited Discrepancy Search (William D. Harvey, Matthew L. Ginsberg)