poj 1160 Post Office //四边形不等式优化

博客详细介绍了如何利用四边形不等式优化解决邮局问题,通过证明状态转移方程满足四边形不等式,将时间复杂度从O(p*n^2)优化到O(n*p),并给出了优化后的算法实现。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/find_my_dream/archive/2009/12/03/4931222.aspx

这个博客概括的比较好

 

四边形不等式优化------邮局问题

 

m[p,n]为问题的解

m[i,j]表示在前j个村庄建立i个邮局的最小距离和

 

状态转移方程和边界条件是

m[1,j]=w[1,j]

m[i,j]=min(m[i-1,k]+w[k+1,j])  i<=j

 

其中w[i,j]表示在d[i..j]之间建立一个邮局的最小距离和,

可以证明,当仅建立一个邮局时,最优解出现在中位数,

即设建立邮局的村庄为k,则k=(i+j)/2

计算w[i,j]是比较简单的,不作阐述

 

同时令s[i,j]=k,记录使用前i-1个邮局的村庄数

便于在算出最小距离和之后构造最优建立方案。

 

上述算法中w[i,j]可通过O(n)时间的预处理,在O(1)的时间内算出,

所以,该算法的状态总数为O(n*p),每个状态转移的状态数为O(n),

每次状态转移的时间为O(1),该算法总的时间复杂度为O(p*n^2)。

 

 

以下就是算法的优化

首先这个题目的状态转移方程让我猜测它是否也满足单调性

即  s[i-1,j]<=s[i,j]<=s[i,j+1]

 

首先我们证明函数w满足四边形不等式,即

w[i,j]+w[i',j']<=w[i',j]+w

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值