算法-分支限界算法

1.算法思想

分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。
在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。

1.1 求解目标

分支限界法的求解目标是:找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。

1.2 两个重要机制

  • 产生分支(解空间树)
  • 产生一个界限,能终止许多分支(剪枝)

1.3 分支限界法与回溯法的区别

下表列出了回溯法和分支限界法的一些区别
算法-分支限界算法_第1张图片

1.4 两种分支限界法

从活结点表中选择下一扩展结点的不同方式导致不同的分支限界法。

最常见的有以下两种方式:

  • 队列式(FIFO)分支限界法:队列式分支限界法将活结点表组织成一个队列,并按队列的先进先出原则选取下一个结点为当前扩展结点。
  • 优先队列式分支限界法:优先队列式分支限界法将活结点表组织成一个优先队列,按优先队列中规定的结点优先级选取优先级最高的下一个结点成为当前扩展结点。
常用堆来实现优先队列

2.单向源最短路径

你可能感兴趣的:(算法,数据结构)