【问题标题】:Ordering functions by Asymptotic Growth Rate按渐近增长率排序函数
【发布时间】:2016-01-25 22:02:31
【问题描述】:

按渐近增长率的非降序列出以下函数。如果两个或多个函数具有相同的渐近增长率,则将它们组合在一起。

g1(n) = n

g2(n) = n^3 +4n

g3(n) = 2n log(base 2) n

g4(n) = 2^n

g5(n) = 3 ^ (3 * log(base 3) n)

g6(n) = 10^n

我一直在网上查看几个示例,但我不知道如何做到这一点,这对我来说似乎是一个完全陌生的概念。如果有人可以帮助我,那将不胜感激。我如何计算增长率?

【问题讨论】:

    标签: algorithm math


    【解决方案1】:

    您可能会发现这里最有用的许多技术是用于处理涉及对数和指数的表达式的技巧。

    首先,您可能需要查看对数的幂规则:

    a 日志b c = 日志b ca.

    接下来,指数和对数互为倒数:

    logb bn = blogb n = n

    例如,这些规则可能会帮助您重写 g5(n)。

    这是另一个有用的规则:

    (ab)c = abc = (ac)b支持>.

    您实际上可以使用前面的两个规则来更改指数函数的基数。例如,假设您要将 2n 与 5n 进行比较。请注意

    5n = (2log2 5)n

    = (2n)log2 5.

    这是否更容易看出这两个函数中的哪一个会增长得更快?

    最后,您可能需要使用以下事实:所有多项式的增长速度都比底数大于 1 的所有指数慢。这意味着 nk 的增长速度严格低于 an 对于任何 n > 1。类似地,所有多项式的增长速度严格快于所有对数,因此 logb n k 对于所有 k > 0。

    使用上述规则,看看您是否可以尝试将这些表达式中的每一个重写为 n 的对数、n 的多项式或 n 的指数。然后,您可以将对数表达式与自身、多项式与自身、指数与自身进行排序,然后按顺序将它们写出来。

    一般来说,这里提到的技术在未来非常有用。我希望这能让你走上正轨!

    【讨论】:

      【解决方案2】:

      有一个非常简单的规则可以帮助解决这些问题。使用微积分和复杂性的基本定义很容易证明(这可能是一个很好的练习)。

      给定两个函数,f(n)g(n)

      • 如果 limn → ∞f(n) / g(n) = 0,则 f(n) = o(g( n).

      • 如果 limn → ∞f(n) / g(n) = ∞,则 f(n) = w(g( n)(这是从上一点开始的)。

      • 如果 limn → ∞f(n) / g(n) = c, 0 ,那么 f(n) = Θ(g(n).

      看看你的例子,他们可以用这些来解决每一个问题。例如,limn → ∞ g1(n) / g2(n) = 0,所以 g1(n) = o(g2(n)) em>。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多