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