(转)如何分析分治型算法性能

主定理 Master Method :在《算法导论》被提出

假设有递推关系式

T(n)=aT(nb)+f(n) ,其中 a1b>1
其中, n 为问题规模,a为递推的子问题数量, n/b 为每个子问题的规模(假设每个子问题的规模基本一样), f(n) 为递推以外进行的计算工作:包含问题分解和子问题解合并的代价

情形一

如果存在常数 ϵ>0 ,有 f(n)=O(nlogb(a)ϵ) ,并且是多项式的小于
那么

T(n)=Θ(nlogba)

情形二

如果存在常数 k0 ,有 f(n)=Θ(nlogbalogkn) , 那么

T(n)=Θ(nlogbalogk+1n)

情形三

如果存在常数 ϵ>0 ,有 f(n)=Ω(nlogb(a)+ϵ) ,并且是多项式的大于, 同时存在常数 c<1 以及充分大的 n ,满足af(nb)cf(n), 即保证下一层比上一层小, 那么

T(n)=Θ(f(n))

常用算法中的应用


——算法 ———– 递推关系式——-

  • 折半搜索– T(n)=T(n2)+Θ(1):Θ(log(n))k=0
  • 二叉树遍历– T(n)=2T(n2)+Θ(1):Θ(n)
  • 归并排序– T(n)=2T(n2)+Θ(n):Θ(nlog(n))k=0
    sol: f(n)=θ(n)=θ(nlog22log0n),T(n)=nlog22log1n=nlog(n)

    参考资料

    1 主定理-维基百科 http://zh.wikipedia.org/wiki/%E4%B8%BB%E5%AE%9A%E7%90%86

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值