回溯法和分支限界区别
目录
回溯法和分支限界区别
回溯法和分支限界法区别
结论
方法 | 解空间搜索方式 | 存储结点的数据结构 | 结点存储性质 | 常用应用 |
---|---|---|---|---|
回溯法 | 深度优先 | 栈 | 活结点的所有可行结点被遍历后才能出栈 | 找出满足条件的所有解 |
分支限界法 | 广度优先 | 队列 | 每个结点只有一次成为活结点机会 | 找出满足条件的一个解或者特定意义的最优解 |
举例说明(0-1背包)
相同点
两者都是在树状的解空间上求解 ,回溯法找出满足条件的所有解,通过约束函数和限界函数可以找到问题的最优解,同时分支限界法主要应用于找满足条件的一个解或者最优解。
区别
搜索策略
- 回溯法采用深度优先搜索的策略
- 分支限界法采用广度优先的搜索策略
结点存储的数据结构
- 回溯法使用栈来进行结点的存储
- 分支限界法使用队列进行结点的存储
结点存储性质
- 回溯法只有在所有子节点都被遍历之后才出栈
- 分支限界法中每个结点只被访问一次
因为博主写也只是在学习过程中做个人总结,所以难免可能会有错误的地方,欢迎大家一起交流、讨论。如果有幸解决了您的一些疑问,本人不胜感激!