【算法基础】4.五大算法之回溯算法
参考资料
回溯算法及常见例子https://blog.csdn.net/m0_37741420/article/details/107444661
直观理解
深度优先搜索,先按一定的规则钻到底,发现不对回退一步走另一条路钻到底,发现不对回退一步走另一条路钻到底。。。
例子先行
二叉搜索树的搜索
总结提炼
1基本策略
在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯,直到探索到叶节点则结束本次遍历
2使用步骤
(1)定义问题的解空间;
(2)确定易于搜索的解空间结构;
(3)以深度优先搜索的策略搜索解空间,并在搜索过程中用剪枝函数避免无效搜索
伪代码
1 backtrack(开始回溯的初始条件){ 2 if(结束回溯条件){ 3 保存本趟完整的回溯结果 4 return; 5 } 6 if(满足本次判断条件){ 7 记录本趟某一次的回溯结果 8 backtrack(进行下一模块的回溯); 9 回退本趟某一次的回溯结果 10 } 11 }
拓展方向
八皇后问题
装载问题
批处理作业调度问题
背包问题
本文作者:啊原来是这样呀
本文链接:https://www.cnblogs.com/OhOfCourse/p/16897395.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步