让菜鸡讲一讲四边形不等式优化

众所周知四边形不等式优化是应用在区间DP里面的我也不知道有什么其它地方可以用

那么我们有时候在做区间DP的时候可以遇见这样的转移方程

\[f(i,j)=min(f(i,k-1),f(k,j))+w(i,j),i\leq k\leq j \]

f(i,j)表示的是在(i,j)上的最优值,而w(i,j)是转移所需额外的代价

众所周知这玩意儿复杂度是\(O(n^3)\)

看起来很不爽

那么现在我们可以用四边形不等式优化这个技能来把它优化一下

不过这个技能的使用是有条件的

四边形不等式优化条件

区间包含的单调性

额,其实就是对于每个\(a\leq b < c\leq d\)

满足\(w(a,d)\geq w(b,c)\)

就是某个区间的w不能小于它的子区间的w

四边形不等式

对于每个\(a\leq b < c\leq d\)

也满足\(w(a,c)+w(b,d)\leq w(a,d)+w(b,c)\)

      v-------v
  v-----------------v
oooooooooooooooooooooo
  ^-----------^
      ^-------------^

就是上面2个w加起来不能小于下面2个w

在满足了条件后

于是w函数满足区间包含的单调性四边形不等式

一个定理可以使用啦:f函数也相应的满足了四边形不等式

假设\(f(i,j)=min(f(i,k-1),f(k,j))+w(i,j)\)\(k=loc(i,j)\)取到最小

因为f函数也满足了四边形不等式

所以loc函数是单调的,即\(loc(i,j)\leq loc(i,j+1)\leq loc(i+1,j+1)\)

那么有一个强大的定理又可以使用了:

\[f(i,j)=min(f(i,k-1),f(k,j))+w(i,j),loc(i,j-1)\leq k\leq loc(i+1,j) \]

至于有多强大?你可以发现这个转移的复杂度变成了\(O(n^2)\)

posted @ 2018-02-05 08:59  iot;  阅读(212)  评论(0编辑  收藏  举报
知识共享许可协议
年轻人,你需要更多的知识