zoukankan      html  css  js  c++  java
  • 四边形不等式小结

    前言

    我真的是愚不可及,为什么学这个东西,我本身又不强,而这个东西不但特别难,而且还特别冷门,我真的是白瞎了这么多时间了,现在我把我的辛苦展现出来,给各位强者铺个道路。

    四边形不等式

    (以下所有的自变量的讨论均在整数范围内,设w(a,b)为关于a,b的二元函数)

    定义

    若二元函数满足当(aleq bleq cleq d,)(w(a,d)+w(b,c)geq w(a,c)+w(b,d)),则称二元函数满足四变形不等式。

    四边形不等式判定定理

    (a< b,w(a,b+1)+w(a+1,b)geq w(a,b)+w(a+1,b+1)),则二元函数w满足四变形不等式。

    证明:

    对于(a<c),一定有

    (w(a,c+1)+w(a+1,c)geq w(a,c)+w(a+1,c+1))

    假设(a+k<c),会有

    (w(a+k,c+1)+w(a+k+1,c)geq w(a+k,c)+w(a+k+1,c+1))

    同理(a+k+1<c),有

    (w(a+k+1,c+1)+w(a+k+2,c)geq w(a+k+1,c)+w(a+k+2,c+1))

    两式相加有

    (w(a+k,c+1)+w(a+k+2,c)geq w(a+k,c)+w(a+k+2,c+1))

    于是由数学归纳法,加之a,b可以取等号,有

    (aleq bleq c,w(a,c+1)+w(b,c)geq w(a,c)+w(b,c+1))

    同理,对于

    (aleq b< c+k),有

    (w(a,c+k+1)+w(b,c+k)geq w(a,c+k)+w(b,c+k+1))

    至于(aleq b< c+k+1)

    (w(a,c+k+2)+w(b,c+k+1)geq w(a,c+k+1)+w(b,c+k+2))

    两式相加有

    (w(a,c+k+2)+w(b,c+k)leq w(a,c+k)+w(b,c+k+2))

    由数学归纳法,加之c,d可以取等号,有

    (aleq bleq cleq d,w(a,d)+w(b,c)leq w(a,c)+w(b,d))

    得证

    推论:

    1. 对于(b-aleq l)满足判定定理要求,那么对于(aleq bleq cleq d),当(d-aleq l+1)时满足四边形不等式,根据证明来证明。
    2. 判定定理的逆定理:满足四边形不等式的二元函数满足(a<b,w(a+1,b)+w(a,b+1)geq w(a,b)+w(a+1,b+1)),有兴趣可以自行证明。

    一维线性递推优化

    优化式

    (f_i=min_{0leq j<i}{f_j+w(j,i)})

    性质

    一维线性递推决策递增定理

    定义

    方程(f_i=min_{0leq j<i}{f_j+w(j,i)})(w)满足四边形不等式,则决策点单调递增

    证明

    (k,k')(f_i)的决策点并满足条件(0leq k'<k<i<i'),其中k为i的最优决策点

    不难得知

    (f_i=f_k+w(k,i)leq f_{k'}+w(k',i))

    由四边形不等式得知

    (w(k',i')+w(k,i)geq w(k',i)+w(k,i'))

    两式相加有

    (f_k+w(k,i')leq f_{k'}+w(k',i'))

    于是易知决策点(k)(k')更优,故得证。

    推论:如果一个决策点a比它之前的一个决策点b优秀,则决策点b不可能成为以后的最优决策点(二分依据)。

    实现

    目前要求(f_i)

    1. 单调队列维护三元组((l,r,p)),表示(f_{l-r})的最优决策点目前最优是p
    2. 队头是否合法,即(l< r),否则弹出
    3. 取队头l++,计算(f_l)最优解
    4. 从队尾向前枚举,如果计算(f_k)(k为队尾的l)的已有决策点不如现在的决策点l优秀,弹出
    5. 否则二分查找(l-r)中第一个可以让决策点i更优秀的位置
    6. 更改队尾r,把新的三元组代表i的决策加入队列(注意,如果不能加入,一定要剔除)

    二维递推优化

    优化式

    1. (f[l][r]=min_{lleq k<r}{f[l][k]+f[k+1][r]+w[l][r]})(区间递推)
    2. (f[i][j]=min_{i-1leq k<j}{f[i-1][k]+w[k+1][j]})(序列划分)

    包含单调

    如果二元函数w满足(aleq bleq cleq d,w(a,d)geq w(b,c)),则称二元函数w满足包含单调。

    二维递推判定定理

    定义

    对于上述优化式,如果满足

    1. 二元函数w满足四边形不等式
    2. 二元函数w满足包含单调
    3. 边界(w(i,i)=f[i][i]=0)

    则f满足四边形不等式。

    证明

    优化式1

    对于(j-i=1)而言,显然有(f[i][j]=f[i][i]+f[j][j]+w[i][j])

    根据判定定理来证明,(i<j),要证明(f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])

    (f[i][j+1]+f[i+1][j]=f[i][j+1])


    • (f[i][j+1])最优决策点在i

    那么有(f[i][j+1]=f[i][i]+f[i+1][j+1]+w[i][j+1]=f[i+1][j+1]+w[i][j+1]geq w[i][j]+f[i+1][j+1])

    (=f[i][j]+f[i+1][j+1]),即(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])

    • (f[i][j+1])最优决策点在i+1

    那么有(f[i][j+1]=f[i][i+1]+f[i+1][j]+w[i][j+1]=f[i][j]+w[i][j+1]geq f[i][j]+w[i+1][j+1]=)

    (f[i][j]+f[i+1][j+1]),即(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])


    总上所素,j-i=1时满足四边形不等式

    至于(j-i=l),假设(j-i<l)满足四边形不等式,则要证

    (i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])

    不妨设(f[i][j+1])最优决策点为x,(f[i+1][j])最优决策点为y


    • (xleq y)

    (f[i][j+1]+f[i+1][j]=f[i][x]+f[x+1][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]leq f[i][x]+f[x+1][j]+w[i][j]+f[i+1][y]+f[y+1][j+1]+w[i+1][j+1])

    显然我们有(i<j,w[i][j+1]+w[i+1][j]geq w[i][j]+w[i+1][j+1])

    显然(x+1leq y+1leq j<j+1),因此我们有

    (f[x+1][j+1]+f[y+1][j]geq f[x+1][j]+f[y+1][j+1])

    于是不难得知(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])

    • x>y

    同理

    (f[i][j+1]+f[i+1][j]=f[i][x]+f[x+1][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]leq f[i][y]+f[y+1][j]+w[i][j]+f[i+1][x]+f[x+1][j+1]+w[i+1][j+1])

    显然有(i<j,w[i][j+1]+w[i+1][j]geq w[i][j]+w[i+1][j+1])

    (i<i+1leq y<x,f[i][x]+f[i+1][y]geq f[i][y]+f[i+1][x])

    因此(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])


    总上所素,根据数学归纳法易知(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1]),又有四边形不等式判定定理容易知道,f满足四边形不等式。

    优化式2

    对于(j-i=0)

    现在需要证明(f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1]),

    即证(f[i][i+1]+f[i+1][i]geq f[i][i]+f[i+1][i+1])

    (f[i][i+1]+f[i+1][i]geq 0),不妨将非法决策定义为0,于是即证(f[i][i+1]geq 0),显然成立

    至于(j-i=l),假设(j-i<l)满足四边形不等式,那么要证

    (i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])

    (f[i][j+1])最优决策点为x,(f[i+1][j])最优决策点为y

    易知(f[i][j+1]+f[i+1][j]=f[i-1][x]+w[x+1][j+1]+f[i][y]+w[y+1][j])


    • (xleq yRightarrow i-1leq xleq y<j)

    显然(f[i][j]+f[i+1][j+1]leq f[i-1][x]+w[x+1][j]+f[i][y]+w[y+1][j+1])

    (x+1<y+1leq j<j+1,w[x+1][j+1]+w[y+1][j]geq w[x+1][j]+w[y+1][j+1])

    (i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])

    • (x> yRightarrow ileq y< xleq j)

    显然(f[i][j]+f[i+1][j+1]leq f[i-1][y]+w[y+1][j]+f[i][x]+w[x+1][j+1])

    (i-1<ileq y<x,f[i-1][x]+f[i][y]geq f[i-1][y]+f[i][x])

    (i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1])


    所以由数学归纳法(i<j,f[i][j+1]+f[i+1][j]geq f[i][j]+f[i+1][j+1]),结合四边形不等式判定定理,不难得知原命题成立。

    二维递推决策递增定理

    定义

    若上诉优化式满足判定定理,设(p[i][j])(f[i][j])的最优决策点,则有(p[l][r-1]leq p[l][r]leq p[l+1][r])

    证明

    优化式1

    • (p[l][r-1]leq p[l][r])

    设左式最优决策点(k),并设(lleq k'<k<r-1),所以我们有

    $f[l][r-1]=f[l][k]+f[k+1][r-1]+w[l][r-1]leq $

    (f[l][k']+f[k'+1][r-1]+w[l][r-1])

    (f[l][k]+f[k+1][r-1]leq f[l][k']+f[k'+1][r-1].....1)

    由四边形不等式有

    (l< k'+1<k+1leq r-1<r)

    (f[k'+1][r]+f[k+1][r-1]geq f[k'+1][r-1]+f[k+1][r].....2)

    1,2式相加,有

    (f[l][k]+f[k+1][r]leq f[l][k']+f[k'+1][r])

    (f[l][k]+f[k+1][r]+w[l][r]leq f[l][k']+f[k'+1][r]+w[l][r])

    所以易知决策点k比(k')优秀,得证

    • (p[l][r]leq p[l+1][r])

    设右式的最优决策点为(k),设(lleq k<k'<r)

    显然(l<l+1leq k<k',f[l][k']+f[l+1][k]geq f[l][k]+f[l+1][k'] ......1)

    (f[l+1][r]=f[l+1][k]+f[k+1][r]+w[l+1][r]leq f[l+1][k']+f[k'+1][r]+w[l+1][r])

    (f[l+1][k]+f[k+1][r]leq f[l+1][k']+f[k'+1][r] ......2)

    1式+2式我们有
    (f[l][k']+f[k'+1][r]geq f[l][k]+f[k+1][r]),即

    (f[l][k']+f[k'+1][r]+w[l][r]geq f[l][k]+f[k+1][r]+w[l][r])

    • 总上所素,有(p[l][r-1]leq p[l][r]leq p[l+1][r])

    优化式2

    • (p[l][r-1]leq p[l][r])

    (l-1leq k'<k=p[l][r-1]<r-1)

    易知(f[l][r-1]=f[l-1][k]+w[k+1][r-1]leq f[l-1][k']+w[k'+1][r-1])

    由四边形不等式有(k'+1<k+1leq r-1<r,w[k'+1][r-1]+w[k+1][r]leq w[k+1][r-1]+w[k'+1][r])

    两式相加(f[l-1][k]+w[k+1][r]leq f[l-1][k']+w[k'+1][r]),易知决策点k比(k')更优秀

    • (p[l][r]leq p[l+1][r])

    (lleq k=p[l+1][r]<k'<r),容易知道

    (f[l+1][r]=f[l][k]+w[k+1][r]leq f[l][k']+w[k'+1][r])

    由四边形不等式有(l-1<lleq k<k',f[l][k']+f[l-1][k]leq f[l][k]+f[l-1][k'])

    两式相加(f[l-1][k]+w[k+1][r]leq f[l-1][k']+w[k'+1][r]),容易知道决策点(k)(k')更优秀

    • 总上所素(p[l][r-1]leq p[l][r]leq p[l+1][r])

    时间复杂度

    根据二维递推决策递增定理,我们知道时间复杂度应该为(O(sum_{i=2}^nsum_{l=1}^{n-i+1}(p[l+1][l+i-1]-p[l][l+i-2]+1))=)
    (O(sum_{i=2}^n(p[2][i]+p[3][i+1]+...+p[n-i+2][n])-(p[1][i-1]+p[2][i]+...+p[n-i+1][n-1])+n-i+1)))
    (=O(sum_{i=2}^n(p[n-i+2][n]-p[1][i-1]+n-i+1))approx O(n^2))

    石子合并

    问题

    有n堆石子从左至右排成一排,第i堆石子重量(w[i]),每次可以选择相邻的两堆石子合并,新的石子重量为原来两堆之和,消耗体力值为新的石子的重量,询问最少消耗的体力之和。

    首先注意到这是区间问题,于是可以设(f[l][r])表示合并第l堆石子到第r堆石子消耗的最少体力值,于是有(f[l][r]=min_{k=l}^{r-1}{f[l][k]+f[k+1][r]+w[l][r]}),时间复杂度(O(n^3))

    考虑到区间递推可以四边形不等式优化,发现w满足四边形不等式,且取到等号,也满足包含递增关系,边界可以开为0,因此可以使用四边形不等式优化成(O(n^2))

    梳理:4大定理三个推论

    定理名称 式子 条件 结果
    四边形不等式判定定理(2个推论) (w(a,b+1)+w(a+1,b)geq w(a,b)+w(a+1,b+1)) a<b w满足四边形不等式
    一维线性递推决策递增定理(1个推论) (f_i=min_{j=0}^{i-1}{f_j+w(i,j)}) w满足四边形不等式 f的最优决策点单调递增
    二维递推判定定理 (egin{cases}f[l][r]=min_{k=l}^{r-1}{f[l][k]+f[k+1][r]+w[l][r]}\f[i][j]=min_{i-1leq k<j}{f[i-1][k]+w[k+1][j]}end{cases}) w满足四边形不等式,包含递增,(w[i][i]=f[i][i]=0) f满足四边形不等式
    二维递推决策递增定理 (egin{cases}f[l][r]=min_{k=l}^{r-1}{f[l][k]+f[k+1][r]+w[l][r]}\f[i][j]=min_{i-1leq k<j}{f[i-1][k]+w[k+1][j]}end{cases}) 优化式满足判定定理 最优决策点(p[l][r-1]leq p[l][r] leq p[l+1][r])

    式子积累

    1. (f(x)=|x+c|^p-|x|^p)单调递增,[NOI2009]诗人小G

    2. (w(l,r))表示序列l,r中元素到其中位数的距离之和的最小值,满足四边形不等式和包含递增,Post Office

    3. (w(l,r)=s_r-s_l)(s表示序列前缀和),满足四边形不等式且取到等号和包含递增。(石子合并)

    例题

    神仙

    有n座山,第i座山坐标(x_i),定义(A[i][j])表示在前j座山修i间房子每座山到房子的距离之和的最小值,现在有两个神仙玩起了石子合并,有n堆石子,第i堆石子质量(a_i),定义合并两堆石子的代价为两堆石子质量之和+(A[l][r])(l,r为合并后的石子最小的编号和最大的编号),求合并成一堆石子最小的代价,(nleq 3000)

    后记

    我想,当强者你看完这一切,觉得这些东西十分简单,而我的前言中又说这个东西很难,那么你大概知道了我的命运了,君当益AK,吾独AFO。

  • 相关阅读:
    2018-2019-20175307实验一《Java开发环境的熟悉》实验报告
    20175307《Java程序设计》第5周学习总结
    团队作业第二次——团队Github实战训练
    团队作业第一次—团队展示和项目展示
    第01组 团队Git现场编程实战
    2019 SDN上机第1次作业
    第01组 团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
    第1组 团队展示
  • 原文地址:https://www.cnblogs.com/a1b3c7d9/p/10984353.html
Copyright © 2011-2022 走看看