【算法基础】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 }
拓展方向
八皇后问题
装载问题
批处理作业调度问题
背包问题

浙公网安备 33010602011771号