找到数学函数的上界(函数分析)

时间:2016-05-29 02:05:08

标签: math big-o asymptotic-complexity

我试图通过一本书来理解Big-O符号,并且它通过使用函数来覆盖Big-O,尽管我有点困惑。书中说O(g(n))其中g(n)是f(n)的上界。所以我理解这意味着g(n)给出了较大n值时f(n)的最大增长率。

并且存在n_0,其中cg(n)的增长率(其中c是某些常数)和f(n)具有相同的增长率。

但令我感到困惑的是这些关于在数学函数中找到Big O的例子。

这本书说找到f(n)= n ^ 4 + 100n ^ 2 + 50的上界 然后他们说n ^ 4 + 100n ^ 2 + 50< = 2n ^ 4(不确定为什么2n ^ 4) 然后他们一些人如何找到n_0 = 11和c = 2,我明白为什么大O是O(n ^ 4)但我只是对其余的感到困惑。

这是令人沮丧的,因为我不明白,但我觉得这是一个我必须理解的重要话题。

如果有人好奇的话,那本书是Narasimha Karumanchi的数据结构和算法轻松

不确定此帖子是属于此处还是属于数学板。

1 个答案:

答案 0 :(得分:8)

制剂

首先,让我们松散地说明fO(g(n))的定义(注意:O(g(n))一组函数,所以要挑剔,我们说f位于O(...),而f(n)位于O(...))。

  

如果函数f(n)在 O(g(n))中是,则c·g(n)是上限   f(n),对于某些常数c ,使得f(n)总是≤c·g(n),   足够大n (即某些常数n0的n≥n0)。

因此,为了表明f(n)O(g(n))中,我们需要找到一组满足

的常数(c,n0)
f(n) < c · g(n), for all n ≥ n0,                                (+)

但此设置并非唯一。即,找到常数(c,n0)使得(+​​)成立的问题是退化。实际上,如果存在任何这样的常数对,则将存在无限量的不同的这样的对。

显示f ∈ O(n^4)

现在,让我们继续看看让你困惑的例子

  

找到函数的上渐近界限

f(n) = n^4 + 100n^2 + 50                                      (*)

一种直截了当的方法是用高阶项表达(*)中的低阶项,特别是w.r.t.边界(... < ...)。

因此,我们看到是否可以在n上找到下限,以便以下成立

100n^2 + 50 ≤ n^4, for all n ≥ ???,                             (i)

我们可以通过求解方程

轻松找到(i)中的等式
m = n^2, m > 0

m^2 - 100m - 50 = 0
(m - 50)^2 - 50^2 - 50 = 0
(m - 50)^2 = 2550
m = 50 ± sqrt(2550) = { m > 0, single root } ≈ 100.5

     => n ≈ { n > 0 } ≈ 10.025

因此,(i)适用于n ≳ 10.025,我们宁愿在n上以整齐的整数值显示此约束,因此四舍五入到11:< / p>

100n^2 + 50 ≤ n^4, for all n ≥ 11,                              (ii)

(ii)来看,显然存在以下内容

f(n) = n^4 + 100n^2 + 50 ≤ n^4 + n^4 = 2 · n^4, for all n ≥ 11, (iii)

此关系与(+)c = 2n0 = 11完全相同g(n) = n^4,因此我们展示了f ∈ O(n^4)。但请注意,常量cn0的选择是便利之一,这不是唯一的。由于我们已经证明(+)适用于常量(c,n0),我们可以证明它适用于无数种不同的常量选择(例如,它自然适用于{{1 }和c=10,...等等。)