前言
DP的平行四边形优化,是一个难点,它非常难懂(关于平行四变形的理论基础及证明,有兴趣的同学可以看看这个大佬的博客,虽然我从来不会无聊到看证明),而且我在上课时并没有听太懂,都是看了别人的题解才看懂的。那么,要怎么才能学会平行四边形等式呢,先看看下面这个理论知识,为我们之后的具体优化提供基础。
平行四边形优化是什么
在日常的做动态规划的题时,我们经常会遇见以下这个状态转移方程(或类似),这里用合并石子这道题的转移方程做例子。
(暂且不要管这个方程是什么意思,待会儿会详细讲。)
首先我们要了解什么样的转移方程可以用平行四边形优化,也就是它的定义。
对于( 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]
至此。平行四边形优化 的 理论铺垫到此结束。