a. 对行列做数学归纳。
行:假设 A[i,j]+A[i+1,j+1] <= A[i,j+1] +A[i+1,j]
A[i,j+1]+A[i+1,j+2] <= A[i+1,j+1]+A[i,j+2]
则 A[i,j]+A[i+1,j+2] <=A[i+1,j]+A[i,j+2]
列:和上面差不多
b.第二行第3列7改成2就行了
c.如果f(i)>f(i+1),那么A[i,f(i+1)]+A[i+1,f(i)]>A[i,f(i)]+A[i+1,f(i+1)],因为A[i,f(i)]和A[i+1,f(i+1)]分别为那一行最小元素,就不符合Monge条件了
d.设i为奇数,在确定第i-1和i+1行最小元素位置之后,只要在f(i-1)和f(i+1)之间寻找最小元素即可。
f(2),f(4),f(6)……之间的距离和为n,再加上每次循环奇数行,共m/2,所以时间复杂度一共是n+m/2,即O(m+n)
e. T(m,n)=T(m/2,n)+m+n
递归树一共lgm+1层,每层一个元素,代价n+m/2i,最后一层代价O(1)
T(m,n)=∑(n+m/2i)=O(m+nlgm)