【算法基础】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 }

 

拓展方向

八皇后问题
装载问题
批处理作业调度问题
背包问题

posted @ 2022-11-16 20:40  啊原来是这样呀  阅读(86)  评论(0)    收藏  举报