我正在复习Big-O符号的基础知识。
f(n)=Ω(g(n))表示c.g(n)是f(n)上的下界,使得f(n)始终≥c.g(n)
f(n)=o(g(n))表示c.g(n)是f(n)的上界,因此f(n)总是
小于等于c.g(N)
所有n≥n0
algorithm - 上限相交不必要-LMLPHP
上下界在上图中很清楚,但为什么f(n)和上界相交?从上面的定义看什么时候是清楚的这是有意义的还是我只是不必要地指出?
资料来源:Skiena的算法设计手册

最佳答案

根据前两个定义,不应该有交集,因为单词always
f(n)=Ω(g(n))表示c.g(n)是f(n)的下界,因此f(n)是
始终≥c.g(n)
f(n)=O(g(n))表示c.g(n)是f(n)的上界,因此f(n)
总是≤c.g(n)
这些定义并不完全正确。因为big-o表示法的思想是在n非常大时检查操作数。简单来说,这意味着你只有在你认为足够大的数字之后才开始检查复杂性。你的照片上有这样的轮廓:
上下限对n>n0有效。。。
这就是为什么在图片上有一条垂直线n0所以在这一行之前你什么都不关心,因为你只考虑n0之后的数字足够大。
要使这些定义完全正确,只需在它们的末尾加上n>n0。

关于algorithm - 上限相交不必要,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34378720/

10-12 18:48