📜  算法分析|小o和小欧米茄符号

📅  最后修改于: 2021-05-08 17:29:18             🧑  作者: Mango

渐近分析的主要思想是对不依赖于机器特定常数的算法的效率进行度量,这主要是因为该分析不需要实施算法,也不需要比较程序花费的时间。我们已经讨论了三种主要的渐近符号。以下2种渐近符号用于表示算法的时间复杂度。

渐近符号

大-O用作算法工作量增长的严格上限(此工作由函数f(n)进行描述),即使按照书面形式,它也可以是宽松的上限。 “Little-ο”(ο())表示法用于描述不能严格限制的上限。

定义:令f(n)和g(n)是将正整数映射到正实数的函数。我们说f(n)是ο(g(n))(或f(n)Εο(g(n)))如果对于任何实常数c> 0,存在一个整数常数n0≥1使得0 ≤f(n)
因此,很少的o()意味着f(n)的上限松散。小o是对最大增长顺序的粗略估计,而大-o可能是实际的增长顺序。在数学关系上
f(n)= o(g(n))表示
lim f(n)/ g(n)= 0
n→∞


例子:

是7n + 8∈ o(n 2 )?
为了使它成立,对于任何c,我们必须能够找到一个使
f(n)让我们举个例子
如果c = 100,我们检查不等式是否正确。如果c = 1/100,我们将不得不使用
多一点想象力,但我们将能够找到n0。 (尝试n0 =1000。)
这些例子,猜想似乎是正确的。
然后检查限制,
lim f(n)/ g(n)= lim(7n + 8)/(n 2 )= lim 7 / 2n = 0(医院)
n→∞n→∞n→∞

因此7n + 8∈ o(n 2 )

小ω渐近符号

定义:令f(n)和g(n)是将正整数映射到正实数的函数。我们说f(n)是ω(g(n))(或f(n)∈ω(g(n)))如果对于任何实常数c> 0,存在一个整数常数n0≥1使得对于每个整数n≥n0,f(n)> c * g(n)≥0。

f(n)的增长率高于g(n),因此大欧米茄(Ω)和小欧米茄(ω)之间的主要区别在于它们的定义。对于大欧米茄f(n)=Ω(g(n )),并且边界为0 <= cg(n)<= f(n),但是在小欧米茄的情况下,对于0 <= c * g(n)并且,f(n)&in; ω(g(n))当且仅当g(n)&in; ο((f(n))。在数学关系上
如果f(n)&in; ω(g(n))然后,

lim f(n)/ g(n)=∞
n→∞

例子:
证明4n + 6&in; ω(1);

可以通过应用下面给出的极限公式来证明小的ω运行时间。
如果lim f(n)/ g(n)=∞,则函数f(n)为ω(g(n))
n→∞
在这里,我们有函数f(n)= 4n + 6和g(n)= 1
lim(4n + 6)/(1)=∞
n→∞
并且,对于任何c,对于不等式,我们都可以得到n0 0 <= c * g(n)由此证明。