主导术语和大O符号

时间:2017-04-29 06:46:00

标签: algorithm big-o

我不太了解主导术语的概念以及如何使用big o来确定时间复杂度。例如,类似于N(100N + 200N ^ 3)+ N ^ 3的主导项。如果有人能够解释它,那将是非常有帮助的。提前谢谢。

4 个答案:

答案 0 :(得分:3)

当N变大时,占主导地位的术语是最大的术语(即支配)。

例如:

 N(100N + 200N^3) + N^3

可以改写为

 (100 * N^2) + (200 * N^4) + N^3

当N变得非常大时,N ^ 4将变得最大(无论你将它乘以200)。

那就是O(N ^ 4)。

答案 1 :(得分:0)

pip install nose # Show all nosetests options nosetests --help cd tests nosetests 。随着f(N) = 100N^2 + 200 N^4 + N^3的增加,N的值由f(N)项支配。即使200 N^4项的系数小于低阶项的系数,情况也是如此。

考虑N^4的简单示例。在g(N) = N^2 + 4N时,我们得到的N = 1000约为g(1000) =10^6 + 4000,因为一百万加上一些(数千)仍然是大约一百万。因此,10^6术语支配低阶术语。即使低阶项的系数很大,情况也是如此 - 在N^2$中,g(N) = N^2 + 10^{100} N项支配线性项,而它只是N^2所需的值。在这种情况下,超过线性项的二次项更大。但是当N进入无穷大时,我们可以通过其主导项来近似函数。

对于大写符号,您可以使用其定义证明多项式N可以表示为f(N),其中O(N^k)是前导词中的指数。在您的示例中,我们可以说k。这种表示法丢弃了低阶项和前导项的系数,因为它们在比较不同算法的运行时间时通常是无关紧要的。

答案 2 :(得分:0)

“优势”仅表示“从长远来看增长更快的那个”。那是我最好的表达方式。

答案 3 :(得分:0)

让我们将多项式函数分解为多个部分, F(N) = 100N²+ 200N^4 + N^3 ; g,h,k 分别为 3 个多项式函数 g(N) = 200N^4 , h(N) = N^3 , k(N) = 100N² 。 h 由 g 支配,k 由 h 支配,因此使用传递关系 k 由 g 支配;所以 h 和 k 都以 g 为主。 我的意思是在数学中的统治,分数 (h(n) / g(n) ) 或 ( k(n) / g(n) ) 如果 n 趋于无穷大:为零。 所以要知道哪个函数被支配,你需要研究渐近行为和极限。

这是一个来自this website

的例子

enter image description here