改善复杂性

时间:2014-09-14 15:25:24

标签: algorithm big-o

我很困惑。如果我必须证明,

现在,在此,如果我计算限制,

通过这个,我可以说这确实属于big-o(4n)。 是 对于n的任何值都不是这样。 这是证明的正确方法吗?

3 个答案:

答案 0 :(得分:1)

常量不会影响O时间复杂度。

我的意思是O(2*n) = 2*O(n) = O(n)

如果2n+1 = O(4n) = {} 2n+1位于O(n)

因为lim(n->infinite)(2n+1)/n = 2是有限数字=> 2n+1位于O(n)

答案 1 :(得分:0)

根据定义,如果有c常量保留f(n) <= c*g(n),则f(n)属于g(n)。 确实,(2n+1)属于O(4n),因为常量1和4保持:
1*(2n+1) <= 4n <= 4*(2n+1)

(这也表明(4n)属于O(2n+1)。这是因为它们都是O(n)

答案 2 :(得分:0)

没有最好的常数。如您所见,2无效。但是,对于每个epsilon > 0,常量2 + epsilon都可以。这可以通过扩展限制的定义来证明。 f(n)/g(n)作为c达到n的限制条件变为无穷大的条件是,对于每个epsilon > 0,存在n0,以便所有人n > n0 |f(n)/g(n) - c| < epsilon,我们有f(n)/g(n) < c + epsilon,这意味着f(n) < (c + epsilon) g(n),这意味着f(n)。由此得出O(g(n))c + epsilon,其中大O常数为{{1}}。