zoukankan      html  css  js  c++  java
  • 主定理计算递归式的复杂度

    符号 Notation

    渐进符号 Asymptotic Notation

    渐进符号 非渐进符号 含义
    \(f(n) = O(g(n))\) \(f(n) \le cg(n)\) g是f的上界
    \(f(n) = o(g(n))\) \(f(n) \lt cg(n)\) g是f的严格上界
    \(f(n) = \Omega(g(n))\) \(f(n) \ge cg(n)\) g是f的下界
    \(f(n) = \omega(g(n))\) \(f(n) \gt cg(n)\) g是f的严格下界
    \(f(n) = \Theta(g(n))\) \(c_1g(n) \le f(n) \le c_2g(n)\) g是f的确界

    问题规范化

    \[T(n) = aT(n/b) + f(n) \]

    规模为n的问题,可分为a个规模为n/b的子问题,每个子问题可通过f(n)的事件解决。

    主定理

    主定理通过递归树导出,主要思想是:

    比较\(n^{\log_ba}\)\(f(n)\)的渐进大小关系,谁大谁决定复杂度\(T(n)。\)

    第一种情况:\(n^{\log_ba} = \omega(f(n))\)\(T(n) = \Theta(n^{\log_b a})\)

    例:\(T(n) = 9T(n/3) + n\)

    \(n^{\log_ba} = n^{\log_39} = n^2 = \omega(n)\)

    \(T(n) = \Theta(n^2)\)

    第二种情况:\(n^{\log_b a} = o(f(n))\)\(T(n) = \Theta(f(n))\)

    应用该公式,还要必须满足:

    存在实数c,且\(c \lt 1\)时,有\(af(n/b) \le cf(n)\)

    例:\(T(n) = 3T(n/4) + n\log_2n\)

    \(n^{\log_ba} = n^{\log_43} \approx n^{0.792} = o(n\log_2n)\)

    且由\(\frac 34n\log_2{\frac n4} \le cn\log_2n\),可得\(\frac 34 \lt c \lt 1\)

    \(T(n) = \Theta(n\log_2n)\)

    第三种情况:\(n^{\log_b a} = \Theta(f(n))\)\(T(n) = \Theta(n^{\log_ba}\log_2n)\)

    例:\(T(n) = T(3n/4) + 1\)

    \(n^{\log_ba} = n^{\log_{\frac 4 3} 1} = n^0 = \Theta(1)\)

    \(T(n) = \Theta(\log_2n)\)

    注意

    主定理为未包含所有递归式情况,有以下情况不被包含:

    • 不满足第二种情况情况中的附加条件。
    • 非渐进关系可比,如

    \[T(n) = 2T(n/2) + n\log_2n \]

    \(n^{\log_ba} = n^{\log_22} = n \not = o(n\log_2n)\)

  • 相关阅读:
    BZOJ3065(替罪羊树套线段树)
    BZOJ3052(树上带修莫队)
    BZOJ1095(动态点分治+堆)
    NOIWC颓废记
    BZOJ2125 最短路
    Simpson积分(BZOJ2178)
    BZOJ4555 [Tjoi2016&Heoi2016]求和
    NTT+多项式求逆+多项式开方(BZOJ3625)
    Miller-Rabin,Pollard-Rho(BZOJ3667)
    单纯形求解线性规划(BZOJ1061)
  • 原文地址:https://www.cnblogs.com/sequix/p/8558534.html
Copyright © 2011-2022 走看看