四边形不等式
如果有一个矩阵 M M ,对于任意
, c<d c < d ,有 M(a,c)+M(b,d)≥M(a,d)+M(b,c) M ( a , c ) + M ( b , d ) ≥ M ( a , d ) + M ( b , c ) ,我们称这个矩阵满足四边形不等式
我们考虑一个简单的问题:如何验证一个矩阵是否满足四边形不等式?
显然有 O(n2m2) O ( n 2 m 2 ) 的算法,但事实上我们可以依靠下面的性质在 O(nm) O ( n m ) 的复杂度内判断:
∀a<b,c<d,M(a,c)+M(b,d)≥M(a,d)+M(b,c) ∀ a < b , c < d , M ( a , c ) + M ( b , d ) ≥ M ( a , d ) + M ( b , c )
⇔∀1≤a≤n−1,1≤b≤m−1,M(a,b+1)+M(a+1,b)≥M(a,b)+M(a+1,b+1) ⇔ ∀ 1 ≤ a ≤ n − 1 , 1 ≤ b ≤ m − 1 , M ( a , b + 1 ) + M ( a + 1 , b ) ≥ M ( a , b ) + M ( a + 1 , b + 1 )
从左边推到右边是显然的,只要令