目录

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

在找资料过程中发现了一名大佬博主:https://blog.csdn.net/qq_32400847/article/details/51148917

是关于学算法的,内容很丰富和详细,刚开始学算法或者想了解的可以看一下。

贪心算法与动态规划的区别与联系相关推荐

  1. 贪心算法和动态规划的区别

    一.动态规划  动态规划(简称DP)的思想是把一个大的问题进行拆分,细分成一个个小的子问题,且能够从这些小的子问题的解当中推导出原问题的解. 性质 1.最优子结构性:既所拆分的子问题的解是最优解. 2 ...

  2. 贪心算法、分治算法和动态规划的区别

    贪心算法.分治算法和动态规划的区别 (1)分治法(divide and conquer method) 将原问题划分成若干个规模较小而结构与原问题相似的子问题,递归的解决这些子问题,然后再合其结果,就 ...

  3. 算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法

    算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法. 无规则方法为穷举,改进方法 ...

  4. 剑指offer:剪绳子(找规律,贪心算法,动态规划)

    1. 题目描述 /* 题目描述给你一根长度为n的绳子,请把绳子剪成m段(m.n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]xk[1]x ...

  5. 分治,递归,贪心算法,动态规划的关系

    来自书籍<王道程序员面试宝典> 递归是解决问题的一种具体实现方法.而分治,动态规划,贪心算法是解决问题的一类思想. 分治一般通过递归实现.

  6. 完全背包问题贪心算法c语言,数据结构与算法学习之路:背包问题的贪心算法和动态规划算法...

    一.背包问题描述: 有N种物品和一个重量为M的背包,第i种物品的重量是w[i],价值是p[i].求解将哪些物品装入背包可使这些物品的费用总和不超过背包重量,且价值总和最大. 二.解决方法: 1.贪心算 ...

  7. LeetCode 53. 最大子数组和【贪心算法、动态规划】

    53. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 子数组 是数组中的一个连续部分. 示例 1: 输入:nums = [- ...

  8. 活动选择的贪心算法与动态规划

    问题: 有一个需要使用每个资源的n个活动组成的集合S= {a1,a2,···,an },资源每次只能由一个活动使用.每个活动a都有一个开始时间和结束时间,且 0<= s < f .一旦被选 ...

  9. 动态规划和贪心算法的区别

    要想清楚两者的区别,首先就要了解两者的基本概念与性质. 1. 贪心算法 基本思想:贪心算法并不从整体最优上加以考虑,它所做的选择只是在某种意义上的局部最优解. 基本要素:最优子结构性质和贪心选择性质. ...

最新文章

  1. linux停止客户端,linux – 从客户端打印motd停止ssh登录?
  2. MongoDB基础命令
  3. Microsoft宣布将停止支持多个 .NET Framework版本
  4. 小程序用户拒绝授权解决方法
  5. 串口与modem流量控制大全(2)
  6. eclipse插件开发(三) 简易4页签编辑器(源码 | 设计 | JS | CSS)配色修复JS多行注释问题
  7. IPTV码流分析指标
  8. 一个winform中多线程的例子
  9. go下载指定版本的依赖包
  10. 微信卡券开发具体的步骤,不会踩坑
  11. matlab仿真放入直流电源,用Matlab/Simulink软件包建模电容滤波直流电源
  12. Python制作经典坦克大战小游戏
  13. windows xp 提示系统是盗版图标右下角有个五角星图标
  14. L1-5 不变初心数 (15 分)(C/C++)
  15. 组合Combination 分布数组计算
  16. 思维导图 - 学习/实践
  17. SQL Server 安全认证知识【1】
  18. 用计算机设计购物小票,商友星云系统软件票据和条码标签设计和打印
  19. 用python实现域名资产监控
  20. 织梦首页被快照挟持、被串改、被挂马、被入侵后解决办法

热门文章

  1. 信息学奥赛之数学一本通_部分地区中考加分,又一批中学公布中考认可信息学特长生!...
  2. ImportError: cannot import name 'pyopenpose' from 'openpose'错误解决方法
  3. mysql odbc.ini_ODBC连接mysql
  4. 进程控制(二)与linux下的自有服务
  5. 1698 -Access denied for user 'root@xxxx'
  6. mysql远程连接错误10038--navicat for mysql (10038)
  7. 【PHP】月末・月初の出力方法
  8. 如何查看现有项目的struts和hibernate和spring版本
  9. JQuery合并表格单元格
  10. WebScoket 规范 + WebSocket 协议