回溯法与分支限界法

来源:互联网 发布:java同步异步调用 编辑:程序博客网 时间:2024/06/06 02:58

对于这两种算法的使用,是针对于一些特定的问题的。但是范围也比较,比如回溯法就被称为“通用的解题法”,这里具体将说一下这两种方法的相同点与区别。

其实区别还是很明显的,最简单来说,一种是深度优先搜索,一种是广度优先搜索。

对于回溯法,运用的就是深度优先搜索,每次都会沿着一条路线到叶子节点,然后再回来。每次将找到所有的满足条件的解法。

对于分支限界法,运用的是广度优先搜索,每次都是将每一层所有的结点进行扫描,然后将所有的活结点加到队列中,直到所有的结点都被检索完或者找到满足条件的一个解。

分支限界的策略是:在一个拓展结点处,先生成所有的儿子节点,再从当前活结点表中选择下一个拓展结点,通过一个函数值(限界)来找一个最有利的结点作为拓展结点。

回溯法:按深度优先策略,从根节点出发搜索解空间树,算法搜索至解空间树的任意结点,先判断该结点是否包含问题的解,如果肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向祖先结点进行回溯,否则,进入该结点,继续按深度优先策略搜索,回溯时要回溯到根,而且根结点所有的子树都内搜索才结束。

1 0
原创粉丝点击