前言
本篇博客所记录的主要内容对应于原视频课程的第二课,即渐进符号、递归及解法。本篇博客将依次介绍三大渐进符号以及递归公式的求解。
渐进符号
在学习算法的过程中,我们一般会用渐进符号来考量一个算法的时间复杂度和空间复杂度。一般来讲,渐进符号有五个,它们分别是:渐进确界(θ)、渐进上界(O)、渐进下界(Ω)、非渐进紧确上界(o)以及非渐进紧确下界(w)。其中前三者在我们学习数据结构和算法中更为常用,故以下只对前三者做详细介绍。
渐进确界(θ)
数学定义:对于两个多项式f(n)与g(n),若存在常数c1、c2与n0,其中c1 > 0、c2 > 0、n0 > 0,满足对任意的n > n0,都有 c1*g(n) ≤ \leq ≤ f(n) ≤ \leq ≤ c2*g(n),则称g(n)为f(n)的一个渐进确界,记为f(n) = θ(g(n))。
示例1:f(n) = 2n3 & g(n) = n3,故有f(n) = θ(g(n));
示例2:f(n) = 2n3 & g(n) = n3 + n2,也有f(n) = θ(g(n))。
说明:如示例所示,一个多项式的渐进确界不唯一,一个多项式的所有确界会构成一个集合。但在实际应用中,我们一般会找到“最简便”的确界(这里的最简便即略去确界的低次项以及常数项,如在上述示例中我们会选择g(n) = n3作为f(n)的确界)。
渐进上界(O)
数学定义:对于两个多项式f(n)与g(n),若存在常数c与n0,其中c > 0、n0 > 0,满足对任意的n > n0,都有 0 ≤ \leq ≤ f(n)