目录
- 四边形不等式与决策单调
- 四边形不等式
- 一维线性DP的优化
- 二维区间递推优化
四边形不等式与决策单调
四边形不等式
定义
存在二元函数\(w(x,y)\) ,其定义域为\(I\),
若对于任意\(a,b,c,d\in I且a≤b≤c≤d\),\(w(a,d)+w(b,c)≥w(a,c)+w(b,d)\)恒成立
则称\(w\)满足四边形不等式。
判定定理
若对于任意\(a,b\in I且a<b\),\(w(a,b+1)+w(a+1,b)≥w(a,b)+w(a+1,b+1)\)恒成立
则w满足四边形不等式。
可以感性理解一下吧:\(a<b\iff a<a+1≤b<b+1\),只有等号问题并不影响。
一维线性DP的优化
转移模型
\[
f[i]=\min_{0≤j<i}\{f[j]+w(j,i)\},w满足四边形不等式
\]
证明:
设k,k′为\(f[i]\)的决策点并满足条件\(0≤k′<k<i<i′\)′不难得知
\(f[i]=f[k]+w(k,i)≤f[k′]+w(k′,i)\)
由四边形不等式得知
\(w(k′,i′)+w(k,i)≥w(k′,i)+w(k,i′)\)
两式相加有
\(f[k]+w(k,i′)≤f[k′]+w(k′,i′)\)
于是易知决策点k比k′更优,故得证。
实现
当前转移\(f[i]\),单调队列维护三元组\((l,r,p)\),表示l~r的最优决策点目前为p。
- 掐头,若\(r=i-1\),弹出,否则\(l=i\)
- 取队首计算
- 去尾,
如果决策i在l处都比p优秀,则直接弹出p。
如果决策i在r处都不如p优秀,则直接插入p。
否则二分查找l~r中第一个可以让决策点i更优秀的位置
更改队尾r,把新的三元组代表i的决策加入队列(注意有可能不能加入)
?
可以实现\(O(n^2)\to O(nlog_n)\) 。
二维区间递推优化
转移模型
\[
f[l][r]=\min_{l≤k<r}\{f[l][k]+f[k+1][r]+w[l][r]\}\f[i][j]=min_{0≤k<i}\{f[i-1][k]+w(k+1,j)\}\……
\]
定理:
没有证明。。
一:若对于上式中的w有
? ①w满足四边形不等式
? ②对于任意的\(a,b,c,d\in I且a≤b≤c≤d\) ,w满足\(w(a,d)≥w(b,c)\)
? 则f满足四边形不等式。
二:若f满足四边形不等式,则:
? 对于任意决策\(i<j\),都有下列二者之一:
\[
p[i,j-1]≤p[i,j]≤p[i+1,j]\ (转移中i倒序枚举,j正序枚举)\p[i-1,j]≤p[i,j]≤p[i,j+1j]\ (转移中i正序枚举,j倒序枚举)\p为各个状态的最优决策
\]
实现
一般而言,都是直接把第三重循环的边界依情况改成上面的二式之一即可。
可以实现\(O(n^3)\to O(n^2)\) 。
对于此类优化,一般先大胆猜想,然后打表验证!!
原文地址:https://www.cnblogs.com/Bhllx/p/11006308.html