BigO符号,理解

时间:2019-06-27 00:34:12

标签: big-o

我在其中一个视频(https://www.youtube.com/watch?v=A03oI0znAoc&t=470s)中看到,如果假设f(n)= 2n +3,则BigO为O(n)。

现在我的问题是,如果我是一名开发人员,并且给我O(n)作为f(n)的上限,那么我将如何理解,确切的值是上限。因为在2n +3中,我们删除了2(因为它是一个常数)和3(因为它也是一个常数)。因此,如果我的函数是f(n),其中n = 1,那么我不能说g(n)是上限,其中n = 1。

1不能是1的上限。我很难理解这一点。

2 个答案:

答案 0 :(得分:0)

我知道这是部分答案(可能是错误的答案)

Wikipedia

  

大O表示法根据其增长率来表征功能:具有相同增长率的不同功能可以用相同的O表示法表示

在您的示例中, f(n)= 2n + 3的增长率与f(n)= n

如果绘制函数,您将看到两个函数具有相同的线性增长;并且当n->无穷大时,两者之间的差异变小。

在Big O表示法中,当n = 1表示无意时,f(n)= 2n + 3;您需要查看趋势,而不是谨慎的价值。

答案 1 :(得分:0)

作为开发人员,您将把big-O作为决定使用哪种算法的第一个指示。如果您有一种算法,例如O(n^2),则将尝试了解是否存在另一种算法,例如O(n)。如果问题本质上是O(n^2),那么big-O表示法将不会提供进一步的帮助,您将需要使用其他标准进行决策。但是,如果问题不是天生的O(n^2),而是O(n),则应丢弃碰巧是O(n^2)的所有算法,然后找到O(n)的算法。

因此,big-O表示法将帮助您更好地分类问题,然后尝试使用复杂度与big-O相同的算法来解决。如果您有幸找到了两个或两个以上具有这种复杂性的算法,那么您将需要使用其他标准来思考它们。