四边形不等式
设 w(x,y) 是定义在 Z 上的二元函数。若对于定义域上的任意 a,b,c,d(a≤b≤c≤d),都有 w(a,c)+w(b,d)≤w(a,d)+w(b,c) 成立,则函数 w 满足四边形不等式。
定理
设 w(x,y) 是定义在 Z 上的二元函数。若对于定义域上的任意 a,b(a<b),都有 w(a,b)+w(a+1,b+1)≤w(a,b+1)+w(a+1,b) 成立,则函数 w 满足四边形不等式。
证明
对于 a<c,有 w(a,c)+w(a+1,c+1)≤w(a,c+1)+w(a+1,c)
对于 a+1<c,有 w(a+1,c)+w(a+2,c+1)≤w(a+1,c+1)+w(a+2,c)
两式相加,得到 w(a,c)+w(a+2,c+1)≤w(a,c+1)+w(a+2,c)
根据一式和三式类推,对任意的 a≤b≤c,有 w(a,c)+w(b,c+1)≤w(a,c+1)+w(b,c)
同理,对任意的 a≤b≤c≤d,有 w(a,c)+w(b,d)≤w(a,d)+w(b,c)
一维线性DP的四边形不等式优化
对于形如 f[i]=min0≤j<i{f[j]+w(j,i)} 的状态转移方程,记 p[i] 为 f[i] 取到最小值时的 j 值,即 p[i] 是 f[i] 的最优决策。若 p 在 [1,N] 上非严格单调递增,则 f 具有决策单调性。
定理
在状态转移方程 f[i]=min0≤j<i{f[j]+w(j,i)} 中,若函数 w 满足四边形不等式,则 f 具有决策单调性。
证明
∀i∈[1,N],∀j∈[0,p[i]−1],根据 p[i] 的最优性,有 f[p[i]]+w(p[i],i)≤f[j]+w(j,i)
∀i′∈[i+1,N],因为 w 满足四边形不等式,有 w(j,i)+w(p[i],i′)≤w(j,i′)+w(p[i],i)
两式相加,得到 f[p[i]]+w(p[i],i′)≤f[j]+w(j,i′)
这说明以 p[i] 作为 f[i′] 的决策,比以任意 j<p[i] 作为 f[i′] 的决策更优,因此 f[i′] 的最优决策一定满足 p[i′]≥p[i]
所以 f 具有决策单调性
//待填
二维区间DP的四边形不等式优化
定理一
在状态转移方程 f[i][j]=mini≤k<j{f[i][k]+f[k+1][j]+w(i,j)} 中(特别地,f[i][i]=w(i,i)=0),如果 w 满足四边形不等式,且对于任意的 a≤b≤c≤d,有 w(a,d)≥w(b,c),那么 f 也满足四边形不等式。
证明*
当 i+1=j 时,f[i][j+1]+f[i+1][j]=f[i][i+2]
若 f[i][i+2] 的最优决策是 i ,则 f[i][i+2]=f[i][i]+f[i+1][i+2]+w(i,i+2)=w(i+1,i+2)+w(i,i+2)≥w(i+1,i+2)+w(i,i+1)=f[i+1][i+2]+f[i][i+1]=f[i+1][j+1]+f[i][j]
若 f[i][i+2] 的最优决策是 i+1 ,则 f[i][i+2]=f[i][i+1]+f[i+2][i+2]+w(i,i+2)=w(i,i+1)+w(i,i+2)≥w(i,i+1)+w(i+1,i+2)=f[i][i+1]+f[i+1][i+2]=f[i][j]+f[i+1][j+2]
故当 j−i=1 时,四边形不等式对 f[i][j] 成立
然后用数学归纳法,假设当 j−i<k 时,f 满足四边形不等式;考虑 j−i=k 的情况,设 f[i][j+i] 的最优决策为 x,f[i+1][j] 的最优决策为 y;不妨设 i+1≤x≤y
根据 x 和 y 的最优性,有 f[i][j+1]+f[i+1][j]=f[i][x]+f[x+i][j+1]+w(i,j+1)+f[i+1][y]+f[y+1][j]+w(i+1,j)
对于 f[i][j] 和 f[i+1][j+1],x 和 y 不一定最优,故 f[i][j]+f[i+1][j+1]≤f[i][x]+f[x+i][j]+w(i,j)+f[i+1][y]+f[y+1][j+1]+w(i+1,j+1)
因为 w 满足四边形不等式,所以 w(i,j)+w(i+1,j+1)≤w(i,j+1)+w(i+1,j)
根据归纳假设,有 f[x+1][j]+f[y+1][j+1]≤f[x+1][j+1]+f[y+1][j]
结合前面四个不等式,得到 f[i][j]+f[i+1][j+1]≤f[i][j+1]+f[i+1][j]
定理二
在状态转移方程 f[i][j]=mini≤k<j{f[i][k]+f[k+1][j]+w(i,j)} 中(特别地,f[i][i]=w(i,i)=0),记 p[i][j] 为 f[i][j] 取到最小值时的 k 值(最优决策)。若 f 满足四边形不等式,那么对于任意 i<j,有 p[i][j−1]≤p[i][j]≤p[i+1][j](决策单调性)。
证明
记 p 为 p[i][j],对于任意的 i<k≤p,因为 f 满足四边形不等式 f[i][k]+f[i+1][p]≤f[i][p]+f[i+1][k]
移项可得 f[i+1][p]−f[i+1][k]≤f[i][p]−f[i][k]
根据 p 的最优性,有 f[i][p]+f[p+1][j]≤f[i][k]+f[k+1][j]
因此 f[i+1][p]+f[p+1][j]+w(i+1,j)−f[i+1][k]−f[k+1][j]−w(i+1,j)=(f[i+1][p]−f[i+1][k])+(f[p+1][j]−f[k+1][j])≤(f[i][p]−f[i][k])+(f[p+1][j]−f[k+1][j])=(f[i][p]+f[p+1][j])−(f[i][k]+f[k+1][j])≤0
所以对于 f[i+1][j],p 比任意的 k≤p 更优,因此 p[i+1][j]≥p[i][j]
同理可证 p[i][j−1]≤p[i][j]
//待填
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】