4-7 Monge矩阵

转自:zhanglei8893的专栏

4-7 Monge矩阵

   一个m x n的实数矩阵A,如果对所有i,j,k和l,1≤ i<k ≤ m和1≤ j<l ≤ n,有

             A[i,j]+A[k,l] ≤ A[i,l]+A[k,j]

   那么,此矩阵A为Monge矩阵。换句话说,每当我们从Monge矩阵中挑出两行与两列,并且考虑行列交叉处的4个元素,左上角与右下角的和小于或等于左下角与右上角元素的和。

a)证明一个矩阵为Monge阵,当且仅当对所有i=1,2,...,m-1和j=1,2,...,n-1,有

             A[i,j]+A[i+1,j+1] ≤ A[i,j+1]+A[i+1,j]

(提示:在当部分,对行、列分别使用归纳法。)

b)下面的矩阵不是Monge阵。改变一个元素,把它变成Monge阵(提示:利用a)的结论)

             37       23       22      32

             21        6       27      10

             53       34       30      31

             32       13        9       6

             43       21       15       8

c)假设f(i)是第i行包含最左端最小值的列的索引值。证明对任何的m x n Monge矩阵,有f(1) ≤ f(2) ≤...≤ f(m)。

d)以下是一段关于分治算法的描述,用来计算m x n Monge矩阵A中每一行的最左端最小值:

   构造一个包含所有A的偶数行的子矩阵A'。递归地计算A'中每一行的最左端最小值。然后计算A中奇数行的最左端最小值。

   解释如何能在O(m+n)时间内计算出A的奇数行的最左端最小值?(假设偶数行最左端最小值已知)

e)写出d)部分所描述算法的运行时间的递归式,并证明其解为O(m+nlogm)

分析与解答:

a)先对列使用归纳法,先假定行不变为m,在列数小于或等于n时,矩阵A是Monge矩阵,考察列为n+1的

任意取第i,k两行,第j,n+1列的四个交点,则只需证明

           A[i, k]+A[j, n+1] ≤ A[i, n+1]+A[j, k]

由于mxn的矩阵为Monge矩阵,则满足

           A[i, k]+A[j, n] ≤ A[i, n]+A[j,k]                               (1)

同时利用递归假设

          A[i, n]+A[j,n+1] ≤ A[i, n+1]+A[j,n]                        (2)

联立(1)、(2)就可以得到  A[i, k]+A[j, n+1] ≤ A[i, n+1]+A[j, k],故归纳法成立

对于行的情况,可以采用类似的思路。

b)第2行第3列元素不满足Monge矩阵的定义,假设这个元素为x

则利用A[i,j]+A[i+1,j+1] ≤ A[i,j+1]+A[i+1,j],可以求得(此处忽略)

                   2 ≤ x ≤ 5

c)采用反证法,若第m的最左端最小值为f(m),第m+1的最左端最小值为f(m+1),示意图如下:

考虑图中的两列,由于满足Monge的定义,则

         A[m, f(m+1)] + A[m+1, f(m)]  ≤ A[m, f(m)] + A[m+1, f(m+1)]

根据f(m)、f(m+1)的定义知:

         A[m, f(m)]  <  A[m, f(m+1)] (注意此处不能取等号,因为f(m)是最左端最小值)

         A[m+1, f(m+1)]  ≤  A[m+1, f(m)]

联立知       A[m, f(m+1)] + A[m+1, f(m)]   >  A[m, f(m)] + A[m+1, f(m+1)]

和上面的Monge的定义矛盾,故假设不成立,由此

          f(1) ≤ f(2) ≤...≤ f(m)

d)假定已知偶数行的最左端的最小值f(2), f(4), ...则奇数上的最左端的最小值满足:f(2k) ≤  f(2k+1) ≤  f(2(k+1)

  

即夹在两个偶数行的的最左端的最小值之间,故奇数行的最左端的最小值总的搜索范围为列数。

由于偶数行的f最左端的最小值被重复计算了2次,故计算奇数行的最左端的最小值的运行时间为O(n+m/2),即为O(n+m)。

e)该算法的运行时间的递归式

         T(m) = T(m/2) +O(m+n)

    由主定律,T(m) = O(m+nlogm)

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhanglei8893/archive/2011/03/13/6246141.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值