zoukankan      html  css  js  c++  java
  • 主定理

    渐进记号

    (O)渐进上界,(Theta)渐进紧确界,(Omega)渐进下界,(o)非渐进紧确上界,(omega)非渐进紧确下界
    例如(2n^2 = O(n^2))是渐进紧确的,但(2n = O(n^2))不是渐进紧确的,我们使用(2n = o(n^2))

    公式

    (lg(n!) = Theta(nlgn))
    (a^{log_b{n}} = n ^ {log_b{a}})

    主定理

    假设有递归式
    (T(n) = aT(frac{n}{b}) + f(n), a geq 1, b gt 1)

    情况一

    (f(n) = O(n^{log_b{a} - epsilon}), epsilon > 0)
    (T(n) = Theta(n^{log_b{a}}))
    (T(n) = 9T(frac{n}{3}) + n), (T(n) = Theta(n^2))

    情况二

    (f(n) = Theta(n^{log_b{a}}))
    (T(n) = Theta(n^{log_b{a}} log_2{n}))
    (T(n) = T(frac{2n}{3}) + 1), (T(n) = Theta(log_2{n}))

    情况三

    (f(n) = Omega(n^{log_b{a} + epsilon}), epsilon > 0)且对于某个常数(c<1)和足够大的(n)(af(frac{n}{b}) leq cf(n))
    (T(n) = Theta(f(n)))
    (T(n) = 3T(frac{n}{4}) + nlog_2{n}), (T(n) = Theta(nlog_2{n}))

    例子

    对于(T(n) = 2T(frac{n}{2}) + nlog_2{n}),不能应用情况三,因为(frac{f(n)}{n} = log_2{n})都渐进小于(n^epsilon)

    证明主定理

    画递归树

    现在只需要计算

    [g(n) = sum_{j=0}^{log_b{n} - 1} a^j f(frac{n}{b^j}) ]

    带入即可证明

    练习

    (f(n) = Theta(n^{log_b{a}}lg^k n), k ge 0)
    (T(n) = Theta(n^{log_b{a}}lg^{k+1} n)), 简单起见假定(n)(b)的幂
    练习证明

  • 相关阅读:
    社群电商
    文字超出部分省略号显示······
    jq监听页面的滚动事件,
    input 更改 pleaseholder 的字体样式
    20161213 scrapy安装
    map按照value排序的方法
    Qt跨线程信号和槽的连接
    C++ map指针的使用
    Python 高级进阶
    [转]解读C指针(5)——笔试题解析
  • 原文地址:https://www.cnblogs.com/qbits/p/10939541.html
Copyright © 2011-2022 走看看