0
点赞
收藏
分享

微信扫一扫

贪心算法与动态规划的区别与联系


目录

 

​​1.定义​​

​​1.1贪心算法​​

​​1.1.1解题步骤​​

​​1.2动态规划​​

​​1.2.1解题步骤​​

​​2.联系​​

​​3.区别​​

1.定义

1.1贪心算法

贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

1.1.1解题步骤

      1.建立数学模型来描述问题;
      2.把求解的问题分成若干个子问题;
      3.对每一子问题求解,得到子问题的局部最优解;
      4.把子问题的局部最优解合成原来问题的一个解

1.2动态规划

动态规划是运筹学的一个分支,是求解决策过程的最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。在各种算法中,我认为动态规划是较难掌握好的,主要难在模型的建立。
 

1.2.1解题步骤

      1.找出最优解的性质,刻画其结构特征和最优子结构特征;
      2.递归地定义最优值,刻画原问题解与子问题解间的关系;
      3.以自底向上的方式计算出各个子问题、原问题的最优值,并避免子问题的重复计算;
      4.根据计算最优值时得到的信息,构造最优解。

2.联系

  1. 都是一种推导算法
  2. 都是分解成子问题来求解,都需要具有最优子结构

3.区别

1.贪心:每一步的最优解一定包含上一步的最优解,上一步之前的最优解则不作保留。动态规划:全局最优解中一定包含某个局部最优解,但不一定包含前一个局部最优解,因此需要记录之前的所有的局部最优解

2.贪心:如果把所有的子问题看成一棵树的话,贪心从根出发,每次向下遍历最优子树即可(通常这个“最优”都是基于当前情况下显而易见的“最优”);这样的话,就不需要知道一个节点的所有子树情况,于是构不成一棵完整的树。动态规划:动态规划则自底向上,从叶子向根,构造子问题的解,对每一个子树的根,求出下面每一个叶子的值,最后得到一棵完整的树,并且最终选择其中的最优值作为自身的值,得到答案

 

 

举报

相关推荐

0 条评论