📅  最后修改于: 2020-11-07 08:43:11             🧑  作者: Mango
必须分析算法的效率和准确性以进行比较,并针对某些情况选择特定的算法。进行此分析的过程称为渐近分析。它是指以数学计算单位计算任何操作的运行时间。例如,一个操作的运行时间计算为f(n),而对于另一操作,它的运行时间计算为g(n2)。这意味着第一操作的运行时间将随着n的增加线性增加,而第二操作的运行时间将随着n的增加呈指数增长。同样,如果n很小,则两个操作的运行时间将几乎相同。
通常,算法所需的时间分为以下三种:
以下是常用的渐近符号来计算算法的运行时间复杂度。
符号η(n)是表达算法运行时间上限的形式化方法。它测量最坏情况下的时间复杂度或算法可能花费的最长时间。
例如,对于函数f (n)
Ο(f(n)) = { g(n) : there exists c > 0 and n0 such that f(n) ≤ c.g(n) for all n > n0. }
Ω(n)表示形式是算法运行时间的下限。它测量最佳情况下的时间复杂度或算法可能花费的最佳时间。
例如,对于函数f (n)
Ω(f(n)) ≥ { g(n) : there exists c > 0 and n0 such that g(n) ≤ c.f(n) for all n > n0. }
θ(n)表示形式是算法运行时间的下限和上限。它表示如下-
θ(f(n)) = { g(n) if and only if g(n) = Ο(f(n)) and g(n) = Ω(f(n)) for all n > n0. }
以下是一些常见的渐近符号的列表-
constant | − | Ο(1) |
logarithmic | − | Ο(log n) |
linear | − | Ο(n) |
n log n | − | Ο(n log n) |
quadratic | − | Ο(n2) |
cubic | − | Ο(n3) |
polynomial | − | nΟ(1) |
exponential | − | 2Ο(n) |