下图中渐近复杂度的跟随函数的递增顺序为:
(A)f1(n); F4(N); F2(N); F3(n)的
(B)f1(n); F2(N); F3(N); F4(N);
(C)f2(n); F1(n)的; F4(N); F3(n)的
(D)f1(n); F2(N); F4(N); F3(n)的
a)这个简单问题的时间复杂度顺序为--->(n ^ 0.99)*(logn)<那......怎么样? log可能是一个增长缓慢的函数,但它仍然比常量
增长得更快b)考虑函数f1,假设它是f1(n)=(n ^ 1.0001)(logn)那么答案是什么?
每当存在涉及对数和多项式表达式相乘的表达式时,对数函数是否超过多项式表达式?
c)如何检查这种情况假设
1)(n ^ 2)logn vs(n ^ 1.5)具有更高的时间复杂度? 2)(n ^ 1.5)logn vs(n ^ 2)具有更高的时间复杂度?
答案 0 :(得分:2)
如果我们考虑C_1和C_2使得C_1 <1。 C_2,那么我们可以肯定地说出以下内容
(n^C_2)*log(n) grows faster than (n^C_1)
这是因为 (n ^ C_1)增长慢于(n ^ C_2)(显然)
also, for values of n larger than 2 (for log in base 2), log(n) grows faster than
1.
in fact, log(n) is asymptotically greater than any constant C,
because log(n) -> inf as n -> inf
if both (n^C_2) is asymptotically than (n^C_1) AND log(n) is asymptotically greater
than 1, then we can certainly say that
(n^2)log(n) has greater complexity than (n^1.5)
我们认为log(n)是一个“缓慢增长”的函数,但它的增长速度仍然快于1,这是关键所在。
coder101在评论中提出了一个有趣的问题,基本上是
is n^e = Ω((n^c)*log_d(n))?
where e = c + ϵ for arbitrarily small ϵ
我们做一些代数。
n^e = (n^c)*(n^ϵ)
so the question boils down to
is n^ϵ = Ω(log_d(n))
or is it the other way around, namely:
is log_d(n) = Ω(n^ϵ)
为了做到这一点,让我们找到满足n ^ε的ε的值。 log_d(n)的
n^ϵ > log_d(n)
ϵ*ln(n) > ln(log_d(n))
ϵ > ln(log_d(n)) / ln(n)
因为我们知道
的事实ln(n) * c > ln(ln(n)) (1)
as n -> infinity
We can say that, for an arbitrarily small ϵ, there exists an n large enough to
satisfy ϵ > ln(log_d(n)) / ln(n)
because, by (1), ln(log_d(n)) / ln(n) ---> 0 as n -> infinity.
有了这些知识,我们可以说
is n^ϵ = Ω(log_d(n))
for arbitrarily small ϵ
which means that
n^(c + ϵ) = Ω((n^c)*log_d(n))
for arbitrarily small ϵ.
用layperson的术语
n^1.1 > n * ln(n)
for some n
also
n ^ 1.001 > n * ln(n)
for some much, much bigger n
and even
n ^ 1.0000000000000001 > n * ln(n)
for some very very big n.
答案 1 :(得分:1)
用f1 =(n ^ 1.0001)(logn)代替f1 =(n ^ 0.9999)(logn)将得到答案(C):n,(n ^ 1.0001)(logn),n ^ 2,1.00001 ^ n
推理如下:
。 (n ^ 1.0001)(logn)具有比n更高的复杂度,显而易见。
。 n ^ 2高于(n ^ 1.0001)(logn),因为多项式部分渐近地支配对数部分,因此高次多项式n ^ 2获胜
。 1.00001 ^ n支配n ^ 2,因为1.00001 ^ n具有指数增长,而n ^ 2具有多项式增长。指数增长渐近获胜。
BTW,1.00001 ^ n看起来有点类似于称为“亚指数”增长的家族,通常表示为(1 +Ɛ)^ n。尽管如此,无论小的是什么,亚指数增长仍然支配任何多项式增长。答案 2 :(得分:0)
此问题的复杂性介于f1(n)
和f2(n)
之间。
对于f(n) = n ^ c where 0 < c < 1
,曲线增长最终将变得如此缓慢,以至于与线性增长曲线相比,它变得微不足道。
对于f(n) = logc(n), where c > 1
,曲线增长最终将变得如此缓慢,以至于与线性增长曲线相比,它变得微不足道。
与线性增长曲线相比,这两个函数的乘积最终也将变得微不足道。
因此,Theta(n ^ c * logc(n))
的渐近性比Theta(n)
复杂。