(log n)^k = O(n)? For k greater or equal to 1.
我的教授在课堂上向我们介绍了这个陈述,但是我不确定函数是否具有O(n)的时间复杂度。即使像n^2 = O(n^2)
之类的东西,函数f(x)如何具有运行时复杂性?
至于语句如何等于O(n)而不是O((logn)^ k)?
答案 0 :(得分:5)
(log n)^ k = O(n)?
是。 big-Oh的定义是函数f
在O(g(n))中如果存在常数N和c,那么对于所有n > N
:f(n) <= c*g(n)
。在这种情况下,f(n)
为(log n)^k
,g(n)
为n
,因此,如果我们将其插入到定义中,我们会得到:“存在常量N和c,这样对于所有n > N
:(log n)^k <= c*n
“。这是真的,因此(log n)^k
在O(n)中。
函数f(x)如何具有运行时复杂度
没有。没有关于大哦符号的内容特定于运行时复杂性。 Big-Oh是一种对功能增长进行分类的符号。通常我们讨论的函数会测量某些算法的运行时间,但我们可以使用big-Oh来讨论任意函数。
答案 1 :(得分:2)
f(x) = O(g(x))
表示f(x)
增长速度较慢或与g(x)
相当。
从技术上讲,这被解释为“我们可以找到x
值,x_0
和比例因子M
,这样f(x)
的大小超过{{} 1}}小于x_0
的缩放大小。“或者在数学中:
g(x)
。
所以对于你的问题:
|f(x)| < M |g(x)| for all x > x_0
问:是否有x_0和M这样的
log(x)^k = O(x)?
。
这种log(x)^k < M x for all x>x_0
和M
的存在可以使用各种限制结果来完成,并且使用L'Hopitals规则相对简单。但是在某处可能是一个很好的非微积分证明... < / p>