当前位置:网站首页>0 8 动态规划(Dynamic Programming)
0 8 动态规划(Dynamic Programming)
2022-07-29 06:45:00 【51CTO】
动态规划,简称DP
是求解最优化问题的一种常用策略
通常的使用套路(一步一步优化)
① 暴力递归(自顶向下,出现了重叠子问题)
② 记忆化搜索(自顶向下)
③ 递推(自底向上)
动态规划的常规步骤
动态规划中的“动态”可以理解为是“会变化的状态”
① 定义状态(状态是原问题、子问题的解)
* 比如定义 dp(i) 的含义
② 设置初始状态(边界)
* 比如设置 dp(0) 的值
③ 确定状态转移方程
* 比如确定 dp(i) 和 dp(i – 1) 的关系
动态规划的一些相关概念
来自维基百科的解释
Dynamic Programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems, solving each of those subproblems just once, and storing their solutions.
① 将复杂的原问题拆解成若干个简单的子问题
② 每个子问题仅仅解决1次,并保存它们的解
③ 最后推导出原问题的解
可以用动态规划来解决的问题,通常具备2个特点
最优子结构(最优化原理):通过求解子问题的最优解,可以获得原问题的最优解
无后效性
* 某阶段的状态一旦确定,则此后过程的演变不再受此前各状态及决策的影响(未来与过去无关)
* 在推导后面阶段的状态时,只关心前面阶段的具体状态值,不关心这个状态是怎么一步步推导出来的
详细应用查看数据结构学习资料pdf
边栏推荐
- Kubernetes (V) -- deploy kubernetes dashboard
- 接口测试实战项目03:执行测试用例
- [C language brush leetcode] 2332. The latest time to get on the bus (m)
- 使用VsCode配置MySQL实现连接、查询、等功能
- SSH password free login - two virtual machines establish password free channel two-way trust
- Flink实时仓库-DWD层(流量域)模板代码
- 【OpenGL】着色器(Shader)的使用
- Why does ETL often become ELT or even let?
- 个人博客系统(附源码)
- [solution] error: lib/bridge_ generated. dart:837:9: Error: The parameter ‘ptr‘ of the method ‘FlutterRustB
猜你喜欢

Operator3-设计一个operator

ETL为什么经常变成ELT甚至LET?

Remote invocation of microservices

Thoroughly understand kubernetes scheduling framework and plug-ins

MySQL 使用客户端以及SELECT 方式查看 BLOB 类型字段内容总结

要不要满足客户所有的需求

2022-07-28:以下go语言代码输出什么?A:AA;B:AB;C:BA;D:BB。 package main import ( “fmt“ ) func main() { f
![[Charles' daily problems] when you open Charles, you can't use nails](/img/ef/037fc416175d4de769ac6484cb53df.png)
[Charles' daily problems] when you open Charles, you can't use nails

以太网接口介绍

记 - 踩坑-实时数仓开发 - doris/pg/flink
随机推荐
1172. 餐盘栈 有序列表+栈
Homebrew brew update doesn't respond for a long time (or stuck in updating homebrew...)
Student status management system based on C language design
[redis] redis development specifications and precautions
Unity sends a post request to the golang server for parsing and returning
【C语言刷LeetCode】1054. 距离相等的条形码(M)
数组的子集不能累加出的最小正数
Nodejs安装教程
Flink实时仓库-DWD层(下单-多张表实现join操作)模板代码
[C language brush leetcode] 2332. The latest time to get on the bus (m)
ETL为什么经常变成ELT甚至LET?
MySQL advanced (Advanced) SQL statement (I)
pytorch的技巧记录
20-40K| 梅卡曼德3D视觉算法/软件/产品经理招聘
Unity exploration plot access design analysis & process + code specific implementation
如何使用gs_expansion扩展节点
vue-router路由缓存
Some tips of vim text editor
[solution] error: lib/bridge_ generated. dart:837:9: Error: The parameter ‘ptr‘ of the method ‘FlutterRustB
Thread synchronization - producers and consumers, tortoise and rabbit race, dual thread printing