美文网首页
算法篇 - 递归,回溯,动态规划, 贪心

算法篇 - 递归,回溯,动态规划, 贪心

作者: 交大小丑 | 来源:发表于2020-03-15 22:46 被阅读0次

递归就是自我调用,经常作为一种编程的实现方式,比如题主问题中的DFS 、动态规划、回溯法都可以用递归来实现,当然也可以用非递归来实现。很多时候一个概念也可以用递归的方式来定义(比如gnu)。

回溯是一种通用的算法,把问题分步解决,在每一步都试验所有的可能,当发现已经找到一种方式或者目前这种方式不可能是结果的时候,退回上一步继续尝试其他可能。很多时候每一步的处理都是一致的,这时候用递归来实现就很自然。

当回溯用于树的时候,就是深度优先搜索。当然了,几乎所有可以用回溯解决的问题都可以表示为树。那么这俩在这里就几乎同义了。如果一个问题解决的时候显式地使用了树,那么我们就叫它dfs。很多时候没有用树我们也管它叫dfs严格地说是不对的,但是dfs比回溯打字的时候好输入。别的回答里提到了砍枝,实际上这二者都可以砍枝。

至于动态规划,被题主放到这里是因为都是竞赛中经常会遇到并且学起来不容易明白吗?回溯可以用于所有用穷举法可以解决的问题,而DP只用于具有最优子结构的问题。所以不是所有问题都适合用dp来解决,比如八皇后。dp需要存贮子问题的解,回溯不需要。

贪心 当局部解就是最优解时,递归就是贪心算法

https://zhuanlan.zhihu.com/p/95525781

相关文章

  • 算法篇 - 递归,回溯,动态规划, 贪心

    递归就是自我调用,经常作为一种编程的实现方式,比如题主问题中的DFS 、动态规划、回溯法都可以用递归来实现,当然也...

  • 高级算法设计与分析

    目录 算法基础 算法复杂性 递归与分治 回溯法与分支限界法 贪心算法 动态规划法 NP问题 概率算法 现代优化算法...

  • 数据结构与算法简述(下)

    目录: 算法简介 排序算法 递归与穷举 贪心与分治 动态规划和回溯 1.算法简介 解题方案的准确而完整的描述,是一...

  • 动态规划问题(Java)

    0. 动态规划分析 0.1 动态规划、递归和贪心算法的区别 动态规划就是利用分治思想和解决冗余的办法来处理问题,所...

  • 动态规划

    --tags: 算法,动态规划 动态规划解题 引入:动态规划 和贪心法 都是算法的思想方法 贪心算法——像 第一类...

  • 常用几种算法

    贪心,分治,回溯,动态规划四种算法。 贪心算法 场景:我们有m个糖果和n个孩子,现在要把糖果分给这些孩子吃,但是糖...

  • 动态规划理论与案例

    一、为什么要使用动态规划 在前面的文章中,我们介绍了贪心算法、回溯算法,它们和动态规划一样,通常都可以用来解决多阶...

  • 一位算法工程师的自我修养

    数据结构与算法 基本算法思想动态规划贪心算法回溯算法分治算法枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度...

  • 一、基础算法分析类型

    常见的算法分析类型如下: 1、分治法 2、动态规划法 3、回溯法 4、分支限界法 5、贪心法

  • 王道程序员求职宝典(九)基本算法及链表

    分治法,动态规划与贪心算法 分治法特征分解解决合并递归:自顶向下 动态规划要素最优子结构重叠子问题递推:自底向上步...

网友评论

      本文标题:算法篇 - 递归,回溯,动态规划, 贪心

      本文链接:https://www.haomeiwen.com/subject/pduiehtx.html