对回溯法和分支限界法不了解的话,可以先参考之前的blog:https://blog.csdn.net/m0_51339444/article/details/124062406
一、算法概述
1. 回溯法
回溯法 = 穷举 + 剪枝
,根据约束条件
和限界函数
进行剪枝,本质是深度优先搜索,是穷举遍历的改进版,只是可以进行剪枝,缩小搜索空间,提高算法效率。
回溯法分为递归回溯
和迭代回溯
。
搜素树的类型分为子集树(O( 2^n^ ))
和排列树(O( n !))
。
2. 分支限界
分支限界和回溯法非常类似,都是在整个搜索空间进行剪枝,但分支限界主要是广搜的思想,每个节点只有一次机会成为活结点,一次性拓展出该节点所有孩子节点,根据代价函数剪枝,因此采用队列的形式。而回溯法需要使用栈。