何时何地使用哪种渐近符号

When and Where to use which asymptotic notation

我经历过this Big-Oh explanation, understanding the complexity of two loops, difference between big theta and big-oh and also through this question

我明白我们不能说Big-oh被用作最坏的情况,Omega被用作Best case,theta被用作平均情况。 Big-oh 有自己的最佳、最差和平均情况。但是我们如何发现任何特定算法属于 Big-oh、Big-theta 或 Big-Omega。或者我们如何检查是否有任何算法属于所有这些。

函数f(n)是函数g(n)的Big-Oh,写成f(n) = O(g(n)),如果存在一个正常数c和一个自然数n0这样对于 n > n0,f(n) <= c * g(n)。函数 f(n) 是 g(n) 的 Big-Omega,写作 f(n) = Omega(g(n)),当且仅当 g(n) = O(f(n))。函数 f(n) 是函数 g(n) 的 Theta,写作 f(n) = Theta(g(n)),当且仅当 f(n) = O(g(n)) 且 f(n ) = 欧米茄(g(n)).

为了证明任何免费,您可以通过展示一些功能是其他一些功能的 Big-Oh 来做到这一点。在一般情况下,证明一个函数是另一个函数的 Big-Oh 是一个难题。任何形式的数学证明都可能有所帮助。与基本案例的直觉相结合的归纳证明并不少见。基本上,猜测 c 和 n0 的值,看看它们是否有效。其他选项涉及从两者中选择一个并为另一个计算出合理的值。

请注意,如果一个函数上下的最紧边界是具有不同渐近增长率的函数,则该函数可能不是任何其他函数的 Big-Theta。然而,我认为通常可以肯定的是,大多数函数将是相当简单的大 Oh,并且从这个角度来看的所有函数通常在最好的情况下至少是恒定时间 - Omega(1)。