我对时间复杂度有疑问。如果它的真或假,我真的不明白如何获得。 有人能告诉我如何找到结果吗?请向新手解释一下。
以下是一些例子:
n log n = O(n^2)
true - false?2n – 3 = Θ(n)
true - false?n^2 + 3 = Ω(n^3)
true - false?2n log n – 3n = O(n)
true - false?n^2 + 5n – 6 = Θ(n^2)
true - false?答案 0 :(得分:0)
这看起来像是家庭作业,所以我将解释整个图片,并举一个例子:
f and g are functions, M is a positive constant, xi and xo are determined initial values.
f(x) = O(g(x)) iff |f(x)| <= M|g(x)| for all x > xi
f(x) = Ω(g(x)) iff |f(x)| > M|g(x)| for all x > xi
f(x) = Θ(g(x)) iff xi g(x) <= f(x) <= xo g(x)
对于第一种情况,我们可以证明
Assuming n ∈ (0,∞).
Then logn<n, since n < 1+n < e^n by its Taylor series.
Thus, nlogn<n2 for all n ∈ (0,∞).
As a consequence, nlogn=O(n2).
所以这个过程如下,因为我已经知道logn&lt; n和我知道n是非负值,将两边乘以n得到nlogn&lt; N ^ 2
根据定义,如果f(x)&lt; = kg(x)其中k是常数,我可以说f(x)= O(g(x)),这就是上面发生的:nlogn&lt; = kn ^ 2,k = 1。
答案 1 :(得分:0)
首先,您应该知道不同符号的含义。为此,请看这里:asymptotic notation on wolframalpha
有各种方法来研究和确定这些是真还是假(并且你的问题确实是&#34;做我的作业请#34;一般),但一般来说你需要做的是确定什么发生&#34;任意大n
&#34;
作为一种快速而肮脏的方式(在数学上不正确,但通常足以确定简单算法的复杂性),您可以忽略所有的附加常数(例如-2
,+1
,... 。)并评估剩下的两个&#34;大&#34; n(如1e9和1e13)并检查比率。如果它保持不变那么两个复杂性渐近&#34;相同&#34;如果不是一个渐近支配另一个(=增长得更快,这意味着对于大n
你可以忽略其他)
对于正确而完整的数学方法,大多数微积分课程都会对论证进行处理,您肯定可以在线查找资源,例如:在这里:growth of functions