POJ1160:Post Office【四边形不等式优化】
——有n个村庄,要建m个邮局,使得村庄到邮局距离的总和最小。(邮局只能建在村庄里)
——DP,四边形不等式优化。
——url:http://poj.org/problem?id=1160
————————————————————————————————————————————————————————————————————————
具体参见毛子清的论文。
————————————————————————————————————————————
状态转移方程
d[ i, j ] = min{ d[ i, k - 1 ] + d[ k + 1 ][ j ] } + w[ i , j ] i <= k <= j
时间复杂度为 O( n * n * n )。
1、如果函数 w 满足: w[ a, c ] + w[ b, d ] <= w[ b, c ] + w[ a, d ] a < b < c < d
则说 w 满足凸四边形不等式(简称 w 为凸)。
2、如果函数 w 满足:w[ i, j ] <= w[ i", j" ] [ i, j ] 包含于 [ i", j" ]
则说 w 关于区间包含关系单调。
——————————————————————————————————————
定理一:
如果 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是否为凸:
固定j算出w[i,j+1]-w[i,j]关于i的表达式,若其关于i是递减,则w为凸。同样,固定i算出w[i+1,j]-w[i,j]关于j的表达式,如果关于j递减,则w为凸。
这样每次决策范围变成 K[ i + 1, j ] 到 K[ i, j - 1 ]。
按 j - i 递减的顺序递推各个状态值,则对于每个确定的 j - i 来说,决策总量为 O( n ),故总的时间复杂度为 O( n*n )。
——————————————————————————————
分两类:
1、区间问题:s[i,j-1]≤s[i,j]≤s[i+1,j]
2、邮局问题:s[i-1,j]≤s[i,j]≤s[i,j+1] (表示在前j个村庄建立i个邮局的最小距离和)