动态规划:什么是动态规划?
一、什么是动态规划?
- 动态规划(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)、贪心、回溯、分治算法的联系?
划分为2类:贪心、回溯、动态规划可以归为一类,而分治单独可以作为一类
回溯算法是个“万金油”。基本上能用的动态规划、贪心解决的问题,都可以用回溯算法解决。回溯算法相当于穷举搜索。
动态规划:什么是动态规划?相关推荐
- 《强化学习与最优控制》学习笔记(一):确定性动态规划和随机性动态规划
写在前面的 这本书的作者是Dimitri Panteli Bertsekas教授,1942年出生于希腊雅典,美国工程院院士,麻省理工大学电子工程及计算机科学教授.Bertsekas教授因其在算法优化与 ...
- 动态规划-03-线性动态规划
一.简介 动态规划主要任务,确定状态方程(fn 和 fn-1.fn-2),和边界条件(n=1,2),联想高中递推问题. 线性动态规划的主要特点是状态的推导是按照问题规模 i 从小到大依次推过去的,较大 ...
- 【动态规划】线性动态规划
吐槽:动态规划这个东西,只要推不出状态转移方程,一切都白搭 基础知识 一. 动态规划 动态规划中最重要的三个概念:最优子结构,重复子问题,无后效性. 最优子结构:如果问题的最优解所包含的子问题的解也是 ...
- 【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )
文章目录 一.动态规划场景 二.动态规划分类 1.坐标型动态规划 2.前缀划分型动态规划 3.前缀匹配型动态规划 4.区间型动态规划 5.背包型动态规划 一.动态规划场景 动态规划 动态规划使用场景 ...
- 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
// 利用动态规划解决0-1背包问题 using System; using System.Collections.Generic; using System.Linq; using System.T ...
- python动态规划图解_动态规划案例之python实现(一)
假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: 2 解释: 有两 ...
- 【动态规划1】动态规划的引入(今天刷洛谷了嘛)
注: P4017 最大食物链计数 因为现在还不会拓扑排序,所以暂且放到以后去解决! P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles #include&l ...
- 动态规划java LCS_动态规划递归求解LCS长度 | 学步园
这个问题的叙述太多了,就不重复了.这里我只是球出了LCS的长度,事实上,长度还是非常有用的,如判断两个字符串相似程度.主要是想说明的是,利用递归来求解.非常方便.今天下午了试了3个题,一个回文数,一个 ...
- 钢条分割 动态规划java_【动态规划】初识,钢条切割问题
正文之前其实动态规划老早之前就看过, 但是可惜的是印象不深,到今天彻底忘得差不多了,这两天看<算法导论>终于让我啃下了二叉搜索树和红黑树两个家伙,虽然还未曾熟练于胸,但是基本能用了...现 ...
- java动态规划解法_动态规划通用解法总结(示例代码)
背景:leetcode刷题遇到动态规划的题目,做不出来时看别人的code,也可以理解,但还是没有找到create solution的技巧,单纯的comprehend and remeber,直到遇到了 ...
最新文章
- 信息安全系统设计基础第十一周学习总结
- Android多线程之ArrayBlockingQueue源码解析
- 第一个VueJs入门页面
- 帝国理工大学2021-22电气与电子工程系应用机器学习硕士课程大纲
- LIST_VIEW_和LVITEM用法
- WebBrowser加载完毕后再往下执行
- 添用户报错:useradd:警告:此主目录已经存在
- git基础-远程仓库的使用
- 2015陕西 并查集
- asp.net:验证控件中ValidationExpression的写法
- 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别
- Windows消息目录-消息大全
- 《数学之美》—余弦定理和新闻的分类
- Mysql 计划任务
- java播放加密后的wav文件,使用Java实时同时播放WAV文件
- grads插值_利用grads描述文件中的pdef做插值的实用方法,转模式的同学看过来~~...
- Android使用adb截屏
- 最牛训犬师,专治拆家打架咬人,20多年搞定2000多条狗
- 二叉树遍历 递归/非递归/morris
- 笔记本电脑重装win7/win10系统教程