在coursera上学习discrete optimization时关于branch and bound的笔记整理

Branch and bound (BB, B&B, or BnB) is an algorithm design paradigm for discrete and combinatorial optimization problems, as well as mathematical optimization. A branch-and-bound algorithm consists of a systematic enumeration of candidate solutions by means of state space search: the set of candidate solutions is thought of as forming a rooted tree with the full set at the root. The algorithm explores branches of this tree, which represent subsets of the solution set. Before enumerating the candidate solutions of a branch, the branch is checked against upper and lower estimated bounds on the optimal solution, and is discarded if it cannot produce a better solution than the best one found so far by the algorithm.
The algorithm depends on efficient estimation of the lower and upper bounds of regions/branches of the search space. If no bounds are available, the algorithm degenerates to an exhaustive search.

The core: prune the search tree.
Branch: split the problem into a number of subproblems
Bound: find the optimistic estimate of the best solution to the subproblem

Search strategy:

  1. Depth-first: select the left node to branch; prunes when a node estimation is worse than the best-found solution
  2. Best-first: select the node with best estimation to branch; prunes when all the nodes are worse than a found solution. (actually, it doesn’t have the pruning process, it branch the node which is most likely the optimal solution. So the whole algorithm only prune for one time, when all other node has less estimation than a found solution, it prune all other nodes.)
  3. Limited discrepancy search(LDS): trust a greedy heuristic less and less; explore the search space in increasing order of mistakes.
发布了4 篇原创文章 · 获赞 0 · 访问量 133

猜你喜欢

转载自blog.csdn.net/louislin_buaa/article/details/104197003
今日推荐