回溯与递归算法的区别
来源:互联网 发布:呼叫中心软件测试 编辑:程序博客网 时间:2024/04/29 21:41
前段时间面试,技术面试官问我回溯与递归算法的区别,一时语塞,回来查了一下资料,有点收获。
有人说,回溯实际上是递归的展开,但实际上。两者的指导思想并不一致。
打个比方吧,递归法好比是一个军队要通过一个迷宫,到了第一个分岔口,有3条路,将军命令3个小队分别去探哪条路能到出口,3个小队沿着3条路分别前进,各自到达了路上的下一个分岔口,于是小队长再分派人手各自去探路——只要人手足够(对照而言,就是计算机的堆栈足够),最后必将有人找到出口,从这人开始只要层层上报直属领导,最后,将军将得到一条通路。所不同的是,计算机的递归法是把这个并行过程串行化了。
而回溯法则是一个人走迷宫的思维模拟——他只能寄希望于自己的记忆力,如果他没有办法在分岔口留下标记(电视里一演到什么迷宫寻宝,总有恶人去改好人的标记)。
以我之见,其实回溯算法跟递归算法不能以类别形式进行比较,只能以算法的形式上进行区别。
回溯算法其实是一种试探,该方法放弃关于问题规模大小的限制,并将问题的方案按某种顺序逐一枚举和试验。发现当前方案不可能有解时,就选择下一个方案,倘若当前方案不满足问题的要求时,继续扩大当前方案的规模,并继续试探。如果当前方案满足所有要求时,该方案就是问题的一个解。放弃当前方案,寻找下一介方案的过程称为回溯。
而递归算法依赖与前一步的结果,它的结果来源于一条主线,是确定的,而不是试探的结果,这就是其与回溯的区别,而在很多情况下,回溯与递归算法是在一起使用的。
看到回溯算法的时候,我想起了人工智能课里面的深度优先算法,为了最大的减少试探,这个是必须地。完~
- 回溯与递归算法的区别
- 回溯与递归算法的区别
- 递归与回溯算法
- 关于回溯算法的递归与非递归解法
- 八皇后及N皇后的回溯与递归算法
- 数独算法-递归与回溯
- 数据结构与算法练习-回溯、递归
- 回溯法解决组合与数的问题(递归与非递归算法)
- [回溯法]八皇后问题的递归与非递归算法
- C++ 回溯算法 (递归的使用)
- 回溯和递归区别
- 常用算法:递归,回溯
- 八皇后问题算法(回溯与递归算法)
- 递归与回溯
- 回溯与递归
- NQueens 与 递归,回溯
- 递归与回溯
- 数据结构与算法(1)——递归和回溯
- 一个本分男人的烦恼,谁有这样的境遇?
- javascript 确认 删除
- hibernate clob/blob的处理
- gfg
- 2009年7月26日
- 回溯与递归算法的区别
- 如何快速编译系统(用鼠标操作)
- .NET多线程技术详解(2) 创建、终止线程
- Head First C# 中文版 第13章 控件和图形 page581
- FZU数据结构精品课程 2.1 选举问题
- Carbide c++ 快捷键
- [鬼谷子]言论精解
- 改谭浩强教授《C程序设计题解与上机指导(第二版)》习题10.3
- BOF或EOF有一个是真,或者当前记录已被删除