C++剑指offer:四边形不等式优化动态规划(一)——区间DP 线性的合并石子的优化合并石子的变形【HDU-3506】MonkeyParty的题解

前言

DP的平行四边形优化,是一个难点,它非常难懂(关于平行四变形的理论基础及证明,有兴趣的同学可以看看这个大佬的博客虽然我从来不会无聊到看证明),而且我在上课时并没有听太懂,都是看了别人的题解才看懂的。那么,要怎么才能学会平行四边形等式呢,先看看下面这个理论知识,为我们之后的具体优化提供基础。


平行四边形优化是什么

在日常的做动态规划的题时,我们经常会遇见以下这个状态转移方程(或类似),这里用合并石子这道题的转移方程做例子。

f[i][j]=max(f[i][k]+f[k+1][j]+w[i][j])

(暂且不要管这个方程是什么意思,待会儿会详细讲。)

首先我们要了解什么样的转移方程可以用平行四边形优化,也就是它的定义。

对于( a < b <= c< d )

如果有f[a][c]+f[b][d]<=f[b][c]+f[a][d],则这个转移方程就可以用平行四边形优化(这个f数组不是上述转移方程提到的f数组,他即可以是一个花费(上述转移方程的w[i][j]),也可以是DP数组(也就是状态转移方程的f数组)。可以理解为相互两个区间交叉)。这就是平行四边形优化的定义,通过这个定义,我们可以得出以下两个性质:

1、如果上述状态转移方程的w[i][j]同时满足区间包含单调性和四边形不等式性质,那么数组f也满足四边形不等式性质 
2.定义s[i][j]表示f[i][j] 取得最优值(上述状态转移方程的k)时对应的下标(即 i≤k≤j 时,k 处的 f[i][j] 值最大),则 s[i][j]=k此时有如下定理 :s[i][j]≤s[i][j+1]≤s[i+1][j+1]

至此。平行四边形优化 的 理论铺垫到此结束。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值