寻找蒙赫阵列(monge array)的每行的最小值

monge array是一个矩阵,满足第j行的最小值的列号C(j)大于等于第i行的最小值的列号C(i),当j>=i的时候,有如下特性

-- 对于任何行列,正对角线的和<=反对角线的和

#!/usr/bin/python

'''file name: monge.py
   --P111
   --input one m*n monge array, find leftmost minimum value, O(m + nlgm)
   --author: zevolo, 2012.05.16

proof:

first to guees the result:
T(m,n) = T(m/2, n) + theta(m + n)
    use the recurrence tree:
      T(m, n) = c(m + n) + c(m/2 + n) + c(m/4 + n) + ... + c(m/(2^(lgm-1)) + n)
              = cm (1+1/2+1/4+...+1/(2^(lgm-1))) + cnlgm
              = cm 2(1 - 1/(2^lgm)) + cnlgm
then
assume T(m, n) <= am + bnlgm    (a, b are constant)
    T(m,n) = T(m/2, n) + c(m+n)
          <= (am/2 + bnlg(m/2)) + c(m+n)
          =  am + bnlgm - am/2 - bn + cm + cn
          =  am +
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值