【问题标题】:Complexity - determining the order of growth复杂性——决定增长的顺序
【发布时间】:2015-05-01 08:05:09
【问题描述】:

我了解大部分情况下如何计算函数的复杂度。确定数学函数的增长顺序也是如此。 [我可能不像我想的那样理解它,这就是为什么我可能会问这个。]例如:

an^3 + bn^2 + cn + d 可以用 big-o 表示法写成 O(n^3),因为对于足够大的 n,与 an^3 相比,术语 bn^2 + cn + d 的值是微不足道的(常数系数 a , b, c 和 d 也被排除在外,因为它们对价值的贡献也变得微不足道)。

我不明白的是,当主导词涉及某种划分时,这是如何工作的?例如:

a/n^3 + bn^2 或n^3/a + bn^2

对于前一个公式,让 n=100, a=1000 和 b=10,那么我们有

n^3/a = 100^3/1000 = 1000 和 bn^2 = 10*100^2 = 100,000

对于后者来说甚至更引人注目 - 在这种情况下,领先的术语不仅像上面一样缓慢增长,而且还在缩小,不是吗?:

a/n^3 = 1000/100^3 = 0.001 和 bn^2 = 100,000 同上。

在这两种情况下,第二项的贡献要大得多,那么实际上确定增长顺序的不是n^2吗?

当前导词后面跟着一个减法 (a/n^3 - bn^2) 或当第二个词也是除法时 (n^3/a + n^2/b) 或当两者都是除法但混合时,它会变得更加复杂(至少对我而言)订单(a/n^3 + n^2/b)等

这个列表似乎无穷无尽,所以我的一般问题是,如何理解和处理涉及除法(和减法)的公式以确定给定函数的增长顺序?

【问题讨论】:

    标签: algorithm big-o complexity-theory division


    【解决方案1】:

    除法只是乘以multiplicative inverse,所以n^3/a == n^3 * a^-1,您可以像处理任何其他系数一样处理它。

    关于减法a*n^3 - b*n^2 <= a*n^3,所以它也在O(n^3)中。此外,a*n^3 - b*n^2 >= a/2 * n^3 用于足够大的n 值,它也在Omega(n^3) 中。关于减法更详细的解释可以在:Algorithm complexity when faced with substraction in value

    大 O 表示法通常用于增加(不必是单调的)函数,而像 a/n 这样的减少函数并不适合它,尽管 O(1/n) 似乎仍然是完美定义的, AFAIK,它是O(1) 的子集(除非您只考虑离散函数)。但是,这对于算法的分析价值很小,因为算法的复杂度并不能真正缩小..

    【讨论】:

    • 取反是很聪明的,但是当它是a/n^3时这也可以吗?因为那样我们会得到a * (n^3)^-1
    • @Beko 不,只针对系数。我在答案的最后一段提到了a/n(显然是任何类似的功能)。
    • 澄清一下,这是否意味着a/n之类的函数在算法分析中并没有真正考虑到?
    • @AmiTavory 好的,但是如果我们有 a/n^2 + an 会怎样。所以a/n^2 = O(1) 但an = O(n)。
    • @Beko 不,a/n^2 + an 在 O(n) 中
    【解决方案2】:

    对于您发布的问题类型有一个非常简单的规则。

    假设你试图找到f(n)的增长顺序,并且你找到了一些简单的函数g(n)这样

    lim {n -> inf} f(n) / g(n) = k
    

    其中k 是一个正有限常数。那么

    f(n) = Theta(g(n))
    

    (从微积分定义中很容易看出这一点。)

    现在让我们看看这如何应用于您的示例:

    lim {n -> inf} (a/n^3 + bn^2) / n^2 = b
    

    所以它是Theta(n^2)。

    lim {n -> inf} (a n^3 - bn^2) / n^3 = a
    

    所以它是Theta(n^2)。

    (当然,假设 a 和 b 是正数。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多