四边形不等式,即:w[i , j] + w[i' , j'] <= w[i , j'] + w[i' , j], 其中 i <= i' <= j' <= j;
看了几篇关于四边形不等式,虽然不是很懂四边形不等式的相关证明,但却发现可以总结出一些类似于公式的东西,总结如下:
顺便推荐两篇论文: 《四边形不等式》, 《动态规划算法优化技巧》
我是这么总结的:
1> 状态转移方程形如:f[i] = opt{f[j]+w[j , i]} 其中b[i] <= j <= i-1
(说明:b[i]是根据题目描述的可以决策状态i的左边界,w[j][i]是状态j转移到状态i的代价)
若w满足四边形不等式,则决策满足单调性。
所以可以采用单调队列优化。
2> 状态转移方程形如:f[i , j] = opt{f[i-1 , k] + w[k+1 , j]}, b[i-1] <= k <= j-1
典型题目:PKU 1160 Post Office
设s[i , j]为状态f[i , j]决策变量的最大值,即s[i , j] = max{k | f[i , j] = f[i-1 , k] + w[k+1 , j]},
若w满足四边形不等式,则:
f也满足四边形不等式,f[i , j] + f[i' , j'] <= f[i , j'] + f[i' , j], 其中 i <= i' <= j' <= j,
决策s满足单调性,即:s[i-1 , j] <= s[i , j] <= s[i+1 , j+1],所以在决策f[i , j]是就可以减少k的枚举量,加速状态转移。
3> 状态转移方程形如:f[i , j] = opt{f[i , k] + f[k+1 , j]} + w[i , j], i < j
典型题目:NK 1137 石子合并问题
若w满足四边形不等式, 则:
f也满足四边形不等式,f[i , j] + f[i' , j'] <= f[i , j'] + f[i' , j], 其中 i <= i' <= j' <= j,
决策s满足单调性,即:s[i-1 , j] <= s[i , j] <= s[i+1 , j+1]。
--------------------------------------------------------------------------------------------------------------------------------------------------
具体的证明可以看先前说的两篇论文,这里只给出公式化的描述。以后有时间待好好研究上面的两篇论文后在细致总结。
水平有限,文中可能有错,若有路过的神牛大牛小牛,还请指点。 谢谢。