在我的算法类中,我们正在讨论大O符号,我很难证明这个示例问题:
证明f(n) = 3n lg n + 10n + lg n + 20 = O(n lg n)
详情将不胜感激。
答案 0 :(得分:1)
你需要证明的是,对于某些M和X0:
对于大于X0的所有n,M n ln n> = 3n lg n + 10n + lg n + 20
4非常容易
我确定你可以计算出上述不等式所持有的一些x0,然后很容易证明它对于大于X0的所有n都是正确的
在4中替换后,有助于简化上述内容 (n-1)lg n> = 10n + 20
一旦n足够大,应该清楚lg n> 1,因此任何超过n的增加都会使右边增加1而左边增加1以上。
答案 1 :(得分:0)
Big O
符号是一种渐近符号,它完全是关于案例的近似(最差,最佳和中间)。
在您的示例中,nlgn
比n
和lgn
增长得更快,而且常量值不相关,可以在这样的近似值中忽略。
因此,复杂性为O(nlgn)
。