DFS、回溯算法与 Hierholzer 算法的区别

DFS、回溯算法与 Hierholzer 算法的简单区别:

  1. 回溯时的处理不同:它们的主要区别不在于是否会回溯,因为 DFS 与 Hierholzer 算法也会回溯
    1. DFS 会将已经访问过的顶点标记为不可再次访问,且不会再撤销,从而使得可搜索路径越来越少。当发现当前顶点没有下一个可访问的顶点时,DFS 会回溯到之前访问的顶点继续查找其有没有下一个可访问的顶点,如果没有则继续回溯,直到全部顶点都访问到为止。
    2. 回溯算法向前的每一步都会去设置某个状态,而当向前走走不通的时候会进行回溯,回溯时需要把之前设置的状态撤销掉
    3. Hierholzer 算法则是使用了 DFS,只是不同的是如果当前顶点没有下一个可访问的顶点时,Hierholzer 算法会将当前顶点入栈
  2. 最后产生的结果不同
    1. 对于同一张图,相同的起点,DFS 只会找到一条路径。
    2. 而回溯算法可以找到可能的全部路径,也包括 DFS 找到的那条路径。
    3. Hierholzer 算法则会找到欧拉路径或欧拉回路。
  • 回溯法(back tracking),回溯算法是树的算法。
  • DFS, 即深度优先遍历,它是图的算法。
  • Hierholzer 算法,它是欧拉图和半欧拉图的算法。

最后强调一点:是否递归跟算法毫无关系,递归只是算法的一种实现方式,任何递归实现都可以通过迭代来实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值