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

来源:互联网 发布:淘宝网长款外套 编辑:程序博客网 时间:2024/06/07 03:00

主定理 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