在数学分析中,算法的渐近分析是一种定义运行时性能的数学边界的方法。 使用渐近分析,可以很容易地得出关于算法的平均情况,最佳情况和最坏情况的结论。
它用于计算算法内任何操作的运行时间。
示例:一个操作的运行时间为x(n)
,另一个操作的运行时间计算为f(n2)
。 它指的是运行时将随着第一次操作n
的增加而线性增加,并且运行时间将以指数方式增加以进行第二次操作。 类似地,如果n
非常小,则两个操作的运行时间将相同。
通常,算法所需的时间有三种类型:
- 最坏情况:它定义了算法占用大量时间的输入。
- 平均情况:程序执行需要平均时间。
- 最佳情况:它定义算法占用最少时间的输入。
渐近符号
用于计算算法运行时复杂度的常用渐近符号,如下:
- 大欧符号(Ο)
- 欧米茄符号(Ω)
- 西塔表示法(θ)
大欧符号(Ο)
它是表达算法运行时间上限的正式方法,它测量时间复杂度的最坏情况或最长时间,算法完成其操作所需的时间。 它表示如下:
欧米茄符号(Ω)
它是表示算法运行时间下限的正式方法。 它衡量算法可能完成的最佳时间量或最佳的案例时间复杂度。
如果要求算法在不使用上限的情况下花费至少一定的时间,使用大Ω表示法,即希腊字母“omega”。它用于限制输入大小的运行时间的增长。
如果运行时间是Ω(f(n)),则对于较大的n
值,对于常数(k),运行时间至少为k * f(n)
。 它表示如下:
西塔符号(θ)
它是表达算法运行时间的上限和下限的正式方式。
考虑算法的运行时间是θ(n)
,如果一次(n)变得足够大,则对于某些常数k1
和k2
,运行时间最多为k2-n
并且至少为k1≤n
。 它表示如下:
常见的渐近符号
变量 | ?(1) |
---|---|
线性 | ?(n) |
对数 | ?(log n) |
n log n | ?(n log n) |
指数 | 2?(n) |
立方 | ?(n3) |
多项式 | n?(1) |
二次方 | ?(n2) |