zoukankan      html  css  js  c++  java
  • 动态规划和贪心选择算法区别

    区别:
    动态规划
    全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有最优解。
    条件:最优子结构;重叠子问题。
    方法:自底向上构造子问题的解。
    例子:子序列最大和问题,滑雪问题

    贪心算法
    条件:每一步的最优解一定依赖上一步的最优解。
    方法:从问题的某一个初始解出发逐步逼近给定的目标,以尽可能快的地求得更好的解。当达到某算法中的某一步不能再继续前进时,算法停止。
    存在问题:
    (1)不能保证求得的最后解是最佳的;
    (2)不能用来求最大最小解的问题;比如钱币分为1元3元4元,要拿6元钱,贪心的话,先拿4,再拿两个1,一共3张钱;实际最优却是两张3元就够了。
    “贪心”特性:它对解空间树的遍历不需要自底向上,而只需要自根开始,选择最优的路,一直走到底就可以了。这样,与动态规划相比,它的代价只取决于子问题的数目,而选择数目总为1。
    例子:哈夫曼树,钱币组合,设置雷达问题
    ========================
    联系:
    (1)都是一种递推算法;
    (2)贪心和动态规划本质上是对子问题树的一种修剪。两种算法要求问题都具有的一个性质就是“子问题最优性”。即组成最优解的每一个子问题的解,对于这个子问题本身肯定也是最优的

  • 相关阅读:
    iOS 的 XMPPFramework 简介
    Swift闭包
    Objective-C类成员变量深度剖析
    iOS Auto Layout
    iOS WIFI
    AppStore提审攻略
    iOS7 修改导航系统默认返回按钮文字及颜色
    iOS Block浅析
    Latency
    Charles抓包工具的使用
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6357429.html
Copyright © 2011-2022 走看看