DFS,回溯和递归的区别和联系

最近看深搜的背包问题,发现自己对回溯和深搜在代码实现上傻傻分不清楚,通过查询资料,我对三者进行了总结:

区别:
①递归是一种算法结构,而回溯和深搜是一种算法思想。
②从解空间树的角度看,深搜会访问解空间树的所有节点,并标记“走过的路”(比如背包问题)不可撤销这种标记,一条路走到黑,直到找到问题的解;而回溯是一种试探性地行为,也会标记,但是可撤销此标记。
③回溯和深搜最大的区别是回溯一定伴随着“剪枝”操作,节省大量时间,深搜却不一定。

联系:
①回溯和深搜,本身就会利用到递归。
②深搜可以看成是一种工具,回溯是这个工具的一种应用,换句话说,回溯是深搜的一种,深搜是回溯但不剪枝。

下面贴一下别的帖子找的
回溯与深搜的关系
回溯法的基本思想:
在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。 若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。 而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。

欢迎评论区交流

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值