【问题标题】:What should be the Big O of f(n) = n^5 + 2^log(n)?f(n) = n^5 + 2^log(n) 的大 O 应该是多少?
【发布时间】:2020-11-22 07:48:40
【问题描述】:

我遇到了一个问题,我必须为函数 f(n) = n^5 + 2^log(n) 选择正确的 Big O... 我尝试输入较大的值,发现 n^5 与 2^log(n) 相比显着增长......但后来有人告诉我,指数函数与其他函数相比增长显着......我再次感到困惑。 .. 老实说我认为 2^log(n) 不是指数函数...但是由于我的对数概念较弱,我无法证明...

我只想有人告诉我,是的,n^5 大于 2^log(n),这样我就可以证明 2^log(n) 不是指数函数...

提前致谢。 :)

【问题讨论】:

    标签: math big-o logarithm


    【解决方案1】:

    2^log(n) = (2/e)^log(n) * e^log(n) = a^log(n) * n 其中a = 2/e < 1(假设log 是自然对数)。

    随之而来的是f(n) = n^5 + 2^log(n) < n^5 + n,因此是f(n) = O(n^5)


    [ EDIT ] 在任意基数 b 的对数的一般情况下,使用 2 = b^log_b(2) 可以得出以下结论:

        2^log_b(n) = (b^log_b(2))^(log_b(n))
                   = b^(log_b(2)*log_b(n))
                   = (b^log_b(n))^log_b(2)
                   = n^log_b(2)
                   = n^(1/log_2(b))
    

    因此f(n) = n^5 + log_b(n) = O( n^5 + n^(1/log_2(b)) ) = O( n^max(5, 1/log_2(b)) )

    尤其是f(n) = O(n^5) 代表log_2(b) > 1/5 ⇔ b > 2^(1/5),它涵盖了2e10 的常见log 基础。

    【讨论】:

    • 日志是自然算法的假设既不正确也不相关。在谈论复杂性时,基数是无关紧要的,为了计算可以假设任何基数。具体来说,base 2(这是 cs 相关主题中的常用 base)立即导致 2^logn = n.
    • @SomeWittyUsername 在这种日志为指数的情况下,对数的底确实对复杂性分析很重要。例如,10^log10(n)n,但 10^log2(n) 大约是 n^3.3。其中第一个是O(n);第二个不是。在这个特定示例中,无论基数是 2、10 还是 e,我们碰巧得到相同的答案,但通常基数并非无关紧要。
    • @MarkDickinson 你是对的,当然。我应该更准确 - 我的意图只是指出 O(logn) 对于任何常数基都是相同的。
    • @SomeWittyUsername 对数的底 isa^log_b(n) 形式的指数相关(尽管 2e 恰好在此产生相同的最终答案具体例子)。至于这里假设的基础是什么,只有 OP 可以澄清这一点。在像 SO 这样的编程网站上使用math 标签,假设自然对数是自然的,因为这就是 log 在数学、javascript、c++ 等中的默认含义。
    • @SomeWittyUsername 这是一个公平的假设,OP 可能正在解决复杂性练习,但这只是一个假设。无论是问题还是标签都没有提到复杂性,渐近行为也不限于复杂性分析。
    【解决方案2】:

    O(2logn)=O(n) - 这直接来自对数的定义。

    更正式地说:

    f(n)=2logn

    log2f(n)=log2(2logn)=lognlog22=log 2n ==>f(n)=n

    ==> O(2logn)=O(n)

    ==> O(n5 + 2logn)=O(n5 + n)=O(n 5)

    【讨论】:

    • 非常感谢...只是一个确认.. 2^log(n) = n 对吗?
    • 是的,在复杂性的背景下。在复杂性范围之外,日志应该以 2 为底才能正确
    • 实际上,正如下面@MarkDickinson 正确指出的那样,对于任何基数 > 2、2^logn > n,但这对您的最终结果并不重要
    • @SomeWittyUsername for any base > 2, 2^logn > n 猜你的意思是2^logn < n
    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    相关资源
    最近更新 更多