我必须找到以下表达式的大O符号:
2n + n(logn) 10 +(1/2) n
如果我忽略系数,我得到2n + n(log n) 10 加上一些涉及1/2的项。如果我忽略系数,我完全失去了最后一个词,但包含它们似乎并不合适。
我应该如何处理(1/2) n 术语?
答案 0 :(得分:5)
对于较大的n
,(1/2)n
接近0并且变得可以忽略不计。此外,与2n
相比,n(logn)10
最终变得可以忽略不计,因为后者增长得更快。
将n(logn)10
与2n
进行比较相当于将(logn)10
与2
进行比较(因为两者都包含因子n
)。显然,(logn)10
会超过2
足够大的n
- 实际上所需要的只是n
3
。随着n
进一步增长,这两个术语之间的差异也将增加,2n
术语的重要性将变得越来越小。
因此,我们留下的大O表达式是
O(n(logn)10)
答案 1 :(得分:5)
当n变大时,想想(1/2) n 会发生什么。这个术语变得越来越小,最终变得完全可以忽略不计。 (事实上,如果你选择n = 30,它小于1 / 1,000,000,000。)一个有用的观察结果是(1/2) n )从不大于1/2,所以你可以注意到该
2n + n(log n) 10 +(1/2) n ≤2n+ n(log n) 10 + 1 / 2
从那里,您可以看到这是O(n(log n) 10 ),因为n(log n) 10 项比2n增长得快术语
但是,通常情况下,你必须小心使用指数。对于>形式为 n 的任何形式1将比任何多项式增长得快,所以通常你会丢弃多项式并保持指数。在这里,你做的恰恰相反。
希望这有帮助!