(ACM学习笔记)POJ 1160中四边形不等式的应用

内容转载自:
《POJ 1160 Post Office》Staginner
《 四边形不等式优化 》Blithe
四边形不等式优化dp(POJ1160)
动态规划算法的优化技巧 毛子青


四边形不等式

=====================

最有代价用d[i,j]表示
d[i,j]=min{ d[i,k1]+d[k+1,j]+w[i,j] }
其中  w[i,j]=sum[i,j]
四边形不等式
 w[a,c]+w[b,d]<=w[b,c]+w[a,d](a<b<c<d) 就称其满足凸四边形不等式
决策单调性
 w[i,j]w[i1,j1]([i,j][i1,j1])i1i<jj1

于是有以下三个定理

  • 定理一: 如果w同时满足四边形不等式 和 决策单调性 ,则d也满足四边形不等式
  • 定理二:当定理一的条件满足时,让d[i,j]取最小值的k为K[i,j],则K[i,j-1]<=K[i,j]<=K[i+1,j]
  • 定理三:w为凸当且仅当w[i,j]+w[i+1,j+1]<=w[i+1,j]+w[i,j+1]

由定理三知判断w是否为凸即判断 w[i,j+1]-w[i,j]的值随着i的增加是否递减
于是求K值的时候K[i,j]只和K[i+1,j] 和 K[i,j-1]有关,所以可以以i-j递增为顺序递推各个状态值最终求得结果 将O(n^3)转为O(n^2)

证明最优解的集合s满足s[i,j-1]≤s[i,j]≤s[i+1,j]

s[i,j1]s[i,j]s[i+1,j] 的证明:

mk[i,j]=m[i,k]+m[k,j] ,s[i,j]=d

对于任意 k<d ,有 mk[i,j]md[i,j] (这里以 m[i,j]=minm[i,k]+m[k,j] 为例,max的类似),接下来只要证明 mk[i+1,j]md[i+1,j] ,那么只有当 s[i+1,j]s[i,j] 时才有可能有 ms[i+1,j][i+1,j]md[i+1,j]

(mk[i+1,j]md[i+1,j])(mk[i,j]md[i,j])

=(mk[i+1,j]+md[i,j])(md[i+1,j]+mk[i,j])

=(m[i+1,k]+m[k,j]+m[i,d]+m[d,j])(m[i+1,d]+m[d,j]+m[i,k]+m[k,j])

=(m[i+1,k]+m[i,d])(m[i+1,d]+m[i,k])

∵m满足四边形不等式,∴对于 i<i+1k<d m[i+1,k]+m[i,d]m[i+1,d]+m[i,k]

(mk[i+1,j]md[i+1,j])(mk[i,j]md[i,j])0

s[i,j]s[i+1,j] ,同理可证 s[i,j1]s[i,j]


POJ 1160

原题链接
下面内容转自毛子青大牛的《动态规划优化技巧》,是我在网上搜到的最详细的答案。为了方便我就放截图了,有兴趣可以点这个链接查看原文。

这里写图片描述

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值