数据结构与算法分析——数学基础
·
数据结构与算法分析——数学基础
- 如果存在正常数ccc和n0n_0n0 使得当N≥n0N \geq n_0N≥n0时T(N)≤cf(N)T(N) \leq cf(N)T(N)≤cf(N),则记为T(N)=O(f(N))T(N) = O(f(N))T(N)=O(f(N))。
- 如果存在正常数ccc和n0n_0n0 使得当N≥n0N \geq n_0N≥n0时T(N)≥cg(N)T(N) \geq cg(N)T(N)≥cg(N),则记为T(N)=Ω(g(N))T(N) = \Omega(g(N))T(N)=Ω(g(N))。
- T(N)=Θ(h(N))T(N) = \Theta(h(N))T(N)=Θ(h(N))当且仅当T(N)=O(h(N))T(N) = O(h(N))T(N)=O(h(N))和T(N)=Ω(h(N))T(N) = \Omega(h(N))T(N)=Ω(h(N))。
- 如果对每一正常数ccc都存在常数n0n_0n0使得当N>n0N > n_0N>n0时T(N)<cp(N)T(N) < cp(N)T(N)<cp(N),则T(N)=o(p(N))T(N) = o(p(N))T(N)=o(p(N))。有时也可以说,如果T(N)=O(p(N))T(N) = O(p(N))T(N)=O(p(N))且T(N)≠Θ(p(N))T(N) \neq \Theta(p(N))T(N)=Θ(p(N)),则T(N)=o(p(N))T(N) = o(p(N))T(N)=o(p(N))。
上述定义的目的是要在函数间建立一种相对的级别。
1000N=O(N2)1000N = O(N^2)1000N=O(N2)称为大O标记法,O(N2)O(N^2)O(N2)读作“大ON的平方”。
当T(N)=O(f(N))T(N) = O(f(N))T(N)=O(f(N))时,我们是在保证函数T(N)T(N)T(N)是在以不快于f(N)f(N)f(N)的速度增长;因此f(N)f(N)f(N)是T(N)T(N)T(N)的一个上界。这意味着f(N)=Ω(T(N))f(N) = \Omega(T(N))f(N)=Ω(T(N)),于是我们说T(N)T(N)T(N)是f(N)f(N)f(N)的一个下界。
如果g(N)=2N2g(N) = 2N^2g(N)=2N2,那么g(N)=O(N4)g(N) = O(N^4)g(N)=O(N4),g(N)=O(N3)g(N) = O(N^3)g(N)=O(N3)和g(N)=O(N2)g(N) = O(N^2)g(N)=O(N2)从技术上看都是成立的,但是最后一个是最佳选择。
- 法则1:如果T1(N)=O(f(N))T_1(N) = O(f(N))T1(N)=O(f(N))且T2(N)=O(g(N))T_2(N) = O(g(N))T2(N)=O(g(N)),那么
- T1(N)+T2(N)=O(f(N)+g(N))T_1(N) + T_2(N) = O(f(N) + g(N))T1(N)+T2(N)=O(f(N)+g(N))
- T1(N)∗T2(N)=O(f(N)∗g(N))T_1(N) * T_2(N) = O(f(N) * g(N))T1(N)∗T2(N)=O(f(N)∗g(N))
- 法则2:如果T(N)T(N)T(N)是一个kkk次多项式,则T(N)=Θ(Nk)T(N) = \Theta(N^k)T(N)=Θ(Nk)。
- 法则3:对任意常数kkk,logkN=O(N)log^kN = O(N)logkN=O(N)。它告诉我们对数增长得非常缓慢。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)