• 递归关系的渐进时间复杂度推导


    高级算法课程相关
    T ( n ) = a T ( n b ) + O ( n d ) = { O ( n d l o g b n ) ,    a = b d O ( n d ) ,    a < b d O ( n l o g b a ) ,    a > b d

    \begin{aligned} T(n) &=aT\left(\frac{n}{b}\right)+O(n^d)\\ &=\left\{ \begin{aligned} & O\left(n^dlog_bn\right),\;&a=b^d\\ & O\left(n^d\right), \; &a<b^d\\ & O\left(n^{log_ba}\right),\;&a>b^d \end{aligned}
    \right. \end{aligned} T(n)=aT(bn)+O(nd)=O(ndlogbn),O(nd),O(nlogba),a=bda<bda>bd

    T ( n ) = a T ( n b ) + O ( n d )

    T(n)=aT(nb)+O(nd)
    T(n)=aT(bn)+O(nd)
    为证明这种通用的递归关系的时间复杂度。不妨假设,
    T ( n ) = a T ( n b ) + c ⋅ n d ,      T ( 1 ) = c T(n)=aT\left(\frac{n}{b}\right) + c \cdot n^d,\;\; T(1)=c T(n)=aT(bn)+cnd,T(1)=c

    1. 由递归树展开(实际上也是按公式定义一层层展开),
      T ( n ) = a T ( n b ) + c ⋅ n d = a ( a T ( n b 2 ) + c ⋅ ( n b ) d ) + c ⋅ n d = a 2 T ( n b 2 ) + c ⋅ n d ⋅ a b d + c ⋅ n d = . . . = a l o g b n T ( 1 ) + c ⋅ n d ⋅ ( a b d ) l o g b n − 1 + . . . + c ⋅ n d ⋅ a b d + c ⋅ n d = c ⋅ a l o g b n + c ⋅ n d ⋅ ( a b d ) l o g b n − 1 + . . . + c ⋅ n d ⋅ a b d + c ⋅ n d = c ⋅ n d ⋅ ( a b d ) l o g b n + c ⋅ n d ⋅ ( a b d ) l o g b n − 1 + . . . + c ⋅ n d ⋅ a b d + c ⋅ n d = c ⋅ n d ∑ t = 0 l o g b n ( a b d ) t

      T(n)=aT(nb)+cnd=a(aT(nb2)+c(nb)d)+cnd=a2T(nb2)+cndabd+cnd=...=alogbnT(1)+cnd(abd)logbn1+...+cndabd+cnd=calogbn+cnd(abd)logbn1+...+cndabd+cnd=cnd(abd)logbn+cnd(abd)logbn1+...+cndabd+cnd=cndt=0logbn(abd)t
      T(n)=aT(bn)+cnd=a(aT(b2n)+c(bn)d)+cnd=a2T(b2n)+cndbda+cnd=...=alogbnT(1)+cnd(bda)logbn1+...+cndbda+cnd=calogbn+cnd(bda)logbn1+...+cndbda+cnd=cnd(bda)logbn+cnd(bda)logbn1+...+cndbda+cnd=cndt=0logbn(bda)t

    2. 分析右边的求和公式,
      f ( n ) = ∑ t = 0 n x t ,    x 为 常 数 , 即 上 述 的 a b d f(n)=\sum\limits_{t=0}^nx^t,\;x为常数,即上述的\frac{a}{b^d} f(n)=t=0nxt,x,bda

  • 相关阅读:
    Linux C++ 051-设计模式之中介者模式
    数字孪生在工厂领域的应用和优势
    ubuntu编译和链接特定版本的opencv和boost
    ComText让机器人有了情节记忆
    Linux计划任务at和cron命令的使用
    科技云报道荣膺全球云计算大会“云鼎奖”2013-2022十周年特别贡献奖
    ES6中的箭头函数详细梳理
    Vue组件生命周期深度剖析:从创建到销毁的八大钩子实战指南
    AUTOSAR从入门到精通-基于 CAN 总线的汽车发电机智能调节器
    java毕业设计——基于java+eclipse+sqlserver的银行帐目管理系统设计与实现(毕业论文+程序源码)——银行帐目管理系统
  • 原文地址:https://blog.csdn.net/qq_43015237/article/details/125629048