主定理计算递归式的复杂度

符号 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)\)

转载于:https://www.cnblogs.com/sequix/p/8558534.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值