任何人都可以解释其中哪一个具有最高的渐近复杂度以及为什么,
10000000n vs 1.000001^n vs n^2
你可以使用asymptotic analysis的标准统治规则。
统治规则告诉你,当n -> +Inf
,n = o(n^2)
。 (注意符号O(.)
和o(.)
之间的差异,后者意味着f(n) = o(g(n))
如果存在一个序列e(n)
收敛到0
作为n -> +Inf
使f(n) = e(n)g(n)
。使用f(n) = n
,g(n) = n^2
,你可以看到f(n)/g(n) = 1/n -> 0
作为n -> +Inf
。)
此外,你知道对于任何整数k
和真正的x > 1
,我们有n^k/x^n -> 0
作为n -> +Inf
。 x^n
(指数)复杂性支配n^k
(多项式)复杂性。
因此,为了增加复杂性,您需要:
n << n^2 << 1.000001^n
注意:10000000n
可以用O(n)
编写,其中包含用于计算机科学中渐近分析的松散书面约定。回想一下,算法的复杂性C(n)
是O(n)
(C(n) = O(n)
)当且仅当(iff)存在整数p >= 0
和K >= 0
时,对于所有n >= p
,|C(n)| <= K.n
的关系成立。
在计算渐近时间复杂度时,您需要忽略n
的所有系数,并只关注其指数。
指数越高,时间复杂度越高。
在这种情况下
我们忽略n
的系数,留下n^2, x^n and n
。
但是,我们忽略第二个因为它有n
的指数。由于n^2
高于n
,你的问题的答案是n^2
。