一、什么是动态规划?

  • 动态规划(Dynamic Programming,简称Dp) 是一种算法思想: 将原(大)问题化解成子问题,再根据子问题的解得出原问题的解;

1.1 、什么是最优子结构和重复子问题?

1.2、什么是状态转移方程,跟最优子结构的关系?

状态转移方程:是一种组合关系,描述了一种原问题与子问题的组合关系

PS: 看着描述和最优子结构问题的描述一样,其实就是一样,一个是文字描述,一个数学表达
例如:f(n) = f(n - 1) + f(n - 2)f(n)=f(n−1)+f(n−2)

1.3、什么是动态规划的核心?

核心:找最优子结构,也就是找状态转移方程

1.4、什么是动态规划问题的难点?

  • 如何定义 f(n): 定义原问题的解
  • 如何定义 状态转移方程: 如何通过 f(1)f(1), f(2)f(2), … f(n - 1)f(n−1) 推导出 f(n)f(n),即状态转移方程

1.5、动态规划的两种解决思路

  • 自顶向下:递归方法+记忆化搜索
  • 自底向上:从最小的问题规模入手,然后不断地增加问题规模,直到所要求的问题规模为止。

二、动态规划(dp)、贪心、回溯、分治算法的联系?

  1. 划分为2类:贪心、回溯、动态规划可以归为一类,而分治单独可以作为一类

  2. 回溯算法是个“万金油”。基本上能用的动态规划、贪心解决的问题,都可以用回溯算法解决。回溯算法相当于穷举搜索。

动态规划:什么是动态规划?相关推荐

  1. 《强化学习与最优控制》学习笔记(一):确定性动态规划和随机性动态规划

    写在前面的 这本书的作者是Dimitri Panteli Bertsekas教授,1942年出生于希腊雅典,美国工程院院士,麻省理工大学电子工程及计算机科学教授.Bertsekas教授因其在算法优化与 ...

  2. 动态规划-03-线性动态规划

    一.简介 动态规划主要任务,确定状态方程(fn 和 fn-1.fn-2),和边界条件(n=1,2),联想高中递推问题. 线性动态规划的主要特点是状态的推导是按照问题规模 i 从小到大依次推过去的,较大 ...

  3. 【动态规划】线性动态规划

    吐槽:动态规划这个东西,只要推不出状态转移方程,一切都白搭 基础知识 一. 动态规划 动态规划中最重要的三个概念:最优子结构,重复子问题,无后效性. 最优子结构:如果问题的最优解所包含的子问题的解也是 ...

  4. 【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )

    文章目录 一.动态规划场景 二.动态规划分类 1.坐标型动态规划 2.前缀划分型动态规划 3.前缀匹配型动态规划 4.区间型动态规划 5.背包型动态规划 一.动态规划场景 动态规划 动态规划使用场景 ...

  5. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析

    // 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...

  6. python动态规划图解_动态规划案例之python实现(一)

    假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...

  7. 【动态规划1】动态规划的引入(今天刷洛谷了嘛)

    注: P4017 最大食物链计数 因为现在还不会拓扑排序,所以暂且放到以后去解决! P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles #include&l ...

  8. 动态规划java LCS_动态规划递归求解LCS长度 | 学步园

    这个问题的叙述太多了,就不重复了.这里我只是球出了LCS的长度,事实上,长度还是非常有用的,如判断两个字符串相似程度.主要是想说明的是,利用递归来求解.非常方便.今天下午了试了3个题,一个回文数,一个 ...

  9. 钢条分割 动态规划java_【动态规划】初识,钢条切割问题

    正文之前其实动态规划老早之前就看过, 但是可惜的是印象不深,到今天彻底忘得差不多了,这两天看<算法导论>终于让我啃下了二叉搜索树和红黑树两个家伙,虽然还未曾熟练于胸,但是基本能用了...现 ...

  10. java动态规划解法_动态规划通用解法总结(示例代码)

    背景:leetcode刷题遇到动态规划的题目,做不出来时看别人的code,也可以理解,但还是没有找到create solution的技巧,单纯的comprehend and remeber,直到遇到了 ...

最新文章

  1. 信息安全系统设计基础第十一周学习总结
  2. Android多线程之ArrayBlockingQueue源码解析
  3. 第一个VueJs入门页面
  4. 帝国理工大学2021-22电气与电子工程系应用机器学习硕士课程大纲
  5. LIST_VIEW_和LVITEM用法
  6. WebBrowser加载完毕后再往下执行
  7. 添用户报错:useradd:警告:此主目录已经存在
  8. git基础-远程仓库的使用
  9. 2015陕西 并查集
  10. asp.net:验证控件中ValidationExpression的写法
  11. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
  12. Windows消息目录-消息大全
  13. 《数学之美》—余弦定理和新闻的分类
  14. Mysql 计划任务
  15. java播放加密后的wav文件,使用Java实时同时播放WAV文件
  16. grads插值_利用grads描述文件中的pdef做插值的实用方法,转模式的同学看过来~~...
  17. Android使用adb截屏
  18. 最牛训犬师,专治拆家打架咬人,20多年搞定2000多条狗
  19. 二叉树遍历 递归/非递归/morris
  20. 笔记本电脑重装win7/win10系统教程

热门文章

  1. 英酷词典 使用方法 必知必会
  2. 无权图的单源最短路径
  3. NetSuite Decode函数
  4. 多套知识付费平台源码亲测在用+数据库+一键更新?功能
  5. 【HGE引擎】源码解析——常用公共函数(二)
  6. “ IMY”是什么意思,如何使用?
  7. latex解决存在/任意/非符号如何打
  8. python inplace
  9. echo回音消除方案
  10. java 排班日历_快速简化排班(智能排班)-日历排班