我很困惑。如果我必须证明,
现在,在此,如果我计算限制,
通过这个,我可以说这确实属于big-o(4n)。 是 对于n的任何值都不是这样。 这是证明的正确方法吗?
答案 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}}。