带有sqrt和log的Big O证明

时间:2011-02-24 19:45:31

标签: big-o

我无法弄清楚如何证明

t(n) = sqrt(31n + 12n log n + 57)

O(sqrt(n) log n)

我还没有处理大字符号中的平方根,所以我遇到了很多麻烦!非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:3)

Big O表示法是关于算法特征(时钟时间,内存使用,处理时间)如何随着问题的大小而增长。

常量因素被丢弃,因为它们不会影响 值如何缩放。

次要条款也会被丢弃,因为它们最终没有效果。

所以你原来的等式

sqrt(31n + 12nlogn + 57)

立即简化为

sqrt(n log n)

平方根分布,就像其他类型的乘法和除法一样,所以这可以直接转换为:

sqrt(n) sqrt(log n)

由于日志将乘法转换为加法(这就是幻灯片规则有效的原因),因此变为:

sqrt(n) log (n/2)

同样,我们抛弃常数,因为我们对行为类感兴趣

sqrt(n) log n

而且,我们有答案。

更新

正如已经正确指出的那样,

sqrt(n) sqrt(log n)

不会成为

sqrt(n) log (n/2)

所以推导的结束是错误的。

答案 1 :(得分:0)

首先找到sqrt()内的最大度因子,即12nlogn。最大程度的因素使得所有其他因素在大O项中无关紧要,因此它变为O(sqrt(12nlogn))。常数因子也无关紧要,因此它变为O(sqrt(nlogn))。然后我想你可以使这个论点等于O(sqrt(n) * sqrt(logn))O(sqrt(n) * log(n)^(1/2)),并消除logn上的权力来获得O(sqrt(n)logn)。但我不知道最后一步的技术理由是什么,因为如果你可以将sqrt(logn)变成logn,为什么你不能将sqrt(n)变成n }?

答案 2 :(得分:0)

提示:考虑| x |的sqrt(1 + x)扩展的主要术语< 1。