动态规划(1)

常见的动态规划类型:

线性模型

区间DP

背包DP

数位DP

状态压缩DP

树状DP

常见的DP优化方法

滚动数组优化

矩阵乘法优化

斜率优化

四边形不等式优化

决策单调性优化

数据结构优化

动态规划基本概念

1.阶段和阶段变量:

2.状态

3.决策

4.策略

5.状态转移方程

例:从n个数取出k个数,使得他们的和最大

一般我们可能用排序做,为了讲解动态规划,我们设计一个状态f[i][j],

f[i][j]表示现在考虑到了第i个数,且选出了j个数

阶段的划分:i表示考虑了第1到第i个数

状态:j,在第i个阶段可以取的j为0<=j<=i

决策:在考虑第i个数时,选或者不选

策略:选出的数尽量大

状态转移方程:f[i][j]表示已经考虑第i个数,且找到了最大和,对于f[i][j],如果取a[i],那么最大价值变为a[i]+f[i-1][j-1];如果不取那个数,最大和为f[i-1][j]

所以f[i][j]=max{f[i-1][j],f[i-1][j-1]+a[i]}

例:从n个数里找出最长上升子序列(12534的最长上升子序列为1234)

f[i][j]表示目前考虑到了第i个数,最序列里最后一个数是j的最长上升子序列长度

状态转移方程:当取a[i]时:f[i][a[i]]=max{f[i-1][j]|j<=a[i]}+1

                        不取a[i]时:f[i][j]=f[i-1][j]

动态规划的性质:

怎么样的多阶段决策问题才可以用动态规划的方法来求解呢?

必须满足两个条件:最优化原理;无后效性原则

最优化原理:作为整个过程的最优策略,具有:无论过去的状态和策略如何,对前面的策略形成的状态而言,剩下的所有决策必须构成最优

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值