动态规划之四边形不等式优化

 给出伪代码:(可以看出时间复杂度为O(n^3))

1 for(int len=1;len<=n;len++){///len为区间长度
2     for(int l=1;l<=n-len+1;l++){
3         int r=l+len-1;
4         for(int k=l;k<r;k++){
5             m[l][r]=min(m[l][r],m[l][k]+m[k+1][r]+w[l][r]);
6         }
7     }
8 }

以下介绍两个名词:区间包含的单调性:如果对于i≤i'< j≤j',有w(i',j)≤w(i,j'),那么说明w具有区间包含的单调性。

        四边形不等式:如果对于i≤i'< j≤j',有w(i,j)+w(i',j')≤w(i',j)+w(i,j'),我们称函数w满足四边形不等式。

附图理解四边形不等式:

 蓝线长和<=红线长和

以下介绍两个定理:定理一:如果上述的w函数同时满足区间包含单调性和四边形不等式性质,那么函数m也满足四边形不等式性质。

 定理二:

结论:

 时间复杂度变为O(n^2)

原文地址:https://www.cnblogs.com/wsy107316/p/12250753.html