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


     给出伪代码:(可以看出时间复杂度为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)

  • 相关阅读:
    day4
    day3
    day2
    day1
    spring-boot-note
    spring-boot-cli
    jquery ajax rest invoke
    spring-boot
    docker mysql
    jpa OneToMany
  • 原文地址:https://www.cnblogs.com/wsy107316/p/12250753.html
Copyright © 2020-2023  润新知