算法总结(四边形不等式优化)

定义

https://blog.csdn.net/weixin_43914593/article/details/105150937

f(l, r)= min{f(l, k) + f(k + 1, r)} + w(l, r), l <= k < r

四边形不等式

如果对于任意l1 <= l2 <= r1 <= r2,w(l, r)满足:
    区间包含单调性:w(l2, r1) <= w(l1, r2)
    四边形不等式:w(l1, r1) + w(l2, r2) <= w(l1, r2) + w(l2, r1)
那么f(l, r)满足:
    四边形不等式:f(l1, r1) + f(l2, r2) <= f(l1, r2) + f(l2, r1)
证明:
u, v分别表示f(l1, r2), f(l2, r1)的最优决策点
l1 <= u < r2, l2 <= v < r1

1、l1 = l2或r1 = r2,显然成立

2、l1 < l2 = r1 < r2
    (a) u < r1
        f(l1, r1) <= f(l1, u) + f(u + 1, r1) + w(l1, r1) // l1 <= u < r1
        f(l1, r1) + f(l2, r2) <= f(l1, u) + f(u + 1, r1) + w(l1, r1) + f(l2, r2)
                              <= f(l1, u) + f(u + 1, r2) + w(l1, r2) + f(l2, r1)
                               = f(l1, r2) + f(l2, r1)
        其中:
        f(u + 1, r1) + f(l2, r2) <= f(u + 1, r2) + f(l2, r1) // u + 1 <= l2 = r1 < r2
        w(l1, r1) <= w(l1, r2)
        数学归纳法,根据u + 1 <= l2 = r1 < r2推出l1 < l2 = r1 < r2
    (b) u >= r1
        f(l2, r2) <= f(l2, u) + f(u + 1, r2) + w(l2, r2) // l2 <= u < r2
        f(l1, r1) + f(l2, r2) <= f(l1, r1) + f(l2, u) + f(u + 1, r2) + w(l2, r2)
                              <= f(l1, u) + f(l2, r1) + f(u + 1, r2) + w(l1, r2)
                               = f(l1, r2) + f(l2, r1)
        其中:
        f(l1, r1) + f(l2, u) <= f(l1, u) + f(l2, r1) // l1 < l2 = r1 <= u
        w(l2, r2) <= w(l1, r2)
        数学归纳法,根据l1 < l2 = r1 <= u推出l1 < l2 = r1 < r2

3、l1 < l2 < r1 < r2
    (a) u <= v
        f(l1, r1) <= f(l1, u) + f(u + 1, r1) + w(l1, r1) // l1 <= u < r1
        f(l2, r2) <= f(l2, v) + f(v + 1, r2) + w(l2, r2) // l2 <= v < r2
        以上两式相加:
        f(l1, r1) + f(l2, r2) <= f(l1, u) + f(u + 1, r1) + w(l1, r1) + f(l2, v) + f(v + 1, r2) + w(l2, r2)
                              <= f(l1, u) + f(u + 1, r2) + w(l1, r2) + f(l2, v) + f(v + 1, r1) + w(l2, r1)
                               = f(l1, r2) + f(l2, r1)
        其中:
        f(u + 1, r1) + f(v + 1, r2) <= f(u + 1, r2) + f(v + 1, r1) // u + 1 <= v + 1 <= r1 < r2
        w(l1, r1) + w(l2, r2) <= w(l1, r2) + w(l2, r1)
        数学归纳法,根据u + 1 <= v + 1 <= r1 < r2推出l1 < l2 < r1 < r2
    (b) u > v
        f(l1, r1) <= f(l1, v) + f(v + 1, r1) + w(l1, r1) // l1 < v < r1
        f(l2, r2) <= f(l2, u) + f(u + 1, r2) + w(l2, r2) // l2 < u < r2
        以上两式相加:
        f(l1, r1) + f(l2, r2) <= f(l1, v) + f(v + 1, r1) + w(l1, r1) + f(l2, u) + f(u + 1, r2) + w(l2, r2)
                              <= f(l1, u) + f(u + 1, r2) + w(l1, r2) + f(l2, v) + f(v + 1, r1) + w(l2, r1)
                               = f(l1, r2) + f(l2, r1)
        其中:
        f(l1, v) + f(l2, u) <= f(l1, u) + f(l2, v) // l1 < l2 <= v < u
        w(l1, r1) + w(l2, r2) <= w(l1, r2) + w(l2, r1)
        数学归纳法,根据l1 < l2 <= v < u推出l1 < l2 < r1 < r2

m(l, r - 1) <= m(l, r) <= m(l + 1, r)

如果f(l, r)满足:
    四边形不等式:f(l1, r1) + f(l2, r2) <= f(l1, r2) + f(l2, r1)
那么:
    m(l, r - 1) <= m(l, r) <= m(l + 1, r), 其中m(l, r)表示f(l, r)的最小最优决策点

证明:
k1 = m(l, r - 1), k = m(l, r), k2 = m(l + 1, r), 证明k1 <= k <= k2

1、如果k < k1
    f(k + 1, r - 1) + f(k1 + 1, r) <= f(k + 1, r) + f(k1 + 1, r - 1) // k + 1 < k1 + 1 <= r - 1 < r
    f(l, k) + f(k + 1, r) <= f(l, k1) + f(k1 + 1, r)
    以上两式相加:
    f(l, k) + f(k + 1, r - 1) <= f(l, k1) + f(k1 + 1, r - 1)
    上式表示k是比k1更小的最优决策点,与k1是最小最优决策点矛盾,所以k >= k1

2、如果k > k2
    f(l, k2) + f(l + 1, k) <= f(l, k) + f(l + 1, k2) // l < l + 1 <= k2 < k
    f(l + 1, k2) + f(k2 + 1, r) <= f(l + 1, k) + f(k + 1, r)
    以上两式相加:
    f(l, k2) + f(k2 + 1, r) <= f(l, k) + f(k + 1, r)
    上式表示k2是比k更小的最优决策点,与k是最小最优决策点矛盾,所以k <= k2

所以k1 <= k <= k2

w(a, b + 1) + w(a + 1, b) >= w(a, b) + w(a + 1, b + 1)

(1) 对于任意a <= b <= c <= d, w(a, d) + w(b, c)w(a, c) + w(b, d)
(2) 对于任意a < b, w(a, b + 1) + w(a + 1, b) >= w(a, b) + w(a + 1, b + 1)
(1)(2)是等价的

证明:
(1) -> (2):
a < a + 1 <= b < b + 1
w(a, b + 1) + w(a + 1, b)w(a, b) + w(a + 1, b + 1)

(2) -> (1):
对于任意a < c, w(a, c + 1) + w(a + 1, c) >= w(a, c) + w(a + 1, c + 1)
                   w(a, c + 1) - w(a, c) >= w(a + 1, c + 1) - w(a + 1, c)
                   w(x, c + 1) - w(x, c) >= w(x + 1, c + 1) - w(x + 1, c) // 将a看成变量x, a <= x <= c - 1
                   w(a, c + 1) - w(a, c) >= w(a + 1, c + 1) - w(a + 1, c) // x = a
                                         >= w(a + 2, c + 1) - w(a + 2, c) // x = a + 1
                                         ...
                                         >= w(c, c + 1) - w(c, c)         // x = c - 1
                   w(a, c + 1) - w(a, c) >= w(y, c + 1) - w(y, c)         // 将c看成变量y, a + 1 <= y <= c, 注意y = a也成立, a <= y <= c

对于任意a <= b <= c, w(a, c + 1) - w(a, c) >= w(b, c + 1) - w(b, c)

对于任意a <= b <= c < d, w(a, c) - w(b, c) <= w(a, c + 1) - w(b, c + 1)
                         w(a, z) - w(b, z) <= w(a, z + 1) - w(b, z + 1)   // 将c看成变量z, c <= z <= d - 1
                         w(a, c) - w(b, c) <= w(a, c + 1) - w(b, c + 1)   // z = c
                                           <= w(a, c + 2) - w(b, c + 2)   // z = c + 1
                                           ...
                                           <= w(a, d) - w(b, d)           // z = d - 1

对于任意a <= b <= c < d, w(a, c) - w(b, c) <= w(a, d) - w(b, d) // 注意c = d也成立, a <= b <= c <= d

对于任意a <= b <= c <= d, w(a, c) - w(b, c) <= w(a, d) - w(b, d)
                          w(a, d) + w(b, c) >= w(a, c) + w(b, d)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值